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

Pandas按日期分组计算多列相关性时出现NaN值问题求助

分组计算相关系数出现NaN的原因及解决方法

常见原因

  • 分组样本量不足:计算相关系数要求每组至少有2个不同的观测值,如果某个month_year分组只有1行数据,或者所有行的数值完全一致,就会输出NaN。
  • 分组内列方差为0:比如某广告列(如Bing Ads、Criteo)在某个月份里全是0,或者所有值完全相同,此时计算相关系数时分母为0,结果会变成NaN。

排查与解决方法

  1. 检查分组样本数
    先确认每个月份分组的行数:
print(m.groupby('month_year').size())

如果存在行数小于2的分组,可直接过滤掉这些分组后再计算:

# 过滤样本量≥2的分组
filtered_data = m.groupby('month_year').filter(lambda group: len(group) >= 2)
m2 = filtered_data.groupby('month_year')[
    ['units', 'revenue', 'transactions', 'Sessions', 'Bing Ads',
     'Criteo','Facebook', 'Google Ads', 'Google Shopping']
].corr()
  1. 检查分组内列的方差
    查看每个分组中各列的方差,确认是否有方差为0的列:
group_var = m.groupby('month_year')[
    ['units', 'revenue', 'transactions', 'Sessions', 'Bing Ads',
     'Criteo','Facebook', 'Google Ads', 'Google Shopping']
].var()
print(group_var)

如果某列在分组内方差为0,可选择:

  • 移除这些方差为0的列后再计算相关系数
  • 对这类列做合理的数据填充(比如用同列其他月份的均值,需根据业务场景判断)

内容的提问来源于stack exchange,提问作者Syed Farhan Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:27:22