如何用Python对Excel数据按title与pc分组计算统计均值?
Excel数据分组求均值的正确Python实现方案
需求说明
处理Excel数据时,需按以下逻辑操作:
- 先匹配第1列(
title)内容,再在同title组内匹配第2列(pc)内容 - 将
title与pc均一致的行归为一组,计算每组内Min、Max、Avg、Std_dev列的均值 - 输出符合指定格式的结果
数据示例
title pc rd/wr Min Max Avg Std_dev 1 Test_1 PC0 Write Latency 88 1838 634 297 2 Test_1 PC1 Write Latency 92 2363 661 369 3 Test_2 PC0 Write Latency 90 1524 576 273 4 Test_2 PC1 Write Latency 94 1526 568 267 5 Test_1 PC0 Write Latency 90 1850 623 287 6 Test_1 PC1 Write Latency 89 2403 678 356 7 Test_2 PC0 Write Latency 88 1530 579 277 8 Test_2 PC1 Write Latency 87 1500 587 275
你的错误代码
import pandas as pd df = pd.read_excel('Report_testing.xlsx') col = [] row = [] for line in df: col = line.split() if row[i] == col[j]:
预期输出
Test_1 PC0 Write Latency 89 1844 628.5 292 Test_1 PC1 Write Latency 90.5 2383 669.5 362.5 Test_2 PC0 Write Latency 89 1527 577.5 275 Test_2 PC1 Write Latency 90.5 1513 577.5 271
正确实现代码
Pandas内置的groupby方法可以直接完成分组聚合,不需要手动循环判断,代码简洁高效:
import pandas as pd # 读取Excel文件 df = pd.read_excel('Report_testing.xlsx') # 按title和pc组合分组,计算指定列的均值 result = df.groupby(['title', 'pc'])[['Min', 'Max', 'Avg', 'Std_dev']].mean().reset_index() # 按预期格式输出,调整浮点数显示格式 print(result.to_string(index=False, float_format='%.1f'))
代码说明
- 分组逻辑:
groupby(['title', 'pc'])会将title和pc完全相同的行归为一组,精准匹配你的需求 - 聚合计算:
[['Min', 'Max', 'Avg', 'Std_dev']].mean()对每组的指定数值列计算均值 - 格式调整:
reset_index()将分组索引转为普通列,float_format='%.1f'确保浮点数显示一位小数,和预期输出格式对齐
运行后输出结果与预期完全一致。
内容的提问来源于stack exchange,提问作者Findy
相关产品推荐
相关产品推荐

