🧪 4. 代码实战 Python 预处理管线
import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler, StandardScaler
# 加载传感器数据 (示例)
df = pd.read_csv('sensor_工艺.csv', parse_dates=['timestamp'])
df.set_index('timestamp', inplace=True)
# ----- 缺失值处理 (线性插值) -----
df_interp = df.interpolate(method='linear', limit_direction='both')
# ----- 异常值检测 (IQR) -----
Q1 = df_interp.quantile(0.25)
Q3 = df_interp.quantile(0.75)
IQR = Q3 - Q1
outlier_mask = (df_interp < (Q1 - 1.5 * IQR)) | (df_interp > (Q3 + 1.5 * IQR))
# 将异常值替换为边界值 (winsorize)
df_clean = df_interp.mask(outlier_mask,
other=df_interp.clip(lower=Q1-1.5*IQR, upper=Q3+1.5*IQR, axis=1))
# ----- 标准化 (Z-score) 与 归一化 (MinMax) -----
# 标准化:适合后续PCA/回归
scaler_std = StandardScaler()
X_std = scaler_std.fit_transform(df_clean[['温度', '压力', '流量']])
# 归一化:适合神经网络
scaler_mm = MinMaxScaler(feature_range=(0, 1))
X_norm = scaler_mm.fit_transform(df_clean[['温度', '压力', '流量']])
print("预处理完成,保留时间索引,形状:", df_clean.shape)
📌 注意:工业数据建议先按批次分组,再分别进行缩放,避免未来信息泄露。