Python pandas数据计数函数value_counts

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python pandas数据计数函数value_counts相关的知识,希望对你有一定的参考价值。

参考技术A

value_counts是一种查看表格某列中有多少个不同值的快捷方法,并计算每个不同值有在该列中个数,类似Excel里面的count函数

其是pandas下面的顶层函数,也可以作用在Series、DataFrame下

常规用法:

pandas 的 value_counts() 函数可以对Series里面的每个值进行计数 并且 排序,默认是降序

可以看出,既可以对分类变量统计,也可以对连续数值变量统计

如果是要对结果升序排列,可以添加 ascending=True 来改变

如果不想看统计的个数,而是想看占比,那么可以设置 normalize=True 即可,结果是小数形式

可以通过apply,对每一列变量进行统计

以上是自己实践中遇到的一些点,分享出来供大家参考学习,欢迎关注DataShare公众号

Python Pandas 使用 dataframe.stack().value_counts() - 如何获取计数对象的值?

【中文标题】Python Pandas 使用 dataframe.stack().value_counts() - 如何获取计数对象的值?【英文标题】:Python Pandas Using dataframe.stack().value_counts() -- How to get values of counted objects? 【发布时间】:2017-03-09 00:22:02 【问题描述】:

我有一个数据框,其中每一行代表一周中的某一天,每一列代表当天与服务器通信失败的联网设备的序列号。

我正在尝试获取一整周未能通信的一系列序列号。

代码块:

counts = df.stack().value_counts()
seven_day = counts[counts == 7]
for a in seven_day:
    print(a)

问题是没有打印任何内容。我想要的是序列号列表,而不是计数本身。

这个问题是来自: Python Pandas -- Determine if Values in Column 0 Are Repeated in Each Subsequent Column

【问题讨论】:

你想遍历索引seven_day = counts[counts == 7] for a in seven_day.index: print(a) 【参考方案1】:

value_counts 返回一个 Series,其中值作为索引,计数作为值,所以你想遍历索引:

counts = df.stack().value_counts()
seven_day = counts[counts == 7]
for a in seven_day.index:
    print(a)

应该工作

【讨论】:

就是这样。感谢@EdChum 在这两个问题上帮助我。【参考方案2】:

另一种解决方案是使用Series.iteritems:

counts = df.stack().value_counts()
seven_day = counts[counts == 7]

for index, val in seven_day.iteritems():
    print(index)

【讨论】:

以上是关于Python pandas数据计数函数value_counts的主要内容,如果未能解决你的问题,请参考以下文章

Python Pandas 使用 dataframe.stack().value_counts() - 如何获取计数对象的值?

pandas库Series的函数介绍

在 pandas / python 中对条件值进行分组和计数

Python Pandas库的学习

使用 pandas 逐块计算数据库块的值计数

python pandas groupby分组后的数据怎么用