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

如何在Pandas中按指定总行数(100万)执行统计计算?

基于指定总行数修正Pandas统计计算结果

当然可以实现,核心思路是手动结合**总行数(1,000,000)**和现有非零数据的统计值,修正出符合原数据集的结果——毕竟Pandas默认只会基于当前DataFrame的行数计算,直接用内置方法会得到错误的统计值。

以下是常用统计量的具体计算方式:

1. 均值

均值的本质是「所有数据之和 ÷ 总行数」,现有DataFrame的sum()就是非零数据的总和,直接除以1,000,000即可:

total_sum = df['目标列'].sum()
correct_mean = total_sum / 1_000_000

2. 标准差

标准差需要考虑995,000个0值的偏差贡献,公式为√[Σ(x_i - μ)² ÷ N](其中N=1,000,000,μ是正确均值),可以用两种方式计算:
方式一:基于平方和推导

correct_mean = df['目标列'].sum() / 1_000_000
sum_squares = (df['目标列'] ** 2).sum()
# 方差 = (所有数据平方和 - N×均值²) ÷ N
variance = (sum_squares - 1_000_000 * correct_mean ** 2) / 1_000_000
correct_std = variance ** 0.5

方式二:直接计算偏差平方和

correct_mean = df['目标列'].sum() / 1_000_000
# 非零数据的偏差平方和 + 995000个0的偏差平方和
sum_deviations = ((df['目标列'] - correct_mean) ** 2).sum() + 995_000 * (0 - correct_mean) ** 2
correct_std = (sum_deviations / 1_000_000) ** 0.5

3. 其他统计量

  • 总和:直接用df['目标列'].sum()即可,0值不影响总和结果
  • 中位数:原数据中99.5%都是0,中位数必然是0,无需计算现有数据的中位数
  • 分位数:同理,低百分位(比如50%)的结果都是0,高百分位可结合非零数据分布和总行数调整

如果需要批量处理多列,可以封装成函数:

def get_correct_stats(df, total_rows=1_000_000):
    stats_result = {}
    for col in df.columns:
        col_sum = df[col].sum()
        mean = col_sum / total_rows
        sum_sq = (df[col] ** 2).sum()
        variance = (sum_sq - total_rows * mean ** 2) / total_rows
        std = variance ** 0.5
        stats_result[col] = {
            'mean': mean,
            'std': std,
            'sum': col_sum
        }
    return stats_result

# 调用示例
final_stats = get_correct_stats(your_dataframe)

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

相关产品推荐
方舟 Agent Plan

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

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