pandas.DataFrame.value_counts#

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

返回一个包含 DataFrame 中每行不同频率的 Series。

参数:
子集标签或标签列表,可选

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

normalize布尔值, 默认为 False

返回比例而不是频率。

排序布尔值, 默认为 True

当为True时按频率排序。当为False时按DataFrame列值排序。

升序布尔值, 默认为 False

按升序排序。

dropna布尔值, 默认为 True

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

Added in version 1.3.0.

返回:
系列

包含 DataFrame 中每个不同行的频率的系列。

参见

Series.value_counts

Series 上的等效方法。

备注

返回的 Series 将有一个包含每个输入列一个级别的 MultiIndex,但对于单个标签将是一个 Index(非多级)。默认情况下,包含任何 NA 值的行将从结果中省略。默认情况下,生成的 Series 将按频率降序排序,因此第一个元素是最频繁出现的行。

例子

>>> df = pd.DataFrame(
...     {"num_legs": [2, 4, 4, 6], "num_wings": [2, 0, 0, 0]},
...     index=["falcon", "dog", "cat", "ant"],
... )
>>> df
        num_legs  num_wings
falcon         2          2
dog            4          0
cat            4          0
ant            6          0
>>> df.value_counts()
num_legs  num_wings
4         0            2
2         2            1
6         0            1
Name: count, dtype: int64
>>> df.value_counts(sort=False)
num_legs  num_wings
2         2            1
4         0            2
6         0            1
Name: count, dtype: int64
>>> df.value_counts(ascending=True)
num_legs  num_wings
2         2            1
6         0            1
4         0            2
Name: count, dtype: int64
>>> df.value_counts(normalize=True)
num_legs  num_wings
4         0            0.50
2         2            0.25
6         0            0.25
Name: proportion, dtype: float64

通过将 dropna 设置为 False,我们还可以计算包含 NA 值的行数。

>>> df = pd.DataFrame(
...     {
...         "first_name": ["John", "Anne", "John", "Beth"],
...         "middle_name": ["Smith", pd.NA, pd.NA, "Louise"],
...     }
... )
>>> df
  first_name middle_name
0       John       Smith
1       Anne        <NA>
2       John        <NA>
3       Beth      Louise
>>> df.value_counts()
first_name  middle_name
Beth        Louise         1
John        Smith          1
Name: count, dtype: int64
>>> df.value_counts(dropna=False)
first_name  middle_name
Anne        NaN            1
Beth        Louise         1
John        Smith          1
            NaN            1
Name: count, dtype: int64
>>> df.value_counts("first_name")
first_name
John    2
Anne    1
Beth    1
Name: count, dtype: int64