【问题标题】:Frequency count across whole pandas dataframe整个 pandas 数据帧的频率计数
【发布时间】:2020-02-04 21:57:33
【问题描述】:

假设一个如下所示的数据框:

    a  b  c  d  e  f
 a  0  1  3  6  0  0
 b  0  3  3  5  0  2
 c  2  1  1  4  0  0
 d  2  1  1  1  0  5
 e  0  0  0  0  0  1
 f  1  2  1  3  0  1 

我想计算每个值(在每个单元格上)出现的次数。

结果应该类似于:

value  count
0     14 
1     10
2     4
3     4
4     1
5     2
6     1

请注意,在我的实际数据帧中,我的值范围从 0 到 15,包括整数和浮点数。所以答案不能基于以上数值的具体计数!

任何帮助将不胜感激! :)

【问题讨论】:

标签: python pandas dataframe count


【解决方案1】:

将DataFrame.stack 与Series.value_counts 一起使用,然后将Series 转换为2 列DataFrame 与DataFrame.rename_axis 和DataFrame.reset_index:

df = df.stack().value_counts().rename_axis('value').reset_index(name='count')
print (df)
   value  count
0      0     14
1      1     10
2      3      4
3      2      4
4      5      2
5      6      1
6      4      1

如果需要排序value列添加Series.sort_index:

df = df.stack().sort_index().value_counts().rename_axis('value').reset_index(name='count')
print (df)

   value  count
0      0     14
1      1     10
2      3      4
3      2      4
4      5      2
5      6      1
6      4      1

【讨论】:

    【解决方案2】:

    您可以stack 并使用value_counts:

    df.stack().value_counts()
    
    0    14
    1    10
    3     4
    2     4
    5     2
    6     1
    4     1
    dtype: int64
    

    【讨论】:

      猜你喜欢
      • 2016-03-28
      • 2021-10-07
      • 1970-01-01
      • 2020-08-17
      • 2017-06-13
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多