asp.net mvc excel合并单元格_懂Excel就能轻松入门Python数据分析包pandas(十三):合并单元格...

d4510e8c93843f23978e499020ac35c3.png

转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的)

经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死。后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器—— pandas

前言

做数据分析时,当你拿到一份 Excel 数据之后,我相信你还没有看数据,心就已经凉了一半。这是因为大概率数据格式"好看不好算",今天来看看怎么解决报表格式常见的合并单元格问题。


案例1

今天你接到一个分析需求,需要统计2年内个城市月度平均销量。

你心里期待公司系统导出的数据是这样子:

7a83c323db8bf2caaa7c49800aa80ff5.png

实际导出的是这样子:

d2287d51b476174ff76ec13f91f3118d.png
  • city 列都是合并单元格

你的脸色开始凝重了,因为发现正常导入后的 DataFrame 是这个鬼样子:

fcc9b4c6c20c93071c5ff3791ab2f087.png
  • Excel 中的合并单元格,只有第一个格有值,其余的都是空值

其实很容易解决,pandas 中有填充空值的方法:

57940c2a91920f90bc4712ca3a433caa.png
  • .ffill() ,f 是 forward 的意思。ffill 意思是:"拿前面的值填充后面的空值"

现在你终于放下心头大石,轻松解决城市月度均销量数据:

e8ab834f3527863c37c07511d7ffecdf.png
  • 不多说了,专栏都有说的内容

pd.Grouper 可以使用各种频率,具体内容请看专栏第19节内容


4f4b3c7a5e43d526b789bc61ae5a7ca4.png

案例2

有时候你会遇到多列的合并单元格:

77793d3be39faf99149d9557e8f7e5f3.png
  • city 和 sales 列都有合并单元格

pandas 中大部分操作都能在多列间进行:

e872425dc66a1e1a069e9d267d76a0bd.png

0a27a625d97158284531808c599e85ba.png

案例3

许多初学者对 pandas 有一种错觉,觉得遇到不同的数据就要重复写代码,其实我们完全可以写出许多便捷的方法。

比如,我们可以遍历一个 DataFrame 的列以及类型,发现是文本则自动调用 ffill 方法,这样不管数据有多少合并单元格列,都可以全自动填充:

2912879640c9d8acc33003959cddad4e.png
  • 定义方法 auto_fill_merge_cell ,参数只需要传入数据 DataFrame
  • 关键调用 pd.api.types.is_string_dtype ,判断列是否文本类型

现在只需要简单调用此方法即可,甚至不需要指定哪些列:

a7bc048dfbe3add94523e99d29a01129.png

代码的灵活性在于你能够按照自己的想法,随意组装功能。别再以为教程所有的代码都需要重复编写


总结

  • 遇到 Excel 的合并单元格数据时,可以使用 DataFrame 或 Series 的方法 ffill,向前填充空值

需要源码的小伙伴请转发本文并私信我"python"

如果希望从零开始学习 pandas ,那么可以看看我的 pandas 专栏。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值