← 返回首页

项目01:数据清洗实战

处理缺失值、异常值,格式化时间序列,计算总价

📊 数据集预览

使用 retail_orders.csv 数据集,包含订单ID、产品、数量、价格、地区、日期等信息。

retail_orders.csv(前5行)

🎯 学习目标

  • 加载CSV数据文件
  • 检查数据的基本信息
  • 识别并处理缺失值
  • 处理异常值
  • 格式化日期时间列
  • 计算新特征(如总价)

📚 知识点讲解

什么是数据清洗?

数据清洗(Data Cleaning)是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。

为什么需要数据清洗?

  • 现实数据通常是不完整的(缺少值)、可能有噪声(错误值)
  • 数据清洗确保数据分析结果的准确性和可靠性
  • 好的数据清洗可以提高模型的性能和预测准确度
💡 小贴士:数据清洗通常占用数据分析项目的60-80%的时间,不要轻视!
⚠️ 常见错误:不要过度清洗!删除太多数据可能会丢失重要信息。

一、数据清洗前的准备

1.1 导入必要工具库

学习导入 Pandas 和 NumPy 库

import pandas as pd
import numpy as np

1.2 读取原始数据

使用 pd.read_csv() 读取 CSV 文件

# 读取CSV文件
df = pd.read_csv('retail_orders.csv')

# 查看前5行数据
print(df.head())

1.3 初步了解数据

使用4个关键命令快速认识数据

# 查看数据基本信息
print(df.info())

# 查看统计描述
print(df.describe())

# 查看数据形状
print(df.shape)

# 查看列名
print(df.columns)

二、数据清洗核心流程

2.1 处理缺失值

缺失值是数据分析中常见的问题,需要特别处理。

# 检查每列的缺失值数量
print(df.isnull().sum())

# 用均值填充数值型列
df['quantity'] = df['quantity'].fillna(df['quantity'].mean())

# 用中位数填充价格列
df['price'] = df['price'].fillna(df['price'].median())

# 删除包含缺失值的行
df_clean = df.dropna()

# 用特定值填充
df['quantity'] = df['quantity'].fillna(0)
💡 小贴士:对于缺失值的处理策略需要根据业务场景决定,常用方法包括:删除、均值/中位数填充、众数填充、插值法等。

2.2 处理重复值

删除完全相同的行,避免重复统计

# 检查重复行数
print(df.duplicated().sum())

# 删除重复行
df = df.drop_duplicates()

# 检查删除后的形状
print(df.shape)

2.3 格式化日期时间

将字符串转换为日期格式,便于时间序列分析

# 转换日期格式
df['order_date'] = pd.to_datetime(df['order_date'])

# 提取年份
df['year'] = df['order_date'].dt.year

# 提取月份
df['month'] = df['order_date'].dt.month

# 提取星期几
df['weekday'] = df['order_date'].dt.weekday

print(df[['order_date', 'year', 'month']].head())

2.4 计算新特征

通过现有特征计算新特征,如总价

# 计算订单总价
df['total'] = df['quantity'] * df['price']

# 计算单价(如果需要)
df['unit_price'] = df['price'] / df['quantity']

print(df[['product', 'quantity', 'price', 'total']].head())

💻 代码实战

在下方代码编辑器中编写并运行完整的数据清洗代码:

01-cleaning/main.py
点击"运行代码"按钮执行