Python- 计算值在数据框列中出现的频率

发布于 2021-02-02 23:19:43

我有一个数据集

|category|
cat a
cat b
cat a

我希望能够返回类似的信息(显示唯一的值和频率)

category | freq |
cat a       2
cat b       1
关注者
0
被浏览
103
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    使用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]
    

    请参阅在线文档:http : //pandas.pydata.org/pandas-docs/stable/groupby.html

    另外,value_counts()正如@DSM所说,这里有很多方法可以给猫皮

    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]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看