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

分类数据类型

具有分类类型的行如果具有相同的类别和顺序,将被视为一个组。在下面的示例中,尽管 acd 都具有 category 的相同数据类型,但只有 cd 将被视为一个组,因为 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