📜  获取 Pandas DataFrame 中列的频率计数

📅  最后修改于: 2022-05-13 01:54:51.055000             🧑  作者: Mango

获取 Pandas DataFrame 中列的频率计数

给定一个 Pandas 数据框,我们需要在该数据框的一列或多列中找到每个项目的频率计数。这可以通过多种方式实现:

方法 #1:使用Series.value_counts()

此方法适用于 pandas.Series 对象。由于每个 DataFrame 对象都是 Series 对象的集合,因此我们可以应用此方法来获取一列中值的频率计数。

# importing pandas as pd
import pandas as pd
  
# sample dataframe
df = pd.DataFrame({'A': ['foo', 'bar', 'g2g', 'g2g', 'g2g',
                         'bar', 'bar', 'foo', 'bar'],
                  'B': ['a', 'b', 'a', 'b', 'b', 'b', 'a', 'a', 'b'] })
  
# frequency count of column A
count = df['A'].value_counts()
print(count)

输出:
方法 #2:使用GroupBy.count()

此方法可用于计算对象在单列上的频率。在一列上对 DataFrame 对象进行分组后,我们可以对生成的groupby 对象应用count()方法来获取包含频率计数的 DataFrame 对象。

# importing pandas as pd
import pandas as pd
  
# sample dataframe
df = pd.DataFrame({ 'A': ['foo', 'bar', 'g2g', 'g2g', 'g2g',
                                'bar', 'bar', 'foo', 'bar'],
                   'B': ['a', 'b', 'a', 'b', 'b', 'b', 'a', 'a', 'b'] })
  
# Multi-column frequency count
count = df.groupby(['A']).count()
print(count)

输出:
方法#3:使用GroupBy.size()

此方法可用于计算对象在单列或多列上的频率。在一列或多列上对 DataFrame 对象进行分组后,我们可以对生成的groupby 对象应用size()方法以获取包含频率计数的 Series 对象。

# importing pandas as pd
import pandas as pd
  
# sample dataframe
df = pd.DataFrame({ 'A': ['foo', 'bar', 'g2g', 'g2g', 'g2g', 
                                'bar', 'bar', 'foo', 'bar'],
                   'B': ['a', 'b', 'a', 'b', 'b', 'b', 'a', 'a', 'b'] })
  
# Multi-column frequency count
count = df.groupby(['A', 'B']).size()
print(count)

输出: