python 中的频率单独列

frequency seperate column in python

我可能有一个简单的问题,但我在这个平台上找不到答案。我的数据集 df 中有一组列,如下所示:

A B C D
0 1 0 1
1 0 0 0
1 1 1 1
1 0 0 1

当我想要 A 列的频率时,我有以下脚本:

df.A.value_counts()

我得到:

一个3
名称:A,数据类型:int64

但现在我想要所有 4 列的计数。我制作了以下脚本:

df[['A', 'B', 'C', 'D']].value_counts()

我想得到输出:A 3、B 2、C 1、D 3。但我只得到 A 的计数,而没有得到其他列。我在这里做错了什么?

如果我正确解释你的输出,我想你想要的是个数。您可以为此使用 sum() 函数:

print(df.sum())

根据您的输入给出以下输出:

A    3
B    2
C    1
D    3
dtype: int64

函数 value_counts 为您提供列中的唯一值,这将为您提供 1 作为任何列的输出。所以,我假设这不是你想要的。

编辑: 如果您只需要几列,您可以先过滤列,然后应用总和。示例:

# Select the columns; example without C
columns_you_want = ['A', 'B', 'D']

# Filter df before applying the sum function
print(df[columns_you_want].sum())

输出只是想要的列(没有 C):

A    3
B    2
D    3
dtype: int64

如果您想计算几个不同列中的特定值,您可以使用:

df[df == VALUE].count()

在这个例子中是:

df[df == 1].count()