![1e5fd9278407982128bd11701c22b48e.png](https://i-blog.csdnimg.cn/blog_migrate/242a8a0ec97ed43128b7f2aeb7fe2a4b.jpeg)
此系列文章收录在公众号中:数据大宇宙 > 数据处理 >E-pd
转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的)
经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死。后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器—— pandas
前言
如果你需要经常处理走势数据,那么本系列接下来2篇文章的知识点将非常实用。
这一节先讲解最简单的环比实现。
下一节,将利用此技巧,解决诸如"某城市一年最大连续没下雨天数"的问题。敬请关注!
![0bbc7d6b41c9681150eb50d558ea4efc.png](https://i-blog.csdnimg.cn/blog_migrate/4152eb6bf07c3576e9ff876eb2f6b4e5.jpeg)
Excel 中的实现方式直观简单
考虑如下的一份销量表:
![88ce887f5694d9752b43900358498979.png](https://i-blog.csdnimg.cn/blog_migrate/721a4f515b046b17f29509529fd82410.jpeg)
- 现在需要求出环比差异(本月-上月)。
由于 Excel 是高度自由的表格数据,我们可以如下实现:
![b81a9b64ce1789f79091eefacfa49ca5.png](https://i-blog.csdnimg.cn/blog_migrate/ea0cd3c559da47735a0b0ad28519b9a4.jpeg)
- 从 B列 复制下移粘贴到 C列
- 由于最后一行下移后超出了总行数,直接去掉
现在可以在 D列 写上简单的公式得到结果:
![25604928997010d4873dd439c629c0f9.png](https://i-blog.csdnimg.cn/blog_migrate/6fa96abf2e59a5e77d4aefd1c17175cc.jpeg)
- 由于 C列 第一个值是空的,我填了一个 na 错误
稍微懂一点 Excel 的小伙伴都会说:"根本不需要 C列,直接用公式用B列上下相减就行了"
的确如此,这里特意用此方式,因为这过程在 pandas 中有一样的操作
![bd5e6a8b4cf96023c724065917843f03.png](https://i-blog.csdnimg.cn/blog_migrate/ed1036c69c6a3e10f3490930bfce649d.jpeg)
pandas 中的数据位移
直接看看,pandas 中把销量列位移是怎么实现的:
![c63098bf39d644ad03c272209719e241.png](https://i-blog.csdnimg.cn/blog_migrate/39dc9f0c6a4d549ea63f974ecd41e53e.jpeg)
- 行2:.shift() 方法实现下位移。
- 这步相当于 Excel 操作中的辅助列 C列
- 注意,shift 方法只是返回位移后的结果,并不影响 df 中的数据
此时同样简单即可获得结果:
![2c3b13e7b3d605b05f9ac38e5914886c.png](https://i-blog.csdnimg.cn/blog_migrate/ec0963f3e33257686075d87bbea7ce07.jpeg)
- 为了让初学者看懂,我特意分成多行保存中间结果
- 行2:用变量 d_res 保存下移的销量
- 行3:用下移销量 减去 原销量。相当于 Excel 操作的 D列公式
- 行4:把计算结果写入原数据
实际上在 pandas 还有更便捷的实现,类似于 Excel 操作中直接写公式上下引用。
不过,实际工作中的数据没有这么简单, 比如说:
- 数据中有些月份数据是缺失的,怎么办?
- 数据中的是日期类型,我希望按年做环比
更多详细高级应用技巧,关注我的 pandas 专栏!