pandas实现多个excel合并统计

简述

Pandas是python一款用于数据分析处理的优秀工具,掌握简单的使用方法,可以减少我们很多的工作时间,本篇主要介绍pandas对excel的读写,以及简单的合并统计,下一章会为大家介绍Pandas的简单绘图。

案例说明

需求:

  1. 将两个sheet文件合并为一个,生成新excel文件
  2. 统计两天各类型商品的销售额,生成新excel文件
  3. 将相同名称但不同价格的商品汇总(合并单元格),生成新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')

在这里插入图片描述
在这里插入图片描述

总结

示例相对比较简单,在实际运用中可能遇到的问题会比较复杂,希望大家可以一起交流学习,这是一个知识大爆炸的年代,大到终身学习也未必学得完,只有不断的交流合作,才能保持自己的进步。

  • 8
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值