pandas.DataFrame.value_counts#
- DataFrame.value_counts(subset=None, normalize=False, sort=True, ascending=False, dropna=True)[源代码][源代码]#
返回一个包含 DataFrame 中每行不同频率的 Series。
- 参数:
- 子集标签或标签列表,可选
在计算唯一组合时使用的列。
- normalize布尔值, 默认为 False
返回比例而不是频率。
- 排序布尔值, 默认为 True
当为True时按频率排序。当为False时按DataFrame列值排序。
- 升序布尔值, 默认为 False
按升序排序。
- dropna布尔值, 默认为 True
不要包含包含NA值的行数。
Added in version 1.3.0.
- 返回:
- 系列
包含 DataFrame 中每个不同行的频率的系列。
参见
Series.value_counts
Series 上的等效方法。
备注
返回的 Series 将有一个包含每个输入列一个级别的 MultiIndex,但对于单个标签将是一个 Index(非多级)。默认情况下,包含任何 NA 值的行将从结果中省略。默认情况下,生成的 Series 将按频率降序排序,因此第一个元素是最频繁出现的行。
例子
>>> 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