> 经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死。后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器—— pandas
前言
这是本系列第16篇的文章,之前有小伙伴私信我说,这系列例子太简单了,能给点实际点的例子吗。好吧,这篇来看看如何用 pandas 拆分数据到各个 Excel 文件。
> 这是入门系列,并且是按 Excel 功能来开展,复杂一点的需求,Excel 自带功能做不到呀
案例1
你的上级一言不合向你扔了一个业绩表:
- - 要求每个部门一个 Excel 文件,发送给各自部门
这样子的需求,就别想啥 Excel 自带功能了,用个 Vba 实现还差不多,只不过你要学习啥数组、字典,这些高大上概念。
看看你怎么用 pandas 漂亮回应你的上级:
- - df.groupby('部门') ,"每个部门 干啥事情",不就是"按部门分组"嘛,没错,就是这么简单的表示
- - .apply ,每个部门干事情,里面的参数就是做的事情
- - x.to_excel(f'res-部门/{x.name}.xlsx',index=False) ,要做啥呢,输出到 Excel 文件啊,就是 to_excel 方法
> 不会 groupby ?看专栏第9节内容
案例2
当你以为完成工作的时候,这时候上级又找到你,他希望每个部门的 Excel 文件,可以把男女数据分开2个工作表。
你:what the ………………,so easy
代码如下:
- - 比之前复杂多了,其实多了2个部分
- - 不能直接使用 to_excel 方法,因为这方法每次都会生成一个新的文件,由此要先定义 pd.ExcelWriter
- - 当按性别分组时,调用 to_excel 要传入 pd.ExcelWriter
- - exl.save(), 记得最后要保存文件
结果如下:
案例3
当你以为可以下班的时候,麻烦又一次找上你,现在各部门负责人不想按性别分开看,而是想看高于部门平均水平和低于平均水平的人。
有了上次经验,简单添加判断 销售额 的语句就可以了:
- - is_over = x_df['销售额'] >= x_df['销售额'].mean() ,得到是否高于平均的值列,当然也是用这列值进行分组
总结
- DataFrame.to_excel ,一次输出 Excel 文件
- pd.ExcelWriter DataFrame.to_excel ,一个文件输出多个工作表