如何使用熊猫计算数据帧中类别标签的频率?

时间:2019-10-22 20:47:54

标签: python pandas dataframe

我有一个像这样的数据框,这是使用熊猫的数据框来计算特定类别的类别标签频率的简便方法。

index  f1 f2 f3 f4 f5 f6  class_label
    0      4  4  2  3  3  1        0
    1      1  4  2  1  3  1        0
    2      4  1  2  1  3  1        0
    3      2  4  1  3  3  1        1
    4      4  4  2  0  3  1        1
    5      3  4  2  4  1  1        1
    6      4  4  2  5  3  1        1
    7      4  4  2  3  3  1        1

我已经写下了这段代码,但是有什么简单的方法可以做到这一点:

import pandas  as pd

df  = pd.read_csv('example.tsv',sep='\t')
class_labels  = df['class_label'].values.tolist()
class_labels_set = set(class_labels)

print class_labels

freq_list = []

for c in class_labels_set:
    freq_list.append(class_labels.count(c))

print 'Freq',freq_list
print 'number',class_labels_set

对于大文件,此代码非常慢

2 个答案:

答案 0 :(得分:0)

尝试使用value_counts。这是熊猫计算频率计数的一种有用方法。

简单到index.value_counts()

答案 1 :(得分:-1)

我认为,我也有类似的问题。您想知道,您的数据集中有多少行带有变量class_label == 1(或任意数字)的行-我正确吗?

如果是这样,那我也用类似的方式

df[df.class_label==x]

仅给出满足此要求的行的子数组

len(df[df.class_label==x])

获取满足您指定条件的事件数。