我在熊猫中听说过,通常有多种方法可以做同样的事情,但我想知道 -
如果我尝试按特定列中的值对数据进行分组并计算具有该值的项目数,那么何时使用df.groupby('colA').count()
是有意义的,何时使用是有意义的df['colA'].value_counts()
?
答案 0 :(得分:13)
存在差异value_counts
返回:
生成的对象将按降序排列,以便第一个元素是最常出现的元素。
但count
没有,它按index
排序(由groupby('col')
中的列创建)。
df.groupby('colA').count()
用于按功能df
聚合count.
的所有列,因此它会计算排除NaN
s的值。
因此,如果需要count
只需要一列:
df.groupby('colA')['colA'].count()
样品:
df = pd.DataFrame({'colB':list('abcdefg'),
'colC':[1,3,5,7,np.nan,np.nan,4],
'colD':[np.nan,3,6,9,2,4,np.nan],
'colA':['c','c','b','a',np.nan,'b','b']})
print (df)
colA colB colC colD
0 c a 1.0 NaN
1 c b 3.0 3.0
2 b c 5.0 6.0
3 a d 7.0 9.0
4 NaN e NaN 2.0
5 b f NaN 4.0
6 b g 4.0 NaN
print (df['colA'].value_counts())
b 3
c 2
a 1
Name: colA, dtype: int64
print (df.groupby('colA').count())
colB colC colD
colA
a 1 1 1
b 3 2 2
c 2 2 1
print (df.groupby('colA')['colA'].count())
colA
a 1
b 3
c 2
Name: colA, dtype: int64