编写Python函数实现pandas DataFrame的mean或median缺失值填充
Pandas缺失值均值/中位数填充实现
首先导入依赖库:
import pandas as pd import numpy as np
构造示例DataFrame:
data = {'Age':[18, np.nan, 17, 14, 15, np.nan, 17, 17]} df = pd.DataFrame(data)
实现方式1:直接调用原生API
完全匹配你给出的参考调用风格:
- 使用均值填充:
# 计算均值并保留1位小数,符合你给出的期望输出格式 df = df.fillna(round(df['Age'].mean(), 1))
- 使用中位数填充:
df = df.fillna(df['Age'].median())
实现方式2:封装为通用工具函数
如果需要适配多列数值填充、可灵活指定策略的场景,可以封装为通用函数:
def fill_numeric_na(df, strategy: str = 'mean'): """ 填充DataFrame中所有数值列的缺失值 :param df: 待处理的DataFrame :param strategy: 填充策略,支持'mean'(均值)、'median'(中位数) :return: 缺失值填充完成的DataFrame """ support_strategy = ['mean', 'median'] if strategy not in support_strategy: raise ValueError(f"仅支持以下填充策略:{','.join(support_strategy)}") # 筛选数值列 num_cols = df.select_dtypes(include=np.number).columns # 计算对应填充值 if strategy == 'mean': fill_val = round(df[num_cols].mean(), 1) else: fill_val = df[num_cols].median() return df.fillna(fill_val)
调用示例:
# 均值填充 df = fill_numeric_na(df, strategy='mean') # 中位数填充 df = fill_numeric_na(df, strategy='median')
内容的提问来源于stack exchange,提问作者Anakin Skywalker
相关产品推荐
相关产品推荐

