小编给大家分享一下pandas新版本如何实现数据表多列频率统计,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
pandas 以前的版本(1.1以前)中,就已经存在单列的频率统计。
我们以泰坦尼克号罹难乘客数据为例子:
希望快速查看各个性别的记录数:
上面显示的是绝对数值,可以显示占比吗?
通过参数 normalize 可以转换成占比
但是,以上都是针对单列的统计,很多时候我们希望对多列组合的频率统计。
现在,pandas 1.1 版本中已为 DataFrame 追加了同名方法 value_counts,下面来看看怎么使用。
查看性别与是否生还的统计数:
第一参数为 subset ,传入需要统计的列名的 list 即可
同样地,通过参数可以微调输出结果:
可以看出来男性生还率非常低
可能对于一些初学者来说会疑惑,难道旧版本得到这个结果很麻烦吗?
其实以前的版本做到一样的效果也是非常容易:
没有按频率倒序输出?
简单在后面"接上"排序操作,结果就一样了:
其实还有另一种解决思路,有兴趣看源码吧
统计比例也没有多大的事情:
那肯定用新版本的方法呀,新方法一句就做了你这么多句的事情!
但是!!!
下面,我们就来看看"自己做主"的优势
之前在讲解单列的频率统计(Series.value_counts)时,其实遗漏了一个挺有用的参数,对于数值型的列才能使用。
希望查看年龄段的频率(分3段吧):
bins 参数指定分3段
通常我们希望按分段排序:
参数 sort 控制是否按频率倒序,设置为 False,则按索引排序
你是不是觉得新版本的 DataFrame.value_counts 也有这个参数呢?
很遗憾,并没有这个参数,应该考虑到组合列的值是不能分段的。
不过对于自定义函数,当然想干啥就干啥:
由于本身 DataFrame.groupby 就可以支持混合类型的 key。因此在 key 设置时,可以是列名(一个字符串),也可以是列值,也可以是他们的混合
看完了这篇文章,相信你对“pandas新版本如何实现数据表多列频率统计”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。