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

如何用Python Pandas创建带MTTR均值、中位数的Top5分组透视表?

嗨,我来帮你搞定这个Pandas透视表的需求!针对你说的海量数据,我们得用高效的步骤来处理,避免冗余计算,一步步来:

步骤1:筛选每个客户下频次Top5的AlertKey

直接在原始大表上操作会很慢,所以先做聚合统计再筛选是更高效的方式:

import pandas as pd

# 第一步:统计每个(customer, alertkey)组合的出现频次
alert_freq = df.groupby(['customer', 'alertkey']).size().reset_index(name='occurrence_count')

# 第二步:对每个customer,筛选出occurrence_count排名前5的alertkey
top5_per_customer = alert_freq.groupby('customer').apply(
    lambda group: group.nlargest(5, 'occurrence_count')
).reset_index(drop=True)

# 第三步:把筛选结果和原始表关联,只保留符合条件的行(减少后续计算的数据量)
filtered_df = df.merge(top5_per_customer[['customer', 'alertkey']], on=['customer', 'alertkey'])
步骤2:生成包含均值和中位数的透视表

有了筛选后的数据集,我们就可以用pivot_table生成需要的统计结果:

# 创建透视表,按customer和alertkey分组,计算mttr的均值和中位数
result_pivot = filtered_df.pivot_table(
    index=['customer', 'alertkey'],
    values='mttr',
    aggfunc=['mean', 'median']
).reset_index()

# 重命名列名,让结果更易读
result_pivot.columns = ['customer', 'alertkey', 'mttr_average', 'mttr_median']

# 查看最终结果
print(result_pivot.head())
额外优化建议(针对超大规模数据)

如果数据量已经大到单进程Pandas处理吃力:

  • 可以用dask.dataframe替代,它支持并行分块计算,语法和Pandas几乎一致
  • 第一步的频次统计df.groupby(['customer', 'alertkey']).size()已经是高效操作,尽量避免在原始大表上用transform生成额外列,减少内存占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:40:24