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

Python pandas实现商品按日去重统计并生成指定结构数据表

正确实现商品销售日期统计的方案

需求核心:按COD_PRODUTO分组,先对每个商品的销售日期DATA去重(单日多次记录仅计1次),再生成包含以下字段的结果表:

  • COD_PRODUTO:商品编码
  • DATA_01:该商品最早销售日期
  • DATA_02:该商品最晚销售日期
  • VENDAS_DIAS:该商品实际销售的天数(去重后的日期总数)

SQL 实现方案

核心逻辑

先通过CTE或子查询提取每个商品的唯一销售日期,再基于去重后的数据集分组聚合计算指标。

WITH vendas_datas_unicas AS (
    SELECT DISTINCT COD_PRODUTO, DATA
    FROM sua_tabela_vendas  -- 替换为你的原始表名
)
SELECT
    COD_PRODUTO,
    MIN(DATA) AS DATA_01,
    MAX(DATA) AS DATA_02,
    COUNT(DATA) AS VENDAS_DIAS
FROM vendas_datas_unicas
GROUP BY COD_PRODUTO
ORDER BY COD_PRODUTO;

关键说明

  • DISTINCT COD_PRODUTO, DATA确保每个商品的同一天只保留一条记录,避免重复统计
  • MIN(DATA)/MAX(DATA)直接取去重后的日期极值,COUNT(DATA)统计实际销售天数

Python Pandas 实现方案

核心逻辑

先对原始数据按商品编码+日期去重,再分组聚合计算对应指标。

import pandas as pd

# 加载原始数据(替换为你的数据源路径/方式)
df_vendas = pd.read_csv('vendas_original.csv')

# 步骤1:去除重复的商品-日期组合
df_datas_unicas = df_vendas.drop_duplicates(subset=['COD_PRODUTO', 'DATA'])

# 步骤2:分组计算指标
df_resultado = df_datas_unicas.groupby('COD_PRODUTO').agg(
    DATA_01=('DATA', 'min'),
    DATA_02=('DATA', 'max'),
    VENDAS_DIAS=('DATA', 'count')
).reset_index()

# 输出或保存结果
df_resultado.to_csv('vendas_estatisticas.csv', index=False)

关键说明

  • drop_duplicates(subset=['COD_PRODUTO', 'DATA'])精准去除单日多次销售的重复记录
  • agg方法一次性定义三个指标的计算规则,简洁高效

常见错误排查

如果之前的agrupa_e_conta_vendas函数未达成目标,大概率是以下原因:

  • 未先对日期去重就直接分组聚合,导致VENDAS_DIAS统计的是销售记录数而非实际天数
  • 分组时未正确锁定COD_PRODUTO作为唯一分组键
  • 日期字段格式异常(如字符串格式未转成日期类型),导致min/max计算错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 08:43:25