前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pandas新版本增强功能,数据表多列频率统计

pandas新版本增强功能,数据表多列频率统计

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

更多 Python 数据处理的干货,敬请关注!!!!

前言

pandas 在1.0版本发布后,更新频率非常高,今天我们看看关于频率统计的一个新方法。


列频率统计

pandas 以前的版本(1.1以前)中,就已经存在单列的频率统计。

我们以泰坦尼克号罹难乘客数据为例子:

image-20200806092628285

希望快速查看各个性别的记录数:

image-20200806092732878

上面显示的是绝对数值,可以显示占比吗?

image-20200806092901143

  • 通过参数 normalize 可以转换成占比

但是,以上都是针对单列的统计,很多时候我们希望对多列组合的频率统计。


数据表的多列频率统计

现在,pandas 1.1 版本中已为 DataFrame 追加了同名方法 value_counts,下面来看看怎么使用。

查看性别与是否生还的统计数:

image-20200806093401214

  • 第一参数为 subset ,传入需要统计的列名的 list 即可

同样地,通过参数可以微调输出结果:

image-20200806093527710

  • 可以看出来男性生还率非常低

可能对于一些初学者来说会疑惑,难道旧版本得到这个结果很麻烦吗?

其实以前的版本做到一样的效果也是非常容易:

image-20200806094104421

没有按频率倒序输出?

简单在后面"接上"排序操作,结果就一样了:

image-20200806094230946

其实还有另一种解决思路,有兴趣看源码吧

统计比例也没有多大的事情:

image-20200806094306039

那肯定用新版本的方法呀,新方法一句就做了你这么多句的事情!

但是!!!

下面,我们就来看看"自己做主"的优势


分段统计

之前在讲解单列的频率统计(Series.value_counts)时,其实遗漏了一个挺有用的参数,对于数值型的列才能使用。

希望查看年龄段的频率(分3段吧):

image-20200806095018867

  • bins 参数指定分3段

通常我们希望按分段排序:

image-20200806095136997

  • 参数 sort 控制是否按频率倒序,设置为 False,则按索引排序

你是不是觉得新版本的 DataFrame.value_counts 也有这个参数呢?

很遗憾,并没有这个参数,应该考虑到组合列的值是不能分段的。

不过对于自定义函数,当然想干啥就干啥:

image-20200806100144613

  • 由于本身 DataFrame.groupby 就可以支持混合类型的 key。因此在 key 设置时,可以是列名(一个字符串),也可以是列值,也可以是他们的混合

不仅如此,现在我们还可以利用 pd.cut 方法自定义分段标签等细致的控制。这里不多介绍。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 列频率统计
  • 数据表的多列频率统计
  • 分段统计
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档