news 2026/4/10 10:35:28

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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)

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/7 15:22:01

MiniCPM4-0.5B-QAT-Int4-GPTQ-format 小显存llm

MiniCPM4-0.5B-QAT-Int4-GPTQ-format 模型库 from modelscope import AutoTokenizer from vllm import LLM, SamplingParamsmodel_name "OpenBMB/MiniCPM4-0.5B-QAT-Int4-GPTQ-format" prompt [{"role": "user", "content": "…

作者头像 李华
网站建设 2026/3/25 9:03:26

【计算机毕业设计案例】基于springboot的房产交易系统基于springboot的房地产销售管理系统(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/8 17:58:34

基于51单片机多功能婴儿床控制系统 尿液检测 防掉床 蓝牙

目录51单片机多功能婴儿床控制系统概述核心功能模块硬件设计要点软件逻辑流程关键参数与优化扩展功能建议源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;51单片机多功能婴儿床控制系统概述 该系统基于51单片机设计&#xff0c;整合了尿…

作者头像 李华
网站建设 2026/3/27 7:53:15

【LeetCode刷题】随机链表的复制

给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点的值。新节点的 n…

作者头像 李华
网站建设 2026/3/28 7:42:02

【LeetCode刷题】排序链表

给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。示例 1&#xff1a;输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4]示例 2&#xff1a;输入&#xff1a;head [-1,5,3,4,0] 输出&#xff1a;[-1,0,3,4,5]示例 3&#xff1a;输入&…

作者头像 李华