Python Pandas Dataframe Pivot,计算平均值和中位数以及前20名

2024-10-05 13:13:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python创建一个包含计算列的PIVOT表。我有大量的数据在一个数据帧中运行数千个。在

该文件只有几个列,分别是customer alertkey和mttr

enter image description here

预期产量

enter image description here

输出应具有Customer和AlertKey(仅限前5个计数)wise groupby。然后针对每个alertKey对应的平均和中值MTTR

数据帧是通过从数据库的多个表中提取数据来创建的。现在我被困在如何做陈述上了。这在excel中不容易实现,因为我们需要从多个数据库中提取记录+excel Pivot中的中值计算是一个痛苦的过程。而且这个过程需要自动化。在

df.groupby(['Customer','AlertKey']).AlertKey.value_counts().nlargest(20)

The Excel File with Sample Data


Tags: 文件数据数据库过程customerexcel计数pivot
1条回答
网友
1楼 · 发布于 2024-10-05 13:13:55

考虑先为值计数排名创建指标,然后运行groupby().agg()调用:

df['AKCount'] = df.groupby(['Customer'])['AlertKey'].transform('value_counts')
df['AKCountRank'] = df.groupby(['Customer'])['AKCount'].transform(lambda x: x.rank(method='max'))

sub = df[df['AKCountRank'] <= 20]

gdf = sub.groupby(['Customer', 'AlertKey'])['MTTR'].agg(['count','mean','median'])

数据

^{pr2}$

输出

print(gdf)

#                    MTTR                  
#                   count       mean median
# Customer AlertKey                        
# C1       C1A1         2  44.000000   44.0
#          C1A2         1  25.000000   25.0
# C2       C2A5         1  40.000000   40.0
# C3       C3A7         3  37.666667   30.0
# C5       C5A8         2  34.500000   34.5

相关问题 更多 >

    热门问题