当前位置: 首页 > 知识库问答 >
问题:

计算数据帧列中出现值的频率

白智
2023-03-14

我有一个数据

category
cat a
cat b
cat a

我希望能够返回像(显示独特的值和频率)这样的东西

category   freq 
cat a       2
cat b       1

共有3个答案

陈德泽
2023-03-14
df.category.value_counts()

这一小行代码将为您提供所需的输出。

如果列名中有空格,则可以使用

df['category'].value_counts()
东方宜
2023-03-14

如果要应用于所有列,可以使用:

df.apply(pd.value_counts)

这将对每个列应用基于列的聚合函数(在本例中value_counts)。

蒯坚白
2023-03-14

使用Groupbycount

In [37]:
df = pd.DataFrame({'a':list('abssbab')})
df.groupby('a').count()

Out[37]:

   a
a   
a  2
b  3
s  2

[3 rows x 1 columns]

查看在线文档:https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html

另外,正如@DSM所评论的那样,value\u counts()

In [38]:
df['a'].value_counts()

Out[38]:

b    3
a    2
s    2
dtype: int64

如果要将频率添加回原始数据帧,请使用transform返回对齐索引:

In [41]:
df['freq'] = df.groupby('a')['a'].transform('count')
df

Out[41]:

   a freq
0  a    2
1  b    3
2  s    2
3  s    2
4  b    3
5  a    2
6  b    3

[7 rows x 2 columns]
 类似资料:
  • 问题内容: 我有一个数据集 我希望能够返回类似的信息(显示唯一的值和频率) 问题答案: 使用和: 请参阅在线文档:http : //pandas.pydata.org/pandas-docs/stable/groupby.html 另外,正如所说,这里有很多方法可以给猫皮 如果要向原始数据帧添加频率,请使用transform返回对齐的索引:

  • 我想在数据的每一列中找到的数量,这样,如果某一列的少于某个阈值,我就可以删除该列。我看了一下,但没有找到任何功能。对我来说太慢了,因为大多数值都是不同的,而且我只对计数感兴趣。

  • 我想在我的数据的每一列中找到< code>NaN的数目。

  • 问题内容: 我想计算每个值出现在数据框中的次数。 这是我的数据框- : 我想对字典进行计数: 例如 我试过了,但它给了而且也没有用。 问题答案: 您可以使用和:

  • 问题内容: 在Javascript中,我试图获取数字值的初始数组并计算其中的元素。理想情况下,结果将是两个新数组,第一个数组指定每个唯一元素,第二个数组包含每个元素出现的次数。但是,我愿意接受有关输出格式的建议。 例如,如果初始数组为: 然后将创建两个新的数组。第一个将包含每个唯一元素的名称: 第二个将包含元素在初始数组中出现的次数: 因为数字5在初始数组中出现3次,所以数字2出现5次,而9和4都

  • 我正在尝试计算多个列的中值,但是我的数据有点奇怪。它看起来像下面的示例。 在表中到列表示该值的出现次数。我想计算中位数的出现次数。 例如对于ID = 1 是我想要创建的计算。 对于ID=2 我尝试过使用<code>rep()或<code>rep(10,2)),这就是我所期望的。我只是努力创建一个列表或向量,每个列都有重复。