pandas.Series.value_counts#
- Series.value_counts(normalize=False, sort=True, ascending=False, bins=None, dropna=True)[源代码]#
返回一个包含唯一值计数的系列。
生成的对象将按降序排列,因此第一个元素是最常出现的元素。默认排除NA值。
- 参数:
- normalize布尔值, 默认为 False
如果为真,则返回的对象将包含唯一值的相对频率。
- 排序布尔值, 默认为 True
当为 True 时按频率排序。当为 False 时保留数据的顺序。
- 升序布尔值, 默认为 False
按升序排序。
- binsint, 可选
与其计算值,不如将它们分组到半开的箱子中,这是
pd.cut
的一个便利功能,仅适用于数值数据。- dropna布尔值, 默认为 True
不要包含 NaN 的计数。
- 返回:
- 系列
包含唯一值计数的系列。
参见
Series.count
Series 中非 NA 元素的数量。
DataFrame.count
DataFrame 中非 NA 元素的数量。
DataFrame.value_counts
DataFrames 上的等效方法。
例子
>>> index = pd.Index([3, 1, 2, 3, 4, np.nan]) >>> index.value_counts() 3.0 2 1.0 1 2.0 1 4.0 1 Name: count, dtype: int64
当 normalize 设置为 True 时,通过将所有值除以值的总和来返回相对频率。
>>> s = pd.Series([3, 1, 2, 3, 4, np.nan]) >>> s.value_counts(normalize=True) 3.0 0.4 1.0 0.2 2.0 0.2 4.0 0.2 Name: proportion, dtype: float64
bins
箱子可以用于将连续变量转换为分类变量;与其计算值的唯一出现次数,不如将索引划分为指定数量的半开箱子。
>>> s.value_counts(bins=3) (0.996, 2.0] 2 (2.0, 3.0] 2 (3.0, 4.0] 1 Name: count, dtype: int64
dropna
将 dropna 设置为 False 时,我们还可以看到 NaN 索引值。
>>> s.value_counts(dropna=False) 3.0 2 1.0 1 2.0 1 4.0 1 NaN 1 Name: count, dtype: int64
分类数据类型
具有分类类型的行如果具有相同的类别和顺序,将被视为一个组。在下面的示例中,尽管
a
、c
和d
都具有category
的相同数据类型,但只有c
和d
将被视为一个组,因为a
没有相同的类别。>>> df = pd.DataFrame({"a": [1], "b": ["2"], "c": [3], "d": [3]}) >>> df = df.astype({"a": "category", "c": "category", "d": "category"}) >>> df a b c d 0 1 2 3 3
>>> df.dtypes a category b object c category d category dtype: object
>>> df.dtypes.value_counts() category 2 category 1 object 1 Name: count, dtype: int64