pandas新版本如何实现数据表多列频率统计

小编给大家分享一下pandas新版本如何实现数据表多列频率统计,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

公司主营业务:成都网站制作、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出承留免费做网站回馈大家。


列频率统计

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

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

pandas新版本如何实现数据表多列频率统计  
image-20200806092628285

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

pandas新版本如何实现数据表多列频率统计  
image-20200806092732878

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

pandas新版本如何实现数据表多列频率统计  
image-20200806092901143
  • 通过参数 normalize 可以转换成占比

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


 

数据表的多列频率统计

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

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

pandas新版本如何实现数据表多列频率统计  
image-20200806093401214
  • 第一参数为 subset ,传入需要统计的列名的 list 即可

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

pandas新版本如何实现数据表多列频率统计  
image-20200806093527710
  • 可以看出来男性生还率非常低

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

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

pandas新版本如何实现数据表多列频率统计  
image-20200806094104421

没有按频率倒序输出?

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

pandas新版本如何实现数据表多列频率统计  
image-20200806094230946

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

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

pandas新版本如何实现数据表多列频率统计  
image-20200806094306039

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

但是!!!

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


 

分段统计

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

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

pandas新版本如何实现数据表多列频率统计  
image-20200806095018867
  • bins 参数指定分3段

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

pandas新版本如何实现数据表多列频率统计  
image-20200806095136997
  • 参数 sort 控制是否按频率倒序,设置为 False,则按索引排序

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

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

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

pandas新版本如何实现数据表多列频率统计  
image-20200806100144613
  • 由于本身 DataFrame.groupby 就可以支持混合类型的 key。因此在 key 设置时,可以是列名(一个字符串),也可以是列值,也可以是他们的混合

看完了这篇文章,相信你对“pandas新版本如何实现数据表多列频率统计”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


本文名称:pandas新版本如何实现数据表多列频率统计
标题来源:http://hbruida.cn/article/jdihcs.html