pandas.DataFrame.mode#

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

获取所选轴上每个元素的众数。

一组值的中位数是出现次数最多的值。可能存在多个中位数。

Parameters:
axis{0 或 ‘index’, 1 或 ‘columns’}, default 0

在寻找中位数时要迭代的轴:

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

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

numeric_onlybool,默认 False

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

dropnabool, default True

不考虑 NaN/NaT 的计数。

Returns:
DataFrame

每列或每行的中位数。

参见

Series.mode

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

Series.value_counts

返回 Series 中各值的计数。

Examples

>>> 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

默认情况下,不考虑缺失值,并且翅膀的中位数都是 0 和 2。由于结果 DataFrame 有两行,因此 specieslegs 的第二行包含 NaN

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

设置 dropna=False 后,会考虑 NaN 值,并且它们可以是中位数(如翅膀)。

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

设置 numeric_only=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