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

发布于:2025-05-01 ⋅ 阅读:(35) ⋅ 点赞:(0)

数据清洗的定义

数据清洗(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(可视化数据清洗工具)

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


网站公告

今日签到

点亮在社区的每一天
去签到