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

Pandas数据清洗完整指南:8大核心技巧详解(2026实战版)

前言

数据清洗是数据分析的第一步,也是最费时间的环节。俗话说"数据科学家80%的时间都在清洗数据",一点都不夸张。

本文整理了Pandas数据清洗的8大核心技巧,每个都附带完整代码示例,帮你把脏数据变成可直接分析的干净数据。

技巧一:快速识别缺失值

拿到数据后,第一步是检查缺失值情况。

import pandas as pd import numpy as np # 读取数据 df = pd.read_csv('data.csv') # 查看每列缺失值数量和比例 missing_info = pd.DataFrame({ '缺失数量': df.isnull().sum(), '缺失比例': (df.isnull().sum() / len(df) * 100).round(2).astype(str) + '%' }) print(missing_info[missing_info['缺失数量'] > 0])

输出结果清晰展示每列的缺失情况,一目了然。

技巧二:删除或填充缺失值

根据业务逻辑选择处理方式:

# 删除缺失值超过30%的列 threshold = len(df) * 0.7 df_clean = df.dropna(axis=1, thresh=threshold) # 用均值填充数值列缺失值 numeric_cols = df_clean.select_dtypes(include=[np.number]).columns df_clean[numeric_cols] = df_clean[numeric_cols].fillna(df_clean[numeric_cols].mean()) # 用众数填充分类列 cat_cols = df_clean.select_dtypes(include=['object']).columns for col in cat_cols: df_clean[col].fillna(df_clean[col].mode()[0], inplace=True)

技巧三:去除重复数据

# 查看重复行数量 print(f"重复行数: {df.duplicated().sum()}") # 删除完全重复的行 df_no_dup = df.drop_duplicates() # 基于特定列删除重复,保留第一条 df_no_dup = df.drop_duplicates(subset=['user_id', 'order_date'], keep='first')

技巧四:数据类型转换

# 将字符串日期转换为datetime df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d') # 将分类数据转换为category类型(节省内存) df['status'] = df['status'].astype('category') # 批量转换数值列(处理字符串中的逗号) price_cols = [col for col in df.columns if 'price' in col.lower()] for col in price_cols: df[col] = df[col].astype(str).str.replace(',', '').astype(float)

技巧五:字符串清洗

# 去除首尾空格 df['name'] = df['name'].str.strip() # 统一大小写 df['city'] = df['city'].str.lower() # 去除特殊字符 df['phone'] = df['phone'].str.replace(r'[^\d]', '', regex=True) # 处理缺失值后的字符串操作 df['email'] = df['email'].str.lower().str.strip()

技巧六:异常值检测与处理

# 使用IQR方法检测异常值 def handle_outliers(df, column): Q1 = df[column].quantile(0.25) Q3 = df[column].quantile(0.75) IQR = Q3 - Q1 lower_bound = Q1 - 1.5 * IQR upper_bound = Q3 + 1.5 * IQR # 用边界值替换异常值 df[column] = df[column].clip(lower=lower_bound, upper=upper_bound) return df # 应用到所有数值列 numeric_cols = df.select_dtypes(include=[np.number]).columns for col in numeric_cols: df = handle_outliers(df, col)

技巧七:合并与重塑数据

# 合并多个数据源 df_merged = pd.merge(df_users, df_orders, on='user_id', how='left') # 追加新数据 df_updated = pd.concat([df_old, df_new], ignore_index=True) # 透视表转换 pivot = df.pivot_table( values='sales', index='region', columns='quarter', aggfunc='sum', fill_value=0 )

技巧八:标准化数据格式

# 重命名列(统一命名规范) df.columns = df.columns.str.lower().str.replace(' ', '_') # 重新排序列(按逻辑顺序) col_order = ['id', 'date', 'region', 'product', 'sales', 'cost', 'profit'] df = df[[col for col in col_order if col in df.columns]] # 筛选有效数据 df = df[(df['sales'] > 0) & (df['date'] >= '2024-01-01')]

完整示例代码

import pandas as pd import numpy as np # 一站式数据清洗函数 def clean_data(df): # 1. 统一列名 df.columns = df.columns.str.lower().str.replace(' ', '_') # 2. 处理缺失值 for col in df.select_dtypes(include=[np.number]).columns: df[col].fillna(df[col].median(), inplace=True) for col in df.select_dtypes(include=['object']).columns: df[col].fillna('Unknown', inplace=True) # 3. 去重 df.drop_duplicates(inplace=True) # 4. 数据类型转换 if 'date' in df.columns: df['date'] = pd.to_datetime(df['date'], errors='coerce') return df # 使用 df = pd.read_csv('raw_data.csv') df_clean = clean_data(df) df_clean.to_csv('clean_data.csv', index=False)

总结

数据清洗没有标准答案,关键是理解业务逻辑后再选择合适的处理方式。记住:

1. 先了解数据,再动手清洗

2. 缺失值处理要结合业务场景

3. 异常值不一定是错误,也可能是重要信息

4. 清洗前先备份原始数据

觉得有用的话,转发给需要的朋友!

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

相关文章:

  • AI产品冷启动方法论:从0到1构建有用户愿意留下来的AI应用
  • 闲置微信立减金别浪费!可可收专业回收攻略,新手也能轻松上手 - 可可收
  • 如何在论文降AI后做查重验证:双达标完整验收流程教程
  • 如何用嘎嘎降AI处理社科类论文:田野调查和访谈内容降AI完整教程
  • 大模型训练平台介绍,2026年天翼云息壤开启算力新纪元 - 资讯焦点
  • Fast-GitHub终极指南:3步轻松解决GitHub访问慢的难题
  • ThatProject路线图:探索物联网与嵌入式开发的未来技术趋势
  • BigImageViewPager性能优化实战:从加载速度到内存管理的完整方案
  • 2026年发电机租赁优质厂家深度解析:市场趋势与选择指南 - 深度智识库
  • QuantEcon.py社区贡献指南:如何参与开源经济学项目
  • 别再乱接线了!ESP32引脚功能速查手册(附GPIO/ADC/触摸引脚避坑指南)
  • MQCloud消息追踪与审计:如何实现全链路消息监控与追溯
  • 2026年新能源抓钢机与港口装卸设备深度横评:降本60%的电动化升级方案 - 优质企业观察收录
  • 企业级HTML转Word文档自动化转换框架:构建高性能文档处理系统
  • 如何快速掌握文本差异对比:Diff Checker桌面应用完整指南
  • 2026年权威推荐:超声波液位计五大品牌榜单来袭 - 陈工日常
  • 多相机系统标定终极指南:如何实现视场重叠区域的精确对齐
  • WebApp.rs测试策略:单元测试、集成测试与端到端测试
  • 从‘GDP至上’到‘绿色增长’:SBM、DDF模型如何重塑我们对经济效率的认知?
  • 布拉格相位匹配项
  • LeetCode热题100-26. 删除有序数组中的重复项
  • 超声波液位计厂家哪家好?2026口碑企业TOP10速览 - 陈工日常
  • 别再傻傻分不清!TN、VA、IPS、TFT这些屏幕面板到底有啥区别?看完这篇就懂了
  • GPU和CPU的知识
  • 轻薄透气还不闷闭口的防晒看这里,Leeyo防晒霜轻薄速干告别黏糊闷肤感 - 全网最美
  • 2026最新月嫂会所推荐!宁夏优质权威榜单发布,专业靠谱银川等地会所放心选 - 十大品牌榜
  • 告别小程序富文本难题:mp-html组件实战指南
  • 分布式架构下配额设计:JuiceFS 的实现与典型案例
  • 别再折腾安装包了!Windows上5分钟搞定PostgreSQL 14.4绿色版部署(附Navicat连接测试)
  • KK-HF_Patch:解锁Koikatu完整游戏体验的终极指南