我有一个像这样的数据框,这是使用熊猫的数据框来计算特定类别的类别标签频率的简便方法。
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
对于大文件,此代码非常慢
答案 0 :(得分:0)
尝试使用value_counts。这是熊猫计算频率计数的一种有用方法。
简单到index.value_counts()
。
答案 1 :(得分:-1)
我认为,我也有类似的问题。您想知道,您的数据集中有多少行带有变量class_label == 1(或任意数字)的行-我正确吗?
如果是这样,那我也用类似的方式
df[df.class_label==x]
仅给出满足此要求的行的子数组
len(df[df.class_label==x])
获取满足您指定条件的事件数。