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

基于Python Pandas简化多SKU组异常值处理流程

批量处理SKU组异常值的方案可行性与实现

问题描述

我有12个对应不同SKU组的DataFrame,需要为每个组识别异常值并生成仅包含原数据中异常值的新DataFrame。目前已经完成了单个SKU组的处理流程(代码如下),现在想把剩余11个DataFrame放进列表里批量执行处理,这样后续新增SKU组时不用重复创建DataFrame,想问这个方案是否可行?

原单组处理代码:

#Data frames created from masterData

SHAPEWEAR_df = grouped_skus.get_group('SHAPEWEAR')

LEGGINGS_df = grouped_skus.get_group('LEGGINGS')

ACTIVEWEAR_df = grouped_skus.get_group('ACTIVEWEAR')

 #etc...

#LEGGINGS_df

LEGGINGS_outliers = find_outliers_IQR(LEGGINGS_df['VOLUME'])
index_hos = LEGGINGS_outliers.index.tolist()


index_hos = LEGGINGS_outliers.index.tolist()
ints = []
for element in index_hos:
    ints.append(int(element))
#print(ints)

outliers_LEGGINGS_df = LEGGINGS_df.loc[ints]

LEGGINGS_outliers.count()

方案可行性与实现

这个方案完全可行,而且是非常高效的优化方向,能彻底避免重复代码,后续新增SKU组时只需在分组列表里添加对应名称,无需额外编写处理逻辑。

批量处理实现步骤

  1. 定义所有需要处理的SKU组名称列表
  2. 遍历列表,逐个取出对应分组的DataFrame并执行异常值识别
  3. 用字典存储每个组的异常值DataFrame,方便后续按SKU组名称调用

优化后的批量处理代码

# 定义需要处理的SKU组名称列表(可继续添加其他SKU组)
sku_groups = ['SHAPEWEAR', 'LEGGINGS', 'ACTIVEWEAR']

# 用字典存储每个SKU组的异常值DataFrame,比单独创建变量更整洁
outliers_dict = {}

for sku_name in sku_groups:
    # 获取当前SKU组的原始DataFrame
    current_df = grouped_skus.get_group(sku_name)
    # 调用异常值识别函数
    sku_outliers = find_outliers_IQR(current_df['VOLUME'])
    # 将异常值索引转为整数(如果原索引不是整数类型)
    outlier_indices = [int(idx) for idx in sku_outliers.index.tolist()]
    # 生成当前组的异常值DataFrame并存入字典
    outliers_dict[f"{sku_name}_outliers_df"] = current_df.loc[outlier_indices]
    # 打印当前组的异常值数量(可选)
    print(f"{sku_name} 组异常值数量:{sku_outliers.count()}")

补充说明

  • 原代码中重复执行了index_hos = LEGGINGS_outliers.index.tolist(),批量代码里已去掉冗余操作
  • 索引转整数的步骤用列表推导式简化,替代了原有的for循环,代码更简洁
  • 后续调用某组异常值数据时,直接使用outliers_dict['SHAPEWEAR_outliers_df']即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:15:38