pandas.DataFrame.value_counts#
- DataFrame.value_counts(subset=None, normalize=False, sort=True, ascending=False, dropna=True)[源代码]#
返回一个Series,其中包含DataFrame中每个不同行的频率。
- Parameters:
- subset标签或标签列表,可选。
用于计算唯一组合的列。
- normalizebool,默认 False
返回比例而不是频率。
- sortbool, default True
如果为 True,则按频率排序。如果为 False,则按 DataFrame 列值排序。
- ascendingbool,默认 False
按升序排序。
- dropnabool, default True
不包括包含 NA 值的行的计数。
在 1.3.0 版本加入.
- Returns:
- Series
参见
Series.value_countsSeries 上的等效方法。
Notes
返回的 Series 将拥有一个 MultiIndex,其中每个输入列对应一个级别,而对于单个标签,则是一个(非多)Index。默认情况下,包含任何 NA 值的行将从结果中省略。默认情况下,生成的 Series 将按降序排列,因此第一个元素是最常出现的行。
Examples
>>> 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