pandas.core.groupby.SeriesGroupBy.value_counts#

SeriesGroupBy.value_counts(normalize=False, sort=True, ascending=False, bins=None, dropna=True)[源代码][源代码]#

返回一个包含唯一行计数的 Series 或 DataFrame。

Added in version 1.4.0.

参数:
normalize布尔值, 默认为 False

返回比例而不是频率。

sort布尔值, 默认为 True

按频率排序。

升序布尔值, 默认为 False

按升序排序。

bins整数或整数列表,可选

与其计算值,不如将它们分组到半开的箱子中,这是为 pd.cut 提供的一个便利,仅适用于数值数据。

dropna布尔值, 默认为 True

不要包含包含NA值的行数。

返回:
Series 或 DataFrame

如果 groupby as_index 为 True,则为 Series,否则为 DataFrame。

参见

Series.value_counts

Series 上的等效方法。

DataFrame.value_counts

DataFrame 上的等效方法。

DataFrameGroupBy.value_counts

DataFrameGroupBy 上的等效方法。

备注

  • 如果 groupby as_index 为 True,则返回的 Series 将具有一个 MultiIndex,每个输入列对应一个级别。

  • 如果 groupby as_index 为 False,则返回的 DataFrame 将有一个额外的列,包含 value_counts。该列标签为 ‘count’ 或 ‘proportion’,取决于 normalize 参数。

默认情况下,包含任何 NA 值的行将从结果中省略。

默认情况下,结果将按降序排列,以便每个组中的第一个元素是最常出现的行。

例子

>>> s = pd.Series(
...     [1, 1, 2, 3, 2, 3, 3, 1, 1, 3, 3, 3],
...     index=["A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "B"],
... )
>>> s
A    1
A    1
A    2
A    3
A    2
A    3
B    3
B    1
B    1
B    3
B    3
B    3
dtype: int64
>>> g1 = s.groupby(s.index)
>>> g1.value_counts(bins=2)
A  (0.997, 2.0]    4
   (2.0, 3.0]      2
B  (2.0, 3.0]      4
   (0.997, 2.0]    2
Name: count, dtype: int64
>>> g1.value_counts(normalize=True)
A  1    0.333333
   2    0.333333
   3    0.333333
B  3    0.666667
   1    0.333333
Name: proportion, dtype: float64