在数据分析中,数据清理和预处理是最费时但至关重要的步骤。数据质量直接关系到分析结果的精确性和可信度。本文总结了 Python 数据清洗的实际技巧,帮助你高效解决各种数据问题。
一、数据缺失值处理
- 检查缺失值
import pandas as pd df = pd.read_csv('data.csv') missing = df.isnull().sum() # 查看每列缺失值数量 - 删除缺失值
df.dropna(subset=['user_id'], inplace=True) # 删除关键字段缺失的行 - 填充缺失值
常用方法:
均值填充:df['amount'].fillna(df['amount'].mean(), inplace=True)
中位数填充:df['amount'].fillna(df['amount'].median(), inplace=True)
常数填充:df['category'].fillna('未知', inplace=True)
二、数据重复值处理
# 查看重复行 duplicates = df.duplicated(subset=['order_id']) # 删除重复行 df.drop_duplicates(subset=['order_id'], inplace=True)
三、异常值处理
- 使用箱型图检测异常值
import seaborn as sns sns.boxplot(x=df['amount']) - 根据分位数过滤异常值
q_low = df['amount'].quantile(0.01) q_high = df['amount'].quantile(0.99) df_filtered = df[(df['amount'] >= q_low) & (df['amount'] <= q_high)] - 根据业务规则处理异常值
设置上下限:如订单金额不能为负数
异常值单独标记或剔除
四、数据类型转换
- 将分类变量转为 category 类型
df['category'] = df['category'].astype('category') - 将数值列转换为合适的 int 或 float 类型
df['user_id'] = df['user_id'].astype('int32') - 日期列转换
df['order_date'] = pd.to_datetime(df['order_date'])
五、数据标准化与归一化
- 标准化(Z-score)
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() df[['amount_scaled']] = scaler.fit_transform(df[['amount']]) - 归一化(Min-Max)
from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() df[['amount_norm']] = scaler.fit_transform(df[['amount']])
适用于模型训练和特征处理
参考案例:www.cdljauf.cn
六、文本与分类数据处理
- 去除空格、大小写统一
df['category'] = df['category'].str.strip().str.lower() - 分类编码(Label Encoding / One-Hot Encoding)
df = pd.get_dummies(df, columns=['category'], drop_first=True)
七、实战建议
先探索,再清洗
使用
info(),
describe()查看数据概况
确定缺失值、异常值和数据类型问题
记录清洗步骤
保持数据处理流程可复现
使用函数或 notebook 模块化操作
结合业务规则
数据清洗不仅是技术问题,还要结合实际业务判断
数据验证
清洗后检查数据一致性、完整性和合理性


雷达卡


京公网安备 11010802022788号







