Python 数据清洗实战:缺失值、异常值与特征工程
在真实的数据分析场景中,原始数据往往充斥着噪声和缺陷。缺失值和离群值是两大常见挑战,它们会显著影响模型的准确性和可靠性。作为工程师,我们不仅要会写代码,更要懂得如何清洗数据,确保输入模型的是高质量信息。
检测和处理缺失值
缺失数据是现实世界数据集中不可避免的问题。如果处理不当,会导致"垃圾进,垃圾出"的结果。我们需要先量化缺失程度,再决定策略。
检测缺失
利用 Pandas 可以快速定位缺失情况:
import pandas as pd
import numpy as np
data = {'Age': [18, 20, None, 22, 21, 19, None, 23],
'Test_Score': [85, None, 90, 92, None, 88, 94, 91]}
df = pd.DataFrame(data)
# 统计缺失值
missing_values = df.isnull()
print(f"缺失行数:{(missing_values.any(axis=1)).sum()}")
isnull() 返回布尔矩阵,配合 any(axis=1) 可以找出包含任意缺失值的行。了解缺失比例后,我们才能决定是删除还是填补。
填补策略
1. 直接删除
如果缺失比例很低(如 <5%)且随机分布,直接删除是最简单的方案。
df_clean = df.dropna()
但要注意,这可能会丢失关键样本,改变数据的分布特性。
2. 均值/中位数填补
对于数值型数据,常用均值或中位数填充。均值对异常值敏感,中位数更稳健。
# 均值填补
df['Age'].fillna(df['Age'].mean(), inplace=True)
# 中位数填补
df[].fillna(df[].median(), inplace=)

