PROJECT 01入门
电商销售数据质检审计
E-commerce Sales Data QA Audit
对电商销售数据进行完整的质量审计流程,包括缺失值处理、异常值检测与数据标准化。
缺失值处理IQR 异常检测Z-Score数据标准化MinMaxScaler
项目背景
某电商平台在季度财报前夕,需要对 Q3 销售数据进行质量审计,以确保财报数据的准确性。数据中存在缺失订单金额、异常退货数量和格式不统一的日期字段。
模拟数据集
order_id,product_name,category,quantity,unit_price,total_amount,order_date,return_count
1001,无线鼠标,电子产品,2,89.90,179.80,2024-07-01,0
1002,机械键盘,电子产品,1,,599.00,2024-07-01,1
1003,USB 数据线,配件,5,15.00,75.00,2024/07/02,0
1004,显示器,电子产品,1,2499.00,2499.00,2024-07-02,0
1005,鼠标垫,配件,3,29.90,,2024-07-03,99
1006,,电子产品,1,199.00,199.00,2024-07-03,0
1007,耳机,配件,2,399.00,798.00,2024.07.04,1
1008,笔记本,电子产品,-1,5999.00,-5999.00,2024-07-04,0代码练习区
在下方编辑器中编写你的 Pandas 代码。可记录笔记、编写伪代码,参考答案在下方。
pandas_exercise.py
Loading...
参考答案
reference_solution.py
import pandas as pd
import numpy as np
from scipy import stats
# 1. 加载数据
df = pd.read_csv('sales_data.csv')
# 2. 缺失值处理
# 查看缺失情况
print(df.isnull().sum())
# 数值列用中位数填充
df['unit_price'].fillna(df['unit_price'].median(), inplace=True)
df['total_amount'].fillna(df['quantity'] * df['unit_price'], inplace=True)
# 分类列用众数填充
df['product_name'].fillna(df['product_name'].mode()[0], inplace=True)
# 3. IQR 异常值检测
Q1 = df['return_count'].quantile(0.25)
Q3 = df['return_count'].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
outliers_iqr = df[(df['return_count'] < lower_bound) | (df['return_count'] > upper_bound)]
print(f"IQR 检测异常值: {len(outliers_iqr)} 条")
# 4. Z-Score 异常值检测
z_scores = np.abs(stats.zscore(df['quantity']))
outliers_z = df[z_scores > 3]
# 5. 日期标准化
df['order_date'] = pd.to_datetime(df['order_date'], format='mixed')
# 6. 删除负数数量的异常记录
df = df[df['quantity'] > 0]业务解读
数据质检是数据分析的第一步。缺失值可能来自系统故障或用户未填写,需要根据业务逻辑选择填充策略。IQR 方法对偏态分布鲁棒,Z-Score 对正态分布有效。日期格式统一是数据合并的前提条件。