您的位置:首页 > 编程语言 > Python开发

利用Python处理Excel数据(个人平时用的时候总结的,以后发现新的方法会继续添加)

2020-02-05 01:08 357 查看

读取数据

import pandas as pd
import numpy as np
from pandas import Series, DataFrame

利用pandas模块,读取数据

df = pd.read_excel('x.xlsx')

查询该表所有sheet名

df = pd.ExcelFile(namexls)
#sheet表名,列表
sheet_names= df.sheet_names
print(sheet_names)

显示数据的行与列数

df.shape

(2, 7)
有2行,7列数据

查看数据格式dtpyes

df.dtypes

显示列名

df.columns

df.columns 返回Index,可以通过 tolist(), 或者 list(array) 转换为list列名

显示数据唯一值(unique函数)

df['经纪人级别'].unique()

不读取哪里数据,可用skiprows=[i],跳过文件的第i行不读取

#没有读取经纪人编号为20124403的行
df = pd.read_excel('x.xlsx',skiprows=[2] )
df.head()

删除空值 (dropna函数)

df.dropna(how='any')

更改数据格式

df['大区'].astype('float64')

更改列名称

df.rename(columns={'IM渠道': '渠道'})

对数据进行排序

df.sort_values(by=['佣金'])

#总佣金逆序排序

df.sort_values(by=['佣金'],ascending=False)

#设置日期为索引

df=df.set_index('日期')

df.loc[[index],[colunm]] 通过标签选择数据
筛选主卡持卡人代码为num的数据并把相应的证件号码提取出来

zhengjian_num = df.loc[df['主卡持卡人代码'] == num,['证件号码']]

#级别为M4,发送消息数大于110,多个条件

df.loc[(df['经纪人当天发送消息数'] > 110) & (df['经纪人级别'] == 'M4'),
[证件号码','经纪人系统号']]

#将frame格式数据转换成array再转换成list格式

yonghu_name_numb = np.array(yonghu_name)  # np.ndarray()
yonghu_name_result = yonghu_name_numb.tolist()  # list

將list转换成frame

from pandas.core.frame import DataFrame
dict_1 = {
"id":id_list,
"姓名":name_list,
'序列号':serial_num_list
}
frame_1 = DataFrame(dict_1)
print(frame_1)
frame_1.to_excel('./test.xlsx')

#删除excel某行

filename = './test.xls'
df = pd.read_excel(filename)

## 避免科学计数法造成的E+000
df['主持卡人代码'] = df['主持卡人代码'].astype('str')

df = df.drop(1)#删除第1行
df = df.drop(1, axis=0)#删除第1行,axis=0为行,axis=1为列
print(type(df))
df.to_excel('./test.xls',index=False)

pandas导入 excel表,出现openpyxl.utils.exceptions.IllegalCharacterError,
解决方法:

import xlsxwriter
df.to_excel('test.xlsx', engine='xlsxwriter')#加一个 engine='xlsxwriter'
  • 点赞
  • 收藏
  • 分享
  • 文章举报
仰望星空o.o 发布了25 篇原创文章 · 获赞 2 · 访问量 461 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: