pandas计算列均值遇字符串"None"如何处理可避免数据偏差
pandas处理字符串类型缺失值计算均值的正确方案
核心解决方案
将字符串格式的"None"替换为pandas可识别的空值NaN而非0,pandas内置的统计方法会自动忽略NaN,仅基于有效数据计算均值,不会扭曲原始数据分布。
基础实现代码
import numpy as np # 替换字符串"None"为空值后转浮点型 dur_temp = duration.replace("None", np.nan).astype(float) # mean()会自动跳过空值计算 descricao_duration = dur_temp.mean()
原方案偏差原因
将缺失值替换为0相当于强行给未知时长的电影赋值为0分钟,远低于正常电影的时长范围,会直接拉低整体均值,同时可视化时会出现异常的0值尖峰,扭曲数据的真实分布。
如果需要用清洗后的数据绘图,直接过滤掉空值即可:
# 仅保留有效时长数据用于绘图 dur_valid = dur_temp.dropna()
进阶优化方案
如果不想直接丢弃缺失值,可以结合其他字段的信息做分组填充,进一步提升结果准确性:
比如按照电影类型、上映年份分组,用同分组内的平均时长填充缺失值,适合对数据精度要求更高的场景:
# 假设df为全量数据集,genres为电影类型列,release_year为上映年份列 df['duration'] = duration.replace("None", np.nan).astype(float) # 按类型+年份分组填充空值 df['duration'] = df.groupby(['genres', 'release_year'])['duration'].transform( lambda x: x.fillna(x.mean()) ) descricao_duration = df['duration'].mean()
内容的提问来源于stack exchange,提问作者joao leal
相关产品推荐
相关产品推荐

