pandas实现多个excel合并统计
简述
案例说明
pandas环境
完整示例
第一步 打开excel文件
第二步 合并sheet
第三步 统计各类型商品销售额,生成excel文件
第四步 合并两列单元格
总结
简述
Pandas是python一款用于数据分析处理的优秀工具,掌握简单的使用方法,可以减少我们很多的工作时间,本篇主要介绍pandas对excel的读写,以及简单的合并统计,下一章会为大家介绍Pandas的简单绘图。
案例说明
需求:
将两个sheet文件合并为一个,生成新excel文件
统计两天各类型商品的销售额,生成新excel文件
将相同名称但不同价格的商品汇总(合并单元格),生成新excel文件
数据文件:
pandas环境
这里默认你已经安装好了pandas环境,也就是import pandas as pd 没有报错
如果你没有pandas环境,网上有很多优秀教程,其实很简单,只需要python环境下的pip install pandas就行了
完整示例
第一步 打开excel文件
第一步是最简单的一步,但也是用的最多的一步,大家主要记住几个常用的参数。
import pandas as pd import matplotlib.pyplot as plt data = pd.read_excel('E:/data/myfile/商品销售信息表.xlsx',encoding='windows-1252', sheetname=None, header=1, skip_footer=1 )
参数1:文件路径
参数2: sheetname,默认为0,表示sheet的下标索引,设置为None表示打开所有 Sheet,若要打开指定的sheet,
可传入下标数组, 如sheetname=[0,1,6,8]
参数3:header,标题所在的行数,若不设置,默认第一行为标题(header=0),本例中标题在第二行,所以header=1
参数4:skip_footer,底部跳过多少行,本例中底部有一行多余数据,故skip_footer=1
data返回的是一个dataframe集合,类似Dictionary
可以这样输出:data['商品销售信息表0714’] 或 data['商品销售信息表0715’]
第二步 合并sheet
合并sheet要用到concat函数,根据表头进行合并,代码如下:
import pandas as pd import matplotlib.pyplot as plt data = pd.read_excel('E:/data/myfile/商品销售信息表.xlsx',encoding='windows-1252', sheetname=None, header=1, skip_footer=1 ) df_all = pd.concat([data['商品销售信息表0714'],data['商品销售信息表0715']],axis=0)
concat 的两个参数:
第一个参数 是要合并的dataframe对象数组,也就是sheet集合
第二个参数 可以省略,代表合并的方向,默认是0,表示纵向合并;
合并的对象
第三步 统计各类型商品销售额,生成excel文件
其实从统计学的角度来说,这一步之前应该是数据清洗,处理掉空值和异常值,这里暂时不做说明。
Pandas对数据的统计处理,主要使用 groupby 函数,熟悉sql的朋友应该不会陌生,也就是分组统计。
import pandas as pd import matplotlib.pyplot as plt data = pd.read_excel('E:/data/myfile/商品销售信息表.xlsx',encoding='windows-1252', sheetname=None, header=1, skip_footer=1 ) df_all = pd.concat([data['商品销售信息表0714'],data['商品销售信息表0715']],axis=0) df_type = df_all.groupby(['商品名','价格']).sum() df_result = df_type.reset_index()
groupby 会把所有的数字列全部汇总,如需过滤,可使用 df_result [{'商品名’,’价格’,'数量’,'总价’}] 进行过滤
按照 商品-价格 分类汇总,这里调用 reset_index() 方法,让结果看起来更直接一些。
生成excel:
df_result.to_excel('E:/dat/myfile/分类统计各类型商品销售额.xlsx')
第四步 合并两列单元格
合并两列单元格的思路,是生成一列新的单元格
import pandas as pd import matplotlib.pyplot as plt data = pd.read_excel('E:/data/myfile/商品销售信息表.xlsx',encoding='windows-1252', sheetname=None, header=1, skip_footer=1 ) df_all = pd.concat([data['商品销售信息表0714'],data['商品销售信息表0715']],axis=0) df_all['商品-价格'] = df_all['商品名'] + '-' + df_all['价格'].map(str)
输出df_all:
选择需要保存的列:
df_result = df_type[{'商品-价格','数量','总价'}] df_result.to_excel('E:/data/myfile/合并_商品销售信息表.xlsx')
总结
示例相对比较简单,在实际运用中可能遇到的问题会比较复杂,希望大家可以一起交流学习,这是一个知识大爆炸的年代,大到终身学习也未必学得完,只有不断的交流合作,才能保持自己的进步。