pandas.DataFrame.value_counts #
- 数据框。value_counts (子集= None ,标准化= False ,排序= True ,升序= False , dropna = True ) [来源] #
返回一个包含数据框中每个不同行的频率的系列。
- 参数:
- 子集标签或标签列表,可选
计算唯一组合时使用的列。
- 标准化布尔值,默认 False
返回比例而不是频率。
- 排序bool,默认 True
True 时按频率排序。当为 False 时,按 DataFrame 列值排序。
- 升序布尔值,默认 False
按升序排序。
- dropna bool,默认 True
不包括包含 NA 值的行数。
1.3.0 版本中的新增功能。
- 返回:
- 系列
也可以看看
Series.value_counts
系列上的等效方法。
笔记
返回的系列将具有一个多重索引,每个输入列具有一个级别,但单个标签有一个索引(非多重)。默认情况下,结果中会忽略包含任何 NA 值的行。默认情况下,生成的系列将按降序排列,以便第一个元素是最常出现的行。
例子
>>> df = pd.DataFrame({'num_legs': [2, 4, 4, 6], ... 'num_wings': [2, 0, 0, 0]}, ... index=['falcon', 'dog', 'cat', 'ant']) >>> df num_legs num_wings falcon 2 2 dog 4 0 cat 4 0 ant 6 0
>>> df.value_counts() num_legs num_wings 4 0 2 2 2 1 6 0 1 Name: count, dtype: int64
>>> df.value_counts(sort=False) num_legs num_wings 2 2 1 4 0 2 6 0 1 Name: count, dtype: int64
>>> df.value_counts(ascending=True) num_legs num_wings 2 2 1 6 0 1 4 0 2 Name: count, dtype: int64
>>> df.value_counts(normalize=True) num_legs num_wings 4 0 0.50 2 2 0.25 6 0 0.25 Name: proportion, dtype: float64
将dropna设置为False我们还可以对具有 NA 值的行进行计数。
>>> df = pd.DataFrame({'first_name': ['John', 'Anne', 'John', 'Beth'], ... 'middle_name': ['Smith', pd.NA, pd.NA, 'Louise']}) >>> df first_name middle_name 0 John Smith 1 Anne <NA> 2 John <NA> 3 Beth Louise
>>> df.value_counts() first_name middle_name Beth Louise 1 John Smith 1 Name: count, dtype: int64
>>> df.value_counts(dropna=False) first_name middle_name Anne NaN 1 Beth Louise 1 John Smith 1 NaN 1 Name: count, dtype: int64
>>> df.value_counts("first_name") first_name John 2 Anne 1 Beth 1 Name: count, dtype: int64