读取数据
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'