统计整个DataFrame中的值的数量

5

我目前有一个包含50列和约50000行数据的DataFrame。我想找到整个DataFrame中某个数值(例如2)出现的总次数。

DataFrame中仅包含0到7之间的值。我可以使用以下代码计算单个列的值:

print(df['col1'].value_counts())

我尝试创建以下类似的for循环:

```for (let i = 0; i <= arr.length; i++) {```

for cols in df:
    print(df[cols].value_counts())

这个方法可行,但它会将每列的结果单独打印出来。
我想要的是将所有列的结果合并在一起,得到类似下面展示的结果,而不仅仅是针对某一列。请帮忙实现。
val    no.
7.0    165
3.0    127
5.0     118
6.0     112
2.0      98
4.0      88
1.0      64
0.0      21
Name: col1, dtype: int64

非常感谢您的帮助!


3
(df.values == 2).sum()? - Julien
这有点尴尬。你想回答一下,这样我就可以把它标记为解决方案吗? - 577e94982d620b84f7c536d5e76f1e
3个回答

8

针对特定值:

(df.values == 2).sum()

或者对于所有人:
np.unique(df.values, return_counts=True)

6

您可能需要先检查第一个stack,然后使用value_counts,现在您可以从索引中选择所需内容

df.stack().value_counts()

1
这非常有趣。我发现对于对象列和大型DataFrame,Counter 要快得多参见此处,但是对于整数列,stack 可以快 2 倍。 - ALollz

4

你也可以尝试使用Counter

from collections import Counter

print(pd.DataFrame(Counter(df.values.flatten()), index=['Count']).T)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接