当前位置: 首页 > news >正文

AI数据预处理“神器”:Pandas实战技巧

一、核心结论

Pandas是AI数据预处理的核心工具,通过“数据清洗→特征工程→格式转换”流程,配合高效函数(如fillna/groupby/pivot_table),可将数据处理效率提升60%,为模型训练奠定高质量数据基础。

二、数据清洗:从“脏数据”到“可用数据”

1. 缺失值处理:fillna与dropna

  • 场景:处理空值(NaN),避免模型训练报错。
  • 实战技巧
    • 数值型缺失:用均值/中位数填充(避免极端值影响):
python df['age'].fillna(df['age'].median(), inplace=True) # 中位数填充年龄
    • 类别型缺失:用众数或“Unknown”填充:
python df['city'].fillna(df['city'].mode()[0], inplace=True) # 众数填充城市
    • 删除无效行:缺失值比例过高时(如>50%):
python df.dropna(subset=['critical_feature'], inplace=True) # 删除关键特征缺失的行

2. 重复值处理:drop_duplicates

  • 场景:去除重复数据,避免模型学习冗余信息。
  • 实战技巧
python df.drop_duplicates(subset=['id'], keep='first', inplace=True) # subset:指定去重依据列(如用户ID);keep='first'保留第一条

3. 异常值处理:clip与IQR法则

  • 场景:识别并修正极端值(如年龄=200)。
  • 实战技巧
    • 截断法:限制数值范围(如年龄1-120岁):
python df['age'] = df['age'].clip(lower=1, upper=120) # 超出范围的强制设为边界值
    • IQR法则:删除3倍IQR外的异常值:
python Q1 = df['price'].quantile(0.25) Q3 = df['price'].quantile(0.75) IQR = Q3 - Q1 df = df[(df['price'] >= Q1 - 3*IQR) & (df['price'] <= Q3 + 3*IQR)]

三、特征工程:从“原始数据”到“模型特征”

1. 特征转换:astype与replace

  • 场景:数据类型转换(如字符串→数值)、类别映射。
  • 实战技巧
    • 类型转换:将“字符串日期”转为datetime:
python df['timestamp'] = pd.to_datetime(df['timestamp'], format='%Y-%m-%d')
    • 类别映射:将“男/女”转为0/1:
python df['gender'] = df['gender'].replace({'男': 0, '女': 1})

2. 特征提取:str.extract与dt属性

  • 场景:从文本/日期中提取关键信息。
  • 实战技巧:智优达
    • 从文本提取数字(如从“价格:99元”提取99):
python df['price'] = df['text'].str.extract('(\d+)').astype(float) # 正则提取数字
    • 从日期提取特征(如星期几、月份):
python df['day_of_week'] = df['timestamp'].dt.dayofweek # 0=周一,6=周日

3. 特征聚合:groupby与pivot_table

  • 场景:按类别统计(如“各城市平均收入”)。
  • 实战技巧
    • 基础聚合:计算各分组均值/总和:
python city_avg_income = df.groupby('city')['income'].mean().reset_index()
    • 数据透视表:多维度聚合(如“城市×性别”的收入均值):
python pivot = df.pivot_table( index='city', columns='gender', values='income', aggfunc='mean' )

四、数据格式转换:为模型训练准备输入

1. 独热编码:get_dummies

  • 场景:将类别特征转为模型可接受的数值(如“城市”→多个0/1列)。
  • 实战技巧
python df = pd.get_dummies(df, columns=['city'], drop_first=True) # columns:指定需编码的列测,drop_first=True去除冗余特征。

2. 标准化/归一化

  • 场景:统一数据尺度,提高模型训练效果。智优达
  • 实战技巧
python from sklearn.preprocessing import StandardScaler scaler = StandardScaler() df['normalized_value'] = scaler.fit_transform(df['value'])

3. 特征选择:筛选与排序

  • 特征选择:通过相关性分析,选择重要特征。
  • 代码示例
python corr = df.corr() print(corr)

4. 数据拆分

  • 数据拆分:将数据集分为训练集和测试集。
  • 代码示例
python from sklearn.model_selection import train_test_split X = df.drop('target', axis=1) y = df['target'] X_train, X_test, y_train, X_train, y_train, X_test, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

总结:通过合理的预处理,可大幅提升模型性能。建议优先处理数据清洗和特征工程,确保数据质量。

http://www.jsqmd.com/news/299880/

相关文章:

  • Spring 如何解决循环依赖?
  • 什么是 Spring IOC?
  • Spring 中的 DI 是什么?
  • 深入浅出了解生成模型-8:生成加速策略概述 - Big-Yellow
  • P1102 A-B 数对(lower_bound函数)
  • Java毕设选题推荐:基于springboot的农企信息管理平台设计与开发基于SpringBoot+Vue农企信息管理平台设计与开发【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 【ISAC】5G NR-PRS赋能6G多基地ISAC:LoS/NLoS混合场景定位精度突破28%!【附MATLAB代码】
  • 【电力系统】基于角度-电压耦合引起的稳定性衰减:波德型基本性能限制分析附Matlab代码
  • 【课程设计/毕业设计】基于SpringBoot+Vue农企信息管理平台设计与开发基于springboot的农企信息管理平台设计与开发【附源码、数据库、万字文档】
  • Java计算机毕设之基于springboot的种植基地农业信息管理系统的设计与实现基于springboot的农企信息管理平台设计与开发(完整前后端代码+说明文档+LW,调试定制等)
  • 【SSVEP】基于SSVEP检测频率导向脑活动的VR实验附Matlab代码
  • 基于深度学习YOLOv10的水果分类检测系统(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)
  • 我用 Claude Code 给自己打造了个人助理,他将比我更了解我自己
  • MiniCPM4-0.5B-QAT-Int4-GPTQ-format 小显存llm
  • 虚拟桌宠工作学习实际收益
  • 两个不同版本的int_fast16的定义
  • 强烈安利9个AI论文软件,专科生轻松搞定毕业论文!
  • 计算机Java毕设实战-基于springboot的农企商品产品信息管理平台设计与开发【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 基于51单片机的水质检测 PH TDS 温度+浊度+报警
  • 基于51单片机的水质检测 PH 浊度 温度 蓝牙 报警
  • 寒假2
  • 基于51单片机的汽车胎压检测系统 蓝牙 气压 温度
  • 基于51单片机的语音识别控制系统设计智能家居声控灯
  • 基于51单片机的银行排队叫号系统 语音呼叫 银行叫号系统电子DIY
  • 基于51单片机的停车场车位管理 停车场收费 刷卡计费计数系统DIY
  • 基于51单片机的智能公交报站系统 公交车语音报站器
  • 基于51单片机的智能窗帘晾衣架 WIFI传输 防盗报警
  • Java毕设选题推荐:基于springboot的绿色有机农产品溯源系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 基于51单片机的智能药盒 WIFI传输 药量检测 定时吃药
  • 亲测好用!专科生必备AI论文软件TOP10测评