求助: Python pandas 分组统计问题

2017-10-28 13:40:56 +08:00
 yearliny
有一个数据为:

index|years|types
-|-|-
0|2010|auto
1|2010|auto
2|2011|manual
3|2006|manual
4|2015|auto
5|2015|auto

我希望能统计每年出现 auto/manual 的类型次数,最好还能把以年作为索引进行排列,达成下面的效果:
auto. manual
2006. 0. 1
2010. 2. 0
2011. 0. 1
2015. 2. 0

我应该怎么才能统计出那样的效果?
////备注:不太懂我的 markdown 表格为什么不显示
3359 次点击
所在节点    Python
8 条回复
yearliny
2017-10-28 13:55:27 +08:00
格式被 V2EX 转的不是很清楚,编辑次数太多了也无法继续编辑了。希望大家能耐心看完,给我一点帮助。Google 了很多,还是不知道怎么做,先谢谢各位了。
lt0136
2017-10-28 13:56:24 +08:00
df.groupby([df['years'], df['types']]).count().unstack() (未测试:-D )
思路是先 groupby 统计次数,然后 unstack 列变行
yearliny
2017-10-28 14:28:03 +08:00
@lt0136 太谢谢了~~~
zhusimaji
2017-10-28 14:28:14 +08:00
zhusimaji
2017-10-28 14:29:07 +08:00
偷懒了,给 dataframe 加上了一列然后 groupby 统计了一下
yearliny
2017-10-28 14:29:44 +08:00
@lt0136 再次感谢,刚刚一不小心还没打完字就发过去了,把你回答中的 count()改成 size()就能出来我预期的效果了,还是需要多多学习研究一下,谢谢你的帮助。

df.groupby([df['years'], df['types']]).count().unstack()
yearliny
2017-10-28 14:34:00 +08:00
@zhusimaji 很感谢你的帮助,我研究一下你的方法~😊
fffflyfish
2017-10-28 16:24:06 +08:00
pd.pivot_table(index = "year" , column = "types" , aggfunc=sum)
试试透视表,效果应该就是你说的这样

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/401480

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX