前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >懂Excel就能轻松入门Python数据分析包pandas(十二):多列堆叠

懂Excel就能轻松入门Python数据分析包pandas(十二):多列堆叠

作者头像
咋咋
发布2021-09-01 14:35:20
7140
发布2021-09-01 14:35:20
举报
文章被收录于专栏:数据大宇宙

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

前言

Excel 是奇葩不规范数据的重灾区,这主要是因为他有高度的灵活性,今天来看看一个多列堆叠问题。

案例1

公司一次线下促销活动,让运营部的小伙伴用 Excel 简单记录了商品数量,但是他们却把3天的记录分别记录在不同的列上:

你心中期望的数据是这样子的:

现在你要做各种统计数据,3天的数据手工完成当然没问题,但是如果是3个月的数据呢?

现在来看看,在 pandas 中怎么简单转换成规范的2列数据:

  • - 第一句主要是为了最后结果的标题与原数据标题一致而已
  • - 关键是第二句,这里直接使用 numpy 的 reshape 方法,即可完成需求。那么里面的 -1 与 2是啥意思?
  • - .reshape(-1,2) ,其中的2就是2列,而 -1 是让 numpy 你根据数据来计算最终的行数
  • - 第三句,只是把结果的数组变为一个 DataFrame
  • - 至于最后的 dropna ,是把那些空行去掉

案例2:竖向堆叠

你可能已经注意到,上面的结果是"横向的"。也就是一行行扫过,转换成2列。

但你可能希望转换过程是竖向完成,这时我们可以这样子做:

  • - 这次还是先横向转换,而第二句代码则是处理的关键
  • - [arr[i::3] for i in range(3)],我们需要从横向的结果每3行取出作为一个数组,进行3次,即可得到3个数组
  • - np.vstack() ,通过 numpy 的 vstack 方法 把3个数组进行竖向堆叠。

直接看示意图吧:

你怎么这次没有给出 Excel 的解决方式啊?

因为如果我用公式解决,又不能自动化,不够灵活。

如果我用 vba ,又要自己写循环,太繁琐了。

用 pandas 不就是为了既可自动化处理,又可以少写点代码吗

总结

  • - numpy 的 reshape 方法,可以快速把数组转换成指定行数或列数
  • - 用 -1 可以让 numpy 自动计算行或列的数量

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据大宇宙 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档