Skip to main content
 首页 » 编程设计

python之计算 DataFrame 每列值的出现次数

2025年05月04日12kenshinobiy

我有以下数据框:

df = pd.DataFrame(np.array([[4, 1], [1,1], [5,1], [1,3], [7,8], [np.NaN,8]]), columns=['a', 'b']) 
 
    a    b 
0   4    1 
1   1    1 
2   5    1 
3   1    3 
4   7    8 
5   Nan  8 

现在我想对从 1 到 9 的值的列执行 value_counts(),这应该给我以下结果:

    a    b 
1   2    3 
2   0    0 
3   0    1 
4   1    0 
5   1    0 
6   0    0 
7   1    0 
8   0    2 
9   0    0 

这意味着我只计算每列值 1 到 9 的出现次数。如何才能做到这一点?我想获得这种格式,以便之后可以应用 df.plot(kind='bar', stacked=True) 来获得离散值从 1 到 9 的堆叠条形图x 轴和 y 轴上 a 和 b 的计数。

请您参考如下方法:

使用pd.value_counts:

df.apply(pd.value_counts).reindex(range(10)).fillna(0)