工作中常用python处理方法——当excel处理不了大数据量时
1、python读取文件:
(1)读取txt:同读取csv
pd.read_csv('路径')
(2)读取excel
pd.read_excel('路径')
读取excel文件会提示先安装包,按照提示安装完成后,直接读取。
读取某一个sheet:pd.read_excel(‘路径’, sheet_name=‘sheet名’)
(3)读取csv
pd.read_csv('路径')
提示:如果读取文件是乱码,可能是编码问题,可以添加encoding=‘gb18030’
pd.read_csv('路径', encoding = 'gb18030')
2、导出文件
(1)txt格式
data.to_csv('路径\文件名.txt‘, encoding='utf_8_sig', index=False)
(也是用to_csv,只不过文件名后缀为.txt)
(2)excel格式
data.to_excel('路径\文件名.xlsx‘, encoding='utf_8_sig', index=False)
(3)csv格式
data.to_csv('路径\文件名.csv‘, encoding='utf_8_sig', index=False)
总结:
1)txt和csv格式读取和保存都是pd.read_csv()和pd.to_csv(),只不过读取和保存时文件名后缀的区别;
2)excel读取和保存分别使用read_excel、to_excel。
3)读取文件如果出现乱码,添加encoding=‘gb18030’;
如果是写入文件,防止出现乱码,添加encoding=‘utf_8_sig’
4)index=False的作用是设置不显示第一列序号列(一般没有用,直接删除)
3、文件拼接
(1)整合文件(应用场景:日报明细合并)
思路:使用for循环持续读取并写入文件中
import pandas as pd
import os
# 要拼接的文件夹及其完整路径,注意不要包含中文
Folder_Path = '待读取文件路径'
# 拼接后要保存的文件路径
SaveFile_Path = '保存路径'
# 合并后要保存的文件名
SaveFile_Name = '合并后文件名'
# 修改当前工作目录
os.chdir(Folder_Path)
# 将文件夹下所有的文件名存入一个列表
file_list = os.listdir()
# 读取第一个csv文件,且包含表头
df = pd.read_excel(Folder_Path + '\\' + file_list[0],sheet_name='sheet名')
# 将读取的文件写入到拟合并的文件中,并保留表头
df.to_csv(SaveFile_Path+'\\' + SaveFile_Name, encoding='utf_8_sig',index=False)
# 循环遍历列表中文件,并持续写入合并文件中
for i in range(i,len(file_list)):
df = pd.read_excel(Folder_Path + '\\' + file_list[i], sheet_name = 'sheet名')
df.to_csv(SaveFile_Path+'\\' + SaveFile_Name, encoding="utf_8_sig", index=False, header=False, mode='a+')
提示:
- 读取文件是有表头的,那么在写入的时候设置header=False
- 由于to_csv默认mode=w,w模式会清空原文件再重新写入新的数据,通过设置mode=a,可以实现持续追加数据。
参考:https://blog.csdn.net/DL_min/article/details/110683382
4、pandas用merge实现excel中的vlookup实现
#左连接
df1_merge_df2 = pd.merge(df1, df2, how='left')
#右连接
df1_merge_df2 = pd.merge(df1, df2, how='right')
#交集
df1_merge_df2 = pd.merge(df1, df2, how='inner')
参考:https://blog.csdn.net/qq_35189715/article/details/102878190?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.control
5、数据透视表实现
# 透视数据
df_p = df.pivot_table(index='客户名称', # 透视的行,分组依据
values='销量', # 值
aggfunc='sum' # 聚合函数
)
# 对透视表进行降序排列
df_p = df_p.sort_values(by='销量', # 排序依据
ascending=False # 是否升序排列
)
参考:https://www.cnblogs.com/shanger/p/13245669.html
6、筛选功能:
# 选择新增办理的用户集
df = df[df['是否新增办理']==0]
# 多条件筛选
df = df[(df['出账费'] == 0) & (df['饱和度'] <= 0.7) & (df['价值提升']>-5)]
7、删除行/选特定行列
# 选特定列
df = df[['xx','xx']]
# 删除列
df = df.drop('列名', axis=1, inplase=True) #改变原值
df = df.drop('列名', axis=1) #不改变原址
参考:https://blog.csdn.net/weixin_39611765/article/details/113494796
8、计算字段:求和、求平均等
# 求均值
df_avg = df['列名'].mean()
# 求和
df_sum = df['列名'].sum()
9、tableau图形化展示(能处理PB级数据量)
大数据思路:python预处理数据,导出csv,传到tableau图形化展示
入门推荐:B站未明学院《Tableau零基础教程》,网址https://www.bilibili.com/video/BV1E4411B7ef?from=search&seid=6498237034144950886