pandas.DataFrame.mode#

DataFrame.mode(axis=0, numeric_only=False, dropna=True)[源代码]#

获取所选轴上每个元素(或最常见值)。

一组值的众数是出现次数最多的值。可以有多个值。

参数:
axis{0 或 ‘index’, 1 或 ‘columns’}, 默认为 0

在搜索众数时要迭代的轴

  • 0 或 ‘index’ :获取每列的众数

  • 1 或 ‘columns’ :获取每行的众数。

numeric_onlybool, default False

如果为 True,则仅应用于数字列。

dropnabool,默认为 True

不考虑 NaN/NaT 的计数。

返回:
DataFrame

每列或每行的众数。

另请参阅

Series.mode

返回 Series 中出现频率最高的值。

Series.value_counts

返回 Series 中值的计数。

示例

>>> df = pd.DataFrame(
...     [
...         ("bird", 2, 2),
...         ("mammal", 4, np.nan),
...         ("arthropod", 8, 0),
...         ("bird", 2, np.nan),
...     ],
...     index=("falcon", "horse", "spider", "ostrich"),
...     columns=("species", "legs", "wings"),
... )
>>> df
           species  legs  wings
falcon        bird     2    2.0
horse       mammal     4    NaN
spider   arthropod     8    0.0
ostrich       bird     2    NaN

默认情况下,不考虑缺失值,并且 wings 的众数都是 0 和 2。因为生成的 DataFrame 有两行,所以 specieslegs 的第二行包含 NaN

>>> df.mode()
  species  legs  wings
0    bird   2.0    0.0
1     NaN   NaN    2.0

dropna=False 设置为 NaN 值时,它们会被考虑在内,并且它们可以成为众数(例如 wings)。

>>> df.mode(dropna=False)
  species  legs  wings
0    bird     2    NaN

numeric_only=True 设置为 True 时,仅计算数字列的众数,而忽略其他类型的列。

>>> df.mode(numeric_only=True)
   legs  wings
0   2.0    0.0
1   NaN    2.0

要计算列的众数而不是行的众数,请使用 axis 参数

>>> df.mode(axis="columns", numeric_only=True)
           0    1
falcon   2.0  NaN
horse    4.0  NaN
spider   0.0  8.0
ostrich  2.0  NaN