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

循环生成同结构DataFrame,如何批量计算各单元格统计量(含describe)

批量DataFrame单元格统计量计算方案

核心思路

先把所有生成的DataFrame收集到列表,再通过合并、分组操作,对每个单元格的所有迭代值计算统计量,包括均值、众数或用describe获取完整描述性统计。

步骤与代码实现

  1. 收集所有生成的DataFrame
    循环生成时,把每个DataFrame存入列表,避免直接打印浪费数据:

    import pandas as pd
    import numpy as np
    
    num_iterations = 500
    df_list = []
    
    for i in range(num_iterations):
        df = pd.DataFrame(np.random.randint(0, 10, size=(3, 3)), columns=['A', 'B', 'C'])
        df_list.append(df)
    
  2. 合并DataFrame并分组计算统计量
    用pd.concat把所有DataFrame堆叠,按行索引+列名分组,就能定位到每个单元格的所有迭代值:

    • 计算均值、众数

      # 合并所有df,保留迭代标识和行索引
      combined = pd.concat(df_list, keys=range(num_iterations), names=['iter', 'row'])
      # 按行索引和列分组,计算均值和众数(众数取第一个出现的)
      cell_stats = combined.groupby(['row', combined.columns]).agg(['mean', lambda x: x.mode().iloc[0]])
      # 整理成和原DataFrame一致的结构
      stats_df = cell_stats.unstack(level=1)
      stats_df.columns = ['A_mean', 'A_mode', 'B_mean', 'B_mode', 'C_mean', 'C_mode']
      
    • 用describe获取完整统计量
      如果需要更全面的统计(计数、标准差、分位数等),直接调用describe:

      full_stats = combined.groupby(['row', combined.columns]).describe()
      # 整理结构,方便查看每个单元格的所有统计项
      full_stats_unstacked = full_stats.unstack(level=1)
      
  3. 快速生成单一统计量矩阵
    如果只需要均值或众数的矩阵,可简化操作:

    # 均值矩阵,结构和原DataFrame完全一致
    mean_matrix = pd.concat(df_list).groupby(level=0).mean()
    # 众数矩阵
    mode_matrix = pd.concat(df_list).groupby(level=0).agg(lambda x: x.mode().iloc[0])
    

结果说明

最终生成的stats_df、mean_matrix等结构和原DataFrame完全对应,每个位置的值就是该单元格在500次迭代中的统计结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:27:33