什么时候适合使用df.value_counts()vs df.groupby(' ...')。count()?

时间:2017-11-25 15:49:13

标签: python pandas dataframe pandas-groupby

我在熊猫中听说过,通常有多种方法可以做同样的事情,但我想知道 -

如果我尝试按特定列中的值对数据进行分组并计算具有该值的项目数,那么何时使用df.groupby('colA').count()是有意义的,何时使用是有意义的df['colA'].value_counts()

1 个答案:

答案 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