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