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

数据清洗的定义跟实际操作

数据清洗的定义

数据清洗(Data Cleaning) 是指对原始数据进行处理,以纠正、删除或填补不完整、不准确、重复或无关的数据,使其符合分析或建模的要求。数据清洗是数据预处理的关键步骤,直接影响后续分析和机器学习模型的效果。


数据清洗的主要任务

  1. 处理缺失值

    • 删除缺失值(Drop)

    • 填充缺失值(均值、中位数、众数、插值、预测填充)

  2. 处理异常值

    • 删除(如超出合理范围的数据)

    • 修正(如用上下限替换)

  3. 处理重复数据

    • 删除完全重复的行

  4. 格式标准化

    • 统一日期、时间、单位、字符串格式(如"USA" vs "United States")

  5. 数据类型转换

    • 字符串转数值、日期解析、分类变量编码(One-Hot Encoding)

  6. 数据归一化/标准化

    • Min-Max归一化、Z-Score标准化


实际操作案例(Python + Pandas)

案例背景

假设有一份销售数据 sales_data.csv,包含以下字段:

  • order_id(订单ID)

  • customer_name(客户名,可能有缺失或重复)

  • order_date(日期,可能有格式不一致)

  • price(价格,可能有异常值)

  • quantity(数量,可能有缺失值)

数据清洗代码示例

python

复制

下载

import pandas as pd
import numpy as np# 1. 加载数据
df = pd.read_csv("sales_data.csv")# 2. 查看数据基本情况
print(df.head())  # 查看前几行
print(df.info())  # 查看数据类型和缺失情况
print(df.describe())  # 数值统计(均值、最大最小值等)# 3. 处理缺失值
# 删除所有缺失的行(谨慎使用,可能丢失大量数据)
df_cleaned = df.dropna()  
# 或用均值填充数值列
df["quantity"].fillna(df["quantity"].mean(), inplace=True)  
# 用"Unknown"填充文本列
df["customer_name"].fillna("Unknown", inplace=True)  # 4. 处理重复数据
df.drop_duplicates(inplace=True)  # 删除完全重复的行# 5. 处理异常值(假设price不应超过1000)
df = df[df["price"] <= 1000]  # 删除异常值
# 或用上限替换
df["price"] = df["price"].clip(upper=1000)  # 超过1000的值替换为1000# 6. 格式标准化(统一日期格式)
df["order_date"] = pd.to_datetime(df["order_date"], format="%Y-%m-%d")  # 统一为YYYY-MM-DD# 7. 数据标准化(归一化)
df["price_normalized"] = (df["price"] - df["price"].min()) / (df["price"].max() - df["price"].min())# 8. 保存清洗后的数据
df.to_csv("cleaned_sales_data.csv", index=False)

典型数据清洗场景

  1. 电商数据清洗

    • 处理订单数据中的缺失地址

    • 修正商品价格异常(如负值或极大值)

    • 合并重复客户记录

  2. 金融风控数据清洗

    • 填补缺失的交易金额

    • 检测并处理异常交易(如突然大额转账)

  3. 社交媒体数据清洗

    • 去除重复的评论

    • 标准化用户昵称(如大小写统一)


总结

  • 数据清洗目标:提高数据质量,使其适合分析或建模。

  • 常见操作:处理缺失值、异常值、重复数据、格式标准化。

  • 工具推荐

    • Python(Pandas、NumPy)

    • SQL(去重、缺失值处理)

    • OpenRefine(可视化数据清洗工具)

通过数据清洗,可以显著提升后续数据分析的准确性和可靠性。

http://www.xdnf.cn/news/236845.html

相关文章:

  • 文件读取操作
  • Java 事务详解
  • allegro 怎样显示/隐藏铜皮shape?
  • AI时代生产工厂制造业数字化转型培训师培训讲师唐兴通教授专家顾问清华大学讲授AI库存降本增效智能制造供应链生产调度智能管理设备健康
  • Python math 库教学指南
  • Kubernetes 核心组件架构详解
  • git中reset和checkout的用法
  • C语言实现库函数strlen
  • 健康养生:构建健康生活的多维度指南
  • curl和wget的使用介绍
  • 修改apk包名
  • 使用atomic实现无锁方式的全局变量访问
  • 美林数据基于大模型的设备智能运维检修方案—驱动设备运检业务效率跃迁
  • 基于SpringBoot的旅游网站的设计与实现
  • spring boot中@Validated
  • pytorch对应gpu版本是否可用判断逻辑
  • JWT GenTokenParseToken
  • AnimateCC教学:形状补间动画的代码实现
  • 零改造实现MySQL加密:安当TDE透明加密与KSP密钥管理系统的创新实践
  • Kaggle比赛入门攻略(以 Titanic 为例)
  • 玩转MCP
  • C# dataGridView分页
  • JMeter WebSocket 压测详细步骤(支持 ws+proto 协议)
  • flutter 专题 五十六 Google 2020开发者大会Flutter专题
  • 驱动车辆诊断测试创新 | 支持诊断测试的模拟器及数据文件转换生成
  • 斯坦福RGA软件 老版本和兼容Windows 11版本可选
  • 在 OpenSearch 中建立有效的混合搜索: 技术和最佳实践
  • PCB设计工艺规范(四)安规要求
  • 变量char2、*char2、pChar3、*pChar3的存储位置
  • 冰冰一号教程网--介绍采用vuepress搭建个人博客