看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas
的 median()
方法用于计算指定轴的中位数。与 mean()
方法类似,median()
也会忽略缺失值(NaN)。中位数是数据排序后处于中间位置的值,因此对于具有极值的数据集,它比平均值更能反映数据的中心趋势。
返回请求轴上值的中值。
DataFrame.median(
axis=0,
skipna=True,
numeric_only=None,
**kwargs
)
axis
: {0 or ‘index’, 1 or ‘columns’}, 默认值 0
0
或 'index'
表示沿着列(即每列的中位数),1
或 'columns'
表示沿着行(即每行的中位数)。skipna
: bool, 默认值 True
False
并且有缺失值,结果将为 NaN。numeric_only
: bool, 默认值 None
True
,则只计算数值类型的数据。对于非数值类型的列,将被忽略。如果为 False
,将尝试计算所有类型的数据(可能会抛出异常)。****kwargs
**: 其他传递给底层方法的关键字参数。
返回一个 Series
或者 DataFrame
对象,具体取决于输入的数据结构以及计算的方向。
s = pd.Series([1, 2, 3])
s.median()
# 2.0
DataFrame
df = pd.DataFrame({'a': [1, 2], 'b': [2, 3]}, index=['tiger', 'zebra'])
df
'''
a b
tiger 1 2
zebra 2 3
'''
df.median()
'''
a 1.5
b 2.5
dtype: float64
'''
用 axis=1
df.median(axis=1)
'''
tiger 1.5
zebra 2.5
dtype: float64
'''
在这种情况下,应将numeric_only设置为True以避免出错。
df = pd.DataFrame({'a': [1, 2], 'b': ['T', 'Z']},
index=['tiger', 'zebra'])
df.median(numeric_only=True)
'''
a 1.5
dtype: float64
'''
构造一个简单的 DataFrame
并计算列的中位数。
import pandas as pd
# 构造示例数据
data = {
'A': [1, 2, 3, 4],
'B': [4, 5, 6, None],
'C': [7, 8, None, 10]
}
df = pd.DataFrame(data)
# 输出示例数据
print("示例数据:")
print(df)
# 计算各列的中位数
median_values = df.median(axis=0)
# 输出结果
print("\n各列的中位数:")
print(median_values)
输出:
示例数据:
A B C
0 1.0 4.0 7.0
1 2.0 5.0 8.0
2 3.0 6.0 NaN
3 4.0 NaN 10.0
各列的中位数:
A 2.5
B 5.0
C 8.0
dtype: float64
同样可以设置 skipna=False
来不忽略缺失值,或者使用 axis=1
按行计算中位数。
# 计算各行的中位数
median_values_rows = df.median(axis=1)
# 不忽略缺失值计算列中位数
median_values_no_skipna = df.median(axis=0, skipna=False)
# 输出结果
print("\n各行的中位数:")
print(median_values_rows)
print("\n不忽略缺失值的各列中位数:")
print(median_values_no_skipna)
输出:
各行的中位数:
0 4.0
1 5.0
2 4.5
3 7.0
dtype: float64
不忽略缺失值的各列中位数:
A 2.5
B 5.0
C NaN
dtype: float64
median()
方法在处理具有极值的数据时比 mean()
更有效,能够更好地反映数据的中心趋势。它同样支持灵活的参数设置,以满足不同的计算需求,并且可以处理包含缺失值的数据集。
更新时间:2024-08-08 16:38:16 标签:pandas python 中位数 median