如何用单条语句展示Python-Pandas的describe()表并对比多数据集
嘿,我明白你的痛点了——想把多个数据集的核心统计指标(均值、标准差、最大最小值这些)整合到一张表里,一次性对比展示,而不是零散地看每个groupby结果,对吧?这确实能大大提升结果的可读性,我给你分享两个实用的实现思路,都是用pandas就能搞定的:
方法1:先计算单个数据集统计量,再合并成对比表
先写一个通用函数来提取你需要的统计项,然后对每个数据集应用这个函数,最后把结果合并成横向对比的表格:
import pandas as pd # 定义统计量计算函数,可根据需求增减项 def calculate_key_stats(df): return pd.DataFrame({ 'Mean': df.mean(numeric_only=True), 'Std': df.std(numeric_only=True), 'Max': df.max(numeric_only=True), 'Min': df.min(numeric_only=True) }) # 假设你的三个数据集分别是df1、df2、df3 stats_df1 = calculate_key_stats(df1).assign(Dataset='First_Result_Set') stats_df2 = calculate_key_stats(df2).assign(Dataset='Second_Result_Set') stats_df3 = calculate_key_stats(df3).assign(Dataset='Third_Result_Set') # 合并后转置,得到「统计项 vs 数据集」的对比格式 combined_stats = pd.concat([stats_df1, stats_df2, stats_df3]) comparison_table = combined_stats.pivot( index=combined_stats.index, # 原数据集的列名 columns='Dataset', values=['Mean', 'Std', 'Max', 'Min'] ) # 打印或导出表格 print(comparison_table)
运行后你会得到一张清晰的表:每行是原数据集的列,每列是不同数据集的统计值,所有结果一次性展示。
方法2:处理groupby后的分组统计结果
如果你的需求是基于分组后的统计对比(比如按某列分组后计算各数据集的指标),可以用类似的思路,先对每个数据集做groupby聚合,再合并结果:
# 按「Category」列分组,计算统计量 grouped_df1 = df1.groupby('Category').agg( First_Mean=('Target_Column', 'mean'), First_Std=('Target_Column', 'std'), First_Max=('Target_Column', 'max'), First_Min=('Target_Column', 'min') ) grouped_df2 = df2.groupby('Category').agg( Second_Mean=('Target_Column', 'mean'), Second_Std=('Target_Column', 'std'), Second_Max=('Target_Column', 'max'), Second_Min=('Target_Column', 'min') ) grouped_df3 = df3.groupby('Category').agg( Third_Mean=('Target_Column', 'mean'), Third_Std=('Target_Column', 'std'), Third_Max=('Target_Column', 'max'), Third_Min=('Target_Column', 'min') ) # 按分组键合并所有结果 final_grouped_table = pd.concat([grouped_df1, grouped_df2, grouped_df3], axis=1) print(final_grouped_table)
这样就能看到每个分组下,三个数据集的统计指标对比,不用切换多个表查看。
额外优化:让表格更美观
如果需要更直观的展示,可以用pandas的Styler给表格加样式,比如高亮最大/最小值:
styled_table = final_grouped_table.style.highlight_max(color='#90EE90').highlight_min(color='#FFCCCB') # 导出成HTML文件,方便在浏览器查看或分享 styled_table.to_html('dataset_comparison.html')
内容的提问来源于stack exchange,提问作者Vural Erdogan
相关产品推荐
相关产品推荐

