pandas.core.groupby.DataFrameGroupBy.value_counts#

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

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

Added in version 1.4.0.

参数:
子集类似列表的,可选的

用于计算唯一组合的列。

normalizebool, 默认 False

返回比例而不是频率。

排序布尔值, 默认为 True

按频率排序。

升序bool, 默认 False

按升序排序。

dropna布尔值, 默认为 True

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

返回:
系列或数据框

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

参见

Series.value_counts

Series上的等效方法。

DataFrame.value_counts

DataFrame 上的等效方法。

SeriesGroupBy.value_counts

SeriesGroupBy 上的等效方法。

备注

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

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

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

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

例子

>>> df = pd.DataFrame(
...     {
...         "gender": ["male", "male", "female", "male", "female", "male"],
...         "education": ["low", "medium", "high", "low", "high", "low"],
...         "country": ["US", "FR", "US", "FR", "FR", "FR"],
...     }
... )
>>> df
        gender  education   country
0       male    low         US
1       male    medium      FR
2       female  high        US
3       male    low         FR
4       female  high        FR
5       male    low         FR
>>> df.groupby("gender").value_counts()
gender  education  country
female  high       FR         1
                   US         1
male    low        FR         2
                   US         1
        medium     FR         1
Name: count, dtype: int64
>>> df.groupby("gender").value_counts(ascending=True)
gender  education  country
female  high       FR         1
                   US         1
male    low        US         1
        medium     FR         1
        low        FR         2
Name: count, dtype: int64
>>> df.groupby("gender").value_counts(normalize=True)
gender  education  country
female  high       FR         0.50
                   US         0.50
male    low        FR         0.50
                   US         0.25
        medium     FR         0.25
Name: proportion, dtype: float64
>>> df.groupby("gender", as_index=False).value_counts()
   gender education country  count
0  female      high      FR      1
1  female      high      US      1
2    male       low      FR      2
3    male       low      US      1
4    male    medium      FR      1
>>> df.groupby("gender", as_index=False).value_counts(normalize=True)
   gender education country  proportion
0  female      high      FR        0.50
1  female      high      US        0.50
2    male       low      FR        0.50
3    male       low      US        0.25
4    male    medium      FR        0.25