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

如何使用Python Pandas计算每日交易量的YoY同比增长率

计算每日交易量同比增长率(YoY_Growth)

假设你的DataFrame名为df,包含date(日期列)和volume(交易量列),可以按以下步骤实现:

  1. 确保日期列是datetime类型
    先将日期列转换为Pandas可识别的datetime格式,避免后续处理出错:

    import pandas as pd
    df['date'] = pd.to_datetime(df['date'])
    
  2. 提取月日标识用于匹配同日期数据
    添加一列month_day,用MM-DD格式标记每条记录的月日,这样就能精准匹配不同年份的同一天:

    df['month_day'] = df['date'].dt.strftime('%m-%d')
    
  3. 关联上一年同日期的交易量数据
    复制一份数据集并调整年份标记,将其与原数据按「年份+月日」关联,获取上一年同日的交易量:

    # 复制数据并生成上一年的匹配标识
    df_prev_year = df.copy()
    df_prev_year['match_year'] = df_prev_year['date'].dt.year + 1
    df_prev_year = df_prev_year[['match_year', 'month_day', 'volume']].rename(columns={'volume': 'prev_volume'})
    
    # 关联原数据与上一年数据
    df = df.merge(
        df_prev_year,
        left_on=[df['date'].dt.year, 'month_day'],
        right_on=['match_year', 'month_day'],
        how='left'
    )
    
  4. 计算同比增长率
    用公式(当年交易量 - 上年交易量) / 上年交易量计算同比增长率,对于2020年的2月29日这类仅闰年存在的日期,因无对应上年数据,结果会显示为NaN:

    df['YoY_Growth'] = (df['volume'] - df['prev_volume']) / df['prev_volume']
    
  5. 清理临时列(可选)
    如果不需要month_day和match_year这些临时列,可以删除:

    df = df.drop(columns=['month_day', 'match_year'])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:01:22