You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas校验prod_price字段价格 移除明显错误的异常数据行

校验prod_price字段删除异常数据行方案

针对你这个宠物商品订单数据集,直接按下面的逻辑处理就行,能覆盖所有明显价格错误,大数据量下运行也不会出问题。

异常判定规则

价格属于强业务规则字段,明显错误的判定不需要复杂模型,按常识和业务逻辑卡阈值即可:

  • 非数值类型的价格:比如混入字符串、空值
  • 小于等于0的价格:商品单价不可能为0、负数
  • 同一条码(prod_upc是商品唯一标识,同UPC一定是同一款标品)的价格偏离标准定价10%以上的:属于录入时打错数字的错误

可直接运行的处理代码

import pandas as pd
import numpy as np

from checker.binder import binder; binder.bind(globals())
from intro_data_analytics.check_scrubbing import *

df = pd.read_csv('data/inu_neko_orderline.csv')

# 第一步:统一把价格字段转成数值格式,无法转换的脏数据直接置为空值
df['prod_price'] = pd.to_numeric(df['prod_price'], errors='coerce')

# 筛掉基础异常:空值、价格小于等于0的行
df = df[df['prod_price'] > 0].copy()

# 第二步:校验同商品价格一致性,筛掉录入错误的异常价格
# 取每个UPC对应商品出现频次最高的价格作为标准定价
upc_correct_price = df.groupby('prod_upc')['prod_price'].agg(
    lambda x: x.mode()[0] if not x.mode().empty else x.median()
).to_dict()
df['ref_price'] = df['prod_upc'].map(upc_correct_price)

# 剔除和标准定价偏差超过10%的错误行,正常标品定价不会有这么大的随机波动
df = df[abs(df['prod_price'] - df['ref_price']) / df['ref_price'] <= 0.1].copy()

# 删除临时辅助列
df.drop(columns=['ref_price'], inplace=True)

之前处理出错的常见原因

  • 读入csv时prod_price列混有字符串类脏值,没有先转数值类型就做大小判断,会触发类型错误或者判断逻辑失效
  • 没有用prod_upc这个商品唯一标识做分组校验,直接全表设价格上下限的话,不同品类商品价格差很大(零食类十几元、窝具类几十元),很容易漏判错判

你贴的数据集预览里能看到所有行的total_sales都为0,这个字段后续也可以加校验:正常total_sales应该等于prod_price * trans_quantity,如果和计算值偏差过大也属于错误行,可以按需补充规则。

内容的提问来源于stack exchange,提问作者devina pandey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 03:54:03