Python数据清洗与预处理实战
·
Python数据清洗与预处理实战
一、数据预处理概述
数据预处理是数据分析的第一步,约占整个项目工作量的60%-80%。主要包括数据清洗、数据转换、数据合并和数据特征工程。
二、环境配置
import pandas as pd
import numpy as np
import re
df = pd.read_csv('raw_data.csv', encoding='utf-8')
print(f"数据形状: {df.shape}")
三、缺失值处理
1. 检测缺失值
print(f"各列缺失值:\n{df.isnull().sum()}")
print(f"缺失率:\n{(df.isnull().sum() / len(df) * 100).round(2)}%")
import missingno as msno
msno.matrix(df)
2. 删除缺失值
df_clean = df.dropna()
df_clean = df.dropna(subset=['年龄', '工资'])
df_clean = df.dropna(how='all')
3. 填充缺失值
df['性别'].fillna('未知', inplace=True)
df['年龄'].fillna(df['年龄'].mean(), inplace=True)
df['工资'].fillna(df['工资'].median(), inplace=True)
df['销售额'] = df['销售额'].interpolate(method='linear')
四、重复值处理
print(f"重复行数:{df.duplicated().sum()}")
df_unique = df.drop_duplicates()
df_unique = df.drop_duplicates(subset=['姓名', '身份证号'], keep='first')
五、数据类型转换
df['年龄'] = pd.to_numeric(df['年龄'], errors='coerce')
df['工号'] = df['工号'].astype(str)
df['入职日期'] = pd.to_datetime(df['入职日期'], format='%Y-%m-%d', errors='coerce')
df['入职年份'] = df['入职日期'].dt.year
六、字符串处理
df['姓名'] = df['姓名'].str.strip()
df['城市'] = df['城市'].str.upper()
df['电话'] = df['电话'].str.replace('-', '')
df['邮箱域名'] = df['邮箱'].str.extract(r'@(.+\.\.+)')
七、数据转换与归一化
1. 数据标准化(Z-score)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df['工资标准化'] = scaler.fit_transform(df[['工资']])
2. 归一化(Min-Max)
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
df['年龄归一化'] = scaler.fit_transform(df[['年龄']])
3. 对数变换
df['工资对数'] = np.log1p(df['工资'])
八、数据合并
df_combined = pd.concat([df1, df2], axis=0)
df_merged = pd.merge(df_left, df_right, on='学号', how='inner')
九、异常值检测与处理
def detect_outliers_iqr(data, column):
Q1 = data[column].quantile(0.25)
Q3 = data[column].quantile(0.75)
IQR = Q3 - Q1
lower = Q1 - 1.5 * IQR
upper = Q3 + 1.5 * IQR
outliers = data[(data[column] < lower) | (data[column] > upper)]
return outliers
十、实验结果

数据清洗前后对比:
| 检查项 | 清洗前 | 清洗后 |
|---|---|---|
| 缺失值 | 128处 | 0处 |
| 重复行 | 23条 | 0条 |
| 异常值 | 15个 | 3个 |
| 格式错误 | 42处 | 0处 |
十一、总结
数据清洗是数据分析的基础,掌握缺失值处理、重复值删除、字符串处理和数据转换等核心技能,能够显著提升数据质量。
标签: Python | 数据清洗 | 数据预处理 | Pandas | 特征工程
更多推荐

所有评论(0)