我有一个数据集
category
cat a
cat b
cat a
我希望能够返回(显示唯一值和频率)
category freq
cat a 2
cat b 1
我有一个数据集
category
cat a
cat b
cat a
我希望能够返回(显示唯一值和频率)
category freq
cat a 2
cat b 1
当前回答
your data:
|category|
cat a
cat b
cat a
解决方案:
df['freq'] = df.groupby('category')['category'].transform('count')
df = df.drop_duplicates()
其他回答
your data:
|category|
cat a
cat b
cat a
解决方案:
df['freq'] = df.groupby('category')['category'].transform('count')
df = df.drop_duplicates()
下面的代码为名为“smaller_dat1”的数据帧中的“Total_score”列中的各种值创建频率表,然后返回值“300”在该列中出现的次数。
valuec = smaller_dat1.Total_score.value_counts()
valuec.loc[300]
如果没有任何库,你可以这样做:
def to_frequency_table(data):
frequencytable = {}
for key in data:
if key in frequencytable:
frequencytable[key] += 1
else:
frequencytable[key] = 1
return frequencytable
例子:
to_frequency_table([1,1,1,1,2,3,4,4])
>>> {1: 4, 2: 1, 3: 1, 4: 2}
在0.18.1中,groupby和count没有给出唯一值的频率:
>>> df
a
0 a
1 b
2 s
3 s
4 b
5 a
6 b
>>> df.groupby('a').count()
Empty DataFrame
Columns: []
Index: [a, b, s]
然而,唯一的值和它们的频率很容易通过大小来确定:
>>> df.groupby('a').size()
a
a 2
b 3
s 2
使用df.a.value_counts(),默认情况下返回排序后的值(降序排列,即最大值在前)。
df.category.value_counts()
这一小行代码将提供您想要的输出。
如果列名中有空格,则可以使用
df['category'].value_counts()