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

Pandas Pearson相关计算函数if/else判断语法问题求助

问题根因

你的函数判断逻辑失效、输出None是三个语法错误导致的:

  • df.corr(method='pearson')返回的是2*2的相关系数矩阵,你没有提取total_sales和目标评分的交叉相关值,直接对整个矩阵做大小比较。矩阵对角线是变量和自身的相关系数,固定为1.0,永远满足>0.7的条件,所以不管实际交叉相关值是多少,都会触发强正相关的分支。
  • 判断条件外层套了无意义的双层方括号[[]],把布尔判断结果包成了嵌套列表,进一步干扰了条件判断的逻辑。
  • 你把print()的执行结果赋值给result变量,print()本身没有返回值,默认返回None,所以最后打印result必然输出None。
修正后代码
def corfunc(Platform, score_type):
    # 过滤目标平台、对应评分非空的样本
    df5 = df_new[(df_new.platform == Platform) & (df_new[score_type].notna())][['total_sales', score_type]]
    # 绘制六边形分箱图
    df5.plot(x=score_type, y='total_sales', kind='hexbin', gridsize=20, sharex=False, alpha=1)
    # 直接提取两个目标变量的Pearson相关系数浮点值,不使用整个矩阵做判断
    corr_value = df5.corr(method='pearson').loc['total_sales', score_type]
    print(f"Pearson相关系数:{corr_value:.6f}")

    # 对单个相关系数值做阈值判断
    if corr_value > 0.7:
        result = 'There is a strong positive connection'
    elif corr_value < -0.7:
        result = 'There is a strong negative connection'
    else:
        result = 'No/weak connection'
    
    print(result)
    # 按需返回相关系数和判断结果,避免输出None
    return corr_value, result
执行效果验证

执行corfunc('PS3', 'critic_score')时,函数会正确提取到0.379961的相关值,输出如下,不会再出现误判和None值:

Pearson相关系数:0.379961
No/weak connection

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:03:25