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

如何验证Pandas对大型DataFrame执行add()的结果正确性?

DataFrame列对应相加结果的验证方案

针对你用market_df.add(dividends_df, axis=1, fill_value=0)实现的列对应相加操作,以下是适用于228行×23列规模数据的验证方案:

1. 列映射关系验证

确保列对齐规则生效,fill_value参数正确处理缺失列:

  • 检查总列数一致性:用set(market_df.columns).union(set(dividends_df.columns))获取两个DataFrame的所有列集合,确认total_returns.columns与该集合完全匹配。
  • 验证单来源列的结果:
    • 选取仅存在于market_df的列,执行assert (total_returns['目标列名'] == market_df['目标列名']).all(),确认该列值未被修改(因为另一DataFrame无此列,加0后不变)。
    • 同理,选取仅存在于dividends_df的列,验证total_returns对应列与原列值完全一致。

2. 核心对应列相加验证

验证共同列的逐值相加逻辑正确:

  • 全列抽样验证:随机选取5-10个两个DataFrame都存在的列,对每个列执行:
    assert (total_returns[col] == market_df[col].fillna(0) + dividends_df[col].fillna(0)).all()
    
    确认自动相加结果与手动填充空值后相加的结果完全一致。
  • 行抽样验证:随机抽取20-30行样本,逐行对比手动计算结果与total_returns的对应行:
    import numpy as np
    sample_rows = np.random.choice(market_df.index, size=30, replace=False)
    for idx in sample_rows:
        manual_row_sum = market_df.loc[idx].fillna(0).add(dividends_df.loc[idx].fillna(0), fill_value=0)
        assert manual_row_sum.equals(total_returns.loc[idx])
    

3. 空值与特殊值边界验证

确保fill_value参数正确处理空值,极端值计算无误:

  • 空值场景验证:找到market_df或dividends_df中含NaN的位置,检查total_returns对应位置:
    • 若仅一侧为NaN,结果应等于非空值;
    • 若两侧均为NaN,结果应为0。
  • 极端值验证:选取各列的最大值、最小值、负数样本,手动计算相加结果,对比total_returns对应位置的值是否一致。

4. 整体统计量校验

通过宏观统计量快速验证结果合理性:

  • 总求和验证:计算三个DataFrame的全局总和,确认total_returns.sum().sum()等于market_df.sum().sum() + dividends_df.sum().sum()(空值被fill_value=0替换,不影响总和)。
  • 列级统计量对比:对共同列,用np.isclose(total_returns[col].mean(), market_df[col].fillna(0).mean() + dividends_df[col].fillna(0).mean())验证均值的一致性(处理浮点精度问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 04:45:54