pandas.DataFrame.mode() 是一个非常实用的函数,用于返回数据框中每列(或多列)的 众数(即出现次数最多的值)。对于每一列,如果有多个众数(出现次数相同的最大值),则该函数会返回所有这些众数。可以使用 axis 控制是按行还是按列计算众数。本文主要介绍一下Pandas中pandas.DataFrame.mode方法的使用。

DataFrame.mode(self, axis=0, numeric_only=False, dropna=True) → 'DataFrame'   

[source]

获取沿选定轴的每个元素的mode(s) 。

一组值的mode是最常出现的值。它可以是多个值。

参数

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

搜索mode时要迭代的axis:

1) 0或'index':获取各列的mode

2) 1或'columns':获取每一行的mode。


numeric_only : bool,默认为False

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

dropna :bool,默认为True

不要考虑NaN / NaT的计数。

0.24.0版中的新功能。

返回值

DataFrame

每列或每行的mode

例子

1)对 DataFrame 的列计算众数

import pandas as pd

data = {'A': [1, 2, 2, 3, 4],
        'B': [5, 5, 6, 7, 7],
        'C': ['x', 'y', 'y', 'z', 'z']}

df = pd.DataFrame(data)

# 计算每列的众数
print(df.mode())

2)计算行的众数

import pandas as pd

data = {'A': [1, 2, 2, 3, 4],
        'B': [5, 5, 6, 7, 7],
        'C': [5, 7, 9, 2, 3]}

df = pd.DataFrame(data)

# 计算每行的众数
print(df.mode(axis=1))

3)忽略缺失值(NaN)

import pandas as pd

data = {'A': [1, 2, 2, 3, 4],
        'B': [5, 5, 6, 7, 7],
        'C': ['x', 'y', 'y', 'z', 'z']}

df = pd.DataFrame(data)

data_with_nan = {'A': [1, 2, 2, 3, None],
                 'B': [5, None, 5, 6, 7]}

df_nan = pd.DataFrame(data_with_nan)

# 计算众数,默认会忽略 NaN 值
print(df_nan.mode())

4)计算数值列的众数

import pandas as pd

data = {'A': [1, 2, 2, 3, 4],
        'B': [5, 5, 6, 7, 7],
        'C': [5, 7, 9, 2, 3]}

data_with_nan = {'A': [1, 2, 2, 3, None],
                 'B': [5, None, 5, 6, 7]}

df_nan = pd.DataFrame(data_with_nan)

df = pd.DataFrame(data)

# 只计算数值列的众数
print(df_nan.mode(numeric_only=True))

推荐文档

相关文档

大家感兴趣的内容

随机列表