如何识别并计算同日同商品在不同地区的成本差异

秋强酱_5546

秋强酱_5546

2026-11-01

789人浏览

原创

如何识别并计算同日同商品在不同地区的成本差异

本文介绍使用 pandas 按日期和商品分组,快速识别同一商品在不同地区是否存在价格差异,并计算各地区相对于当日最高价的差值。

本文介绍使用 pandas 按日期和商品分组,快速识别同一商品在不同地区是否存在价格差异,并计算各地区相对于当日最高价的差值。

在零售、分销或供应链分析中,常需监控商品定价一致性——例如,某日某商品(如 Apple)在多个销售区域(KA、TN、AP)是否执行统一售价。若存在价差,还需量化差异程度(如“AP 比 KA 低 1.0 元”)。Pandas 提供了高效、向量化的方法解决该问题,无需循环或复杂合并。

核心思路是:以 Date 和 item 为组合键进行分组,对每组内的 cost 计算极差信息(如最大值),再与原始成本做差,得到每个记录相对于组内最高价的偏离量。

以下为完整实现步骤:

✅ 步骤 1:构造示例数据

import pandas as pd

df = pd.DataFrame({
    'distributor': ['GEC'] * 9,
    'Location': ['KA', 'TN', 'AP', 'KA', 'TN', 'AP', 'KA', 'TN', 'AP'],
    'Date': ['2025-02-01'] * 3 + ['2025-02-02'] * 3 + ['2025-02-03'] * 3,
    'item': ['Apple', 'Apple', 'Apple', 'Orange', 'Orange', 'Orange', 'Banana', 'Banana', 'Banana'],
    'cost': [10.0, 10.0, 9.0, 8.0, 7.0, 8.5, 6.0, 6.0, 6.0]
})

✅ 步骤 2:计算“相对于当日同品最高价的差值”

df = df.assign(
    difference=df.groupby(['Date', 'item'])['cost'].transform('max') - df['cost']
)

该语句含义:

  • groupby(['Date', 'item']) 将数据按日期+商品精细分组(如 '2025-02-01' + 'Apple' 为一组);
  • .transform('max') 对每组 cost 求最大值,并广播回原索引长度,确保结果与原始 DataFrame 行数对齐;
  • 最后用该最大值减去原始 cost,即得每条记录的“降价幅度”(若为 0,说明该地为当日最高价;若为正数,说明低于最高价)。

运行后输出如下:

  distributor Location        Date    item  cost  difference
0         GEC       KA  2025-02-01   Apple  10.0         0.0
1         GEC       TN  2025-02-01   Apple  10.0         0.0
2         GEC       AP  2025-02-01   Apple   9.0         1.0
3         GEC       KA  2025-02-02  Orange   8.0         0.5
4         GEC       TN  2025-02-02  Orange   7.0         1.5
5         GEC       AP  2025-02-02  Orange   8.5         0.0
6         GEC       KA  2025-02-03  Banana   6.0         0.0
7         GEC       TN  2025-02-03  Banana   6.0         0.0
8         GEC       AP  2025-02-03  Banana   6.0         0.0

? 进阶洞察:快速识别存在价差的商品日

若只需标记“哪些 (Date, item) 组存在价格不一致”,可进一步聚合:

price_varies = df.groupby(['Date', 'item'])['cost'].agg(['min', 'max']).query('min != max')
print(price_varies)

输出将仅显示有差异的组(如 Apple 和 Orange),便于运营人员聚焦核查。

⚠️ 注意事项

  • transform 是关键:它保留原始索引结构,避免 agg 导致的维度坍缩;
  • 若需“绝对差异范围”(如最大–最小),可用 df.groupby(['Date','item'])['cost'].agg(lambda x: x.max() - x.min());
  • 确保 Date 列为 datetime 类型(可用 pd.to_datetime(df['Date']) 转换),便于后续时间序列分析;
  • 多级分组(如增加 distributor)可扩展至跨渠道比价场景。

通过这一简洁而强大的链式操作,你不仅能秒级识别定价异常,还能直接量化偏差,为价格合规审计与动态调价提供可靠数据基础。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

2025.12.04

340

15

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

2026.01.31

272

21

Python数据分析与Pandas高级实战
Python数据分析与Pandas高级实战

本专题围绕 Python 数据分析展开,系统讲解 Pandas 的高级用法,包括数据清洗、透视表、时间序列分析以及多表合并与分组操作。通过实战案例,帮助开发者掌握高效处理与分析数据的方法,提高数据处理效率与分析能力。

2026.04.13

751

25

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

100

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

60

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

220

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

140

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

120

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

80

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习