Python 计数每列数据帧中出现的值数
我有以下数据帧:Python 计数每列数据帧中出现的值数,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据帧: 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的值的列进行一次值_计数,这将给出以下结果: a b 1 2 3 2 0
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的值的列进行一次值_计数,这将给出以下结果:
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.plotkind='bar',stacked=True,以获得x轴上离散值为1到9、y轴上a和b计数的堆叠条形图。在每列上使用np.bincount:
df.apply(lambda x: np.bincount(x.dropna(),minlength=10))
a b
0 0 0
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
或者,使用列表理解而不是应用
在每列上使用np.bincount:
df.apply(lambda x: np.bincount(x.dropna(),minlength=10))
a b
0 0 0
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
或者,使用列表理解而不是应用
使用pd.U值计数:
使用pd.U值计数:
df.apply(pd.value_counts).reindex(range(10)).fillna(0)