懂Excel就能轻松入门Python数据分析包pandas(十五):拆分数据

2021-09-01 14:38:34 浏览数 (1)

> 经常听别人说 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 ,一个文件输出多个工作表

0 人点赞