📅  最后修改于: 2023-12-03 15:04:27.485000             🧑  作者: Mango
Pandas 是一个用于数据操作和分析的 Python 库。其中的 DataFrame
对象是 Pandas 最常用的数据对象之一。DataFrame.mode()
方法可以返回 DataFrame
中出现最频繁的值或众数。
DataFrame.mode(axis=0, numeric_only=False, dropna=True)
axis
:可选参数,指定计算众数的轴。默认为 0,表示行方向。也可以设置为 1,表示列方向。numeric_only
:可选参数,指定是否仅考虑数字类型的值。默认为 False,表示所有类型的数据均可计算众数。如果设置为 True,则仅对数字类型进行计算。dropna
:可选参数,指定计算时是否忽略 NaN 值。默认为 True,表示忽略 NaN 值;如果设置为 False,则 NaN 值也会参与计算。返回一个新的 DataFrame
,其中包含原 DataFrame
中每一列的众数。如果所有值都出现了相同的次数,mode()
方法将返回一个包含所有值的 DataFrame
。
import pandas as pd
data = {'name': ['Amy', 'Bob', 'Charlie', 'Charlie', 'Eddie', 'Frank', 'Frank'],
'age': [25, 18, 26, 26, 21, 25, 24],
'gender': ['F', 'M', 'M', 'F', 'M', 'M', 'M']}
df = pd.DataFrame(data)
print(df)
# 计算每列的众数
modes = df.mode()
print(modes)
# 设置 axis=1,计算每行的众数
row_modes = df.mode(axis=1)
print(row_modes)
# 设置 numeric_only=True,只计算数值列的众数
numerical_modes = df.mode(numeric_only=True)
print(numerical_modes)
# 设置 dropna=False,包含 NaN 值的列也参与计算
with_na_modes = df.mode(dropna=False)
print(with_na_modes)
输出:
name age gender
0 Amy 25 F
1 Bob 18 M
2 Charlie 26 M
3 Charlie 26 F
4 Eddie 21 M
5 Frank 25 M
6 Frank 24 M
name age gender
0 Charlie 25.0 M
1 NaN 26.0 M
2 NaN NaN F
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
6 NaN NaN NaN
0 1 2
0 25.0 NaN 0.0
1 18.0 NaN 1.0
2 26.0 NaN 1.0
3 26.0 NaN 0.0
4 21.0 NaN 1.0
5 25.0 NaN 1.0
6 24.0 NaN 1.0
name age gender
0 Charlie 25 M
1 Bob 18 M
2 Charlie 26 M
name age gender
0 Amy 25 F
1 Bob 18 M
2 Charlie 26 M
3 Charlie 26 F
4 Eddie 21 M
5 Frank 25 M
6 Frank 24 M