奶茶店数据大扫除:Pandas重复值与异常值处理指南

关注不迷路,点赞走好运!!!


一、数据厨房的"双胞胎"危机

想象你经营着"代码の茶"奶茶连锁店🧋,某天发现:

同一订单重复录入三次?  
某分店销量突增到1000杯?  
新品试饮评分出现负数?

这些数据异常就像奶茶里的珍珠卡住吸管,必须及时处理!今天带你用Pandas双神器(drop_duplicates、异常检测)化解危机!

原始数据
数据异常
重复值
异常值
订单重复
销量突变

二、重复值清理术:订单去重魔法

2.1 基础去重:删除完全相同的行

import pandas as pd

生成含重复订单的数据
订单数据 = pd.DataFrame({
    '订单号': ['A001', 'A002', 'A002', 'A003', 'A003'],
    '商品': ['珍珠奶茶', '椰果绿茶', '椰果绿茶', '布丁拿铁', '芋圆奶盖'],
    '销量': [1, 2, 2, 3, 1]
})

print("🍵原始订单数据:")
print(订单数据)

一键去重
清洁数据 = 订单数据.drop_duplicates()
print("\n✨清洁后数据:")
print(清洁数据)

输出结果

  订单号     商品  销量
0  A001  珍珠奶茶   1
1  A002  椰果绿茶   2
3  A003  布丁拿铁   3
4  A003   芋圆奶盖   1

2.2 高级去重:指定列与保留策略

保留最新订单(假设数据按时间顺序排列)
高级去重 = 订单数据.drop_duplicates(subset=['订单号'], keep='last')

标记重复订单
订单数据['是否重复'] = 订单数据.duplicated(subset=['订单号'], keep=False)

print("\n🔍标记重复订单:")
print(订单数据)

通过subset指定关键列,keep控制保留策略


三、异常值捕捉术:销量异动雷达

3.1 Z-Score检测法

from scipy import stats

生成异常销量数据
销售数据 = pd.DataFrame({
    '日期': pd.date_range('2024-05-01', periods=10),
    '销量': [50, 48, 53, 1000, 49, 55, 52, 47, 51, 999]
})

计算Z值
z_scores = stats.zscore(销售数据['销量'])
销售数据['异常标记'] = abs(z_scores) > 3

print("\n🚨异常销售警报:")
print(销售数据[销售数据['异常标记']])

3.2 IQR四分位距法

IQR方法检测
Q1 = 销售数据['销量'].quantile(0.25)
Q3 = 销售数据['销量'].quantile(0.75)
IQR = Q3 - Q1

销售数据['异常标记'] = (销售数据['销量'] < (Q1 - 1.5*IQR)) | (销售数据['销量'] > (Q3 + 1.5*IQR))

print("\n📊IQR异常检测结果:")
print(销售数据[销售数据['异常标记']])

两种方法分别适用于不同分布特征的数据


四、异常值处理:数据修复魔法

异常值
处理方式
删除
替换
drop删除
均值替换
插值替换

4.1 删除异常记录

清洁销量 = 销售数据[~销售数据['异常标记']]
print("\n🗑️删除异常后数据:")
print(清洁销量)

4.2 智能替换异常

前后值插值填充
销售数据['销量'] = 销售数据['销量'].where(~销售数据['异常标记'], None).interpolate()

print("\n🔧修复后数据:")
print(销售数据[['日期', '销量']])

利用插值方法保持数据连续性


五、避坑指南:奶茶店长手册

常见事故灾难现场解药配方原理剖析
误删有效数据日销量减少50%先标记后处理避免连带删除
错误阈值设定正常波动被误杀结合业务分析动态调整参数
处理顺序颠倒重复值影响异常检测先去重后检测保证数据纯度
内存溢出程序突然崩溃分块处理数据优化计算资源

六、实战演练:智能清洁系统

def 智能清洁系统(原始数据):
    # 阶段一:重复值处理
    清洁数据 = 原始数据.drop_duplicates(subset=['订单号'], keep='last')
    
    # 阶段二:异常值检测
    z_scores = stats.zscore(清洁数据['销量'])
    异常标记 = abs(z_scores) > 3
    
    # 阶段三:异常值修复
    清洁数据.loc[异常标记, '销量'] = 清洁数据['销量'].median()
    
    # 生成报告
    print(f"清理重复值:{len(原始数据)-len(清洁数据)}条")
    print(f"修复异常值:{sum(异常标记)}处")
    return 清洁数据

print("\n🤖系统运行演示:")
print(智能清洁系统(订单数据))

觉得有用?长按点赞三连击,知识不迷路~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值