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

Python数据分析:如何找出数据集每月最高销售额

技术建议:获取每月最高销售额
  • 第一步:确保日期列是datetime类型
    先检查SaleDate的数据类型,如果是字符串格式,先转换为datetime类型,这是按时间维度分组的基础:

    df['SaleDate'] = pd.to_datetime(df['SaleDate'])
    
  • 第二步:按月份维度分组(核心修正点)
    你之前直接按原始SaleDate分组,会默认按完整日期(精确到天)聚合,所以得到的是每日最高。要改为按年月维度分组,有两种常用方式:

    • 方式1:生成年月周期列(如2023-05),可读性强,适合后续绘图标注
      # 添加年月分组列
      df['YearMonth'] = df['SaleDate'].dt.to_period('M')
      # 按年月分组取最高销售额
      monthly_max = df.groupby('YearMonth', as_index=False)['SalePrice'].max()
      
    • 方式2:拆分年份和月份分别分组,适合需要单独使用年、月字段的场景
      # 直接按年、月分组
      monthly_max = df.groupby(
          [df['SaleDate'].dt.year, df['SaleDate'].dt.month], 
          as_index=False
      )['SalePrice'].max()
      # 重命名分组列让结果更清晰
      monthly_max.rename(columns={'SaleDate_year': 'Year', 'SaleDate_month': 'Month'}, inplace=True)
      
  • 第三步:获取最高销售额对应的完整记录
    如果需要的不只是销售额数值,而是该月最高销售额对应的整行数据(比如具体销售日期、关联的其他字段),可以用transform方法匹配:

    # 标记每行是否为当月最高销售额
    df['IsMonthlyMax'] = df['SalePrice'] == df.groupby(df['SaleDate'].dt.to_period('M'))['SalePrice'].transform('max')
    # 筛选出所有当月最高的行
    monthly_max_rows = df[df['IsMonthlyMax']]
    
  • 额外提示

    • 若SaleDate包含时间戳(如2023-05-20 16:30:00),转换为datetime后提取月份不受时间部分影响
    • 制作堆叠柱状图时,用dt.to_period('M')生成的年月列默认是有序的,能保证图表的时间顺序正确

内容的提问来源于stack exchange,提问作者Jordan Hart-Bryan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:03:12