pandas.core.groupby.DataFrameGroupBy.value_counts#

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

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

1.4.0 新版功能.

参数
subset类似列表,可选

计算唯一组合时使用的列。

normalize布尔值,默认为False

返回比例而不是频率。

sort布尔值,默认为True

按频率排序。

ascending布尔值,默认为False

按升序排序。

dropna布尔值,默认为True

不包括包含NA值的行数。

退货
系列或DataFrame

如果GROUPBY AS_INDEX为True,则为Serial,否则为DataFrame。

参见

Series.value_counts

级数的等价法。

DataFrame.value_counts

DataFrame上的等效方法。

SeriesGroupBy.value_counts

SeriesGroupBy上的等效方法。

注意事项

  • 如果GROUPBY AS_INDEX为True,则返回的Series将有一个多重索引,每个输入列有一个级别。

  • 如果GROUPBY AS_INDEX为FALSE,则返回的DataFrame将有一个值为_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
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
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
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