如何使groupby.apply()运行

2024-10-02 08:21:46 发布

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

我做了一些特色工程如下:

def do_group_mean(df, group_cols, cols):
    agg_name = ('{}_by_{}_{}'.format(('_'.join(group_cols)), (cols), ('mean')))
    df = df.merge(df[group_cols + [cols]].groupby(group_cols)[cols].mean()
           .reset_index().rename(columns={cols: agg_name}), on=group_cols, how='left')    
    return df

df_uni = do_group_mean(df_uni, ['reqrealip'], 'hour')
df_uni = do_group_mean(df_uni, ['reqrealip'], 'hour_cut')
df_uni = do_group_mean(df_uni, ['reqrealip'], 'day')
df_uni = do_group_mean(df_uni, ['reqrealip'], 'day_cut')

df_uni = do_group_mean(df_uni, ['adidmd5'], 'hour')
df_uni = do_group_mean(df_uni, ['adidmd5'], 'hour_cut')
df_uni = do_group_mean(df_uni, ['adidmd5'], 'day')
df_uni = do_group_mean(df_uni, ['adidmd5'], 'day_cut')

df_uni = do_group_mean(df_uni, ['imeimd5'], 'hour')
df_uni = do_group_mean(df_uni, ['imeimd5'], 'hour_cut')
df_uni = do_group_mean(df_uni, ['imeimd5'], 'day')
df_uni = do_group_mean(df_uni, ['imeimd5'], 'day_cut')

df_uni = do_group_mean(df_uni, ['reqrealip_adidmd5'], 'hour')
df_uni = do_group_mean(df_uni, ['reqrealip_adidmd5'], 'hour_cut')
df_uni = do_group_mean(df_uni, ['reqrealip_adidmd5'], 'day')
df_uni = do_group_mean(df_uni, ['reqrealip_adidmd5'], 'day_cut')

df_uni = do_group_mean(df_uni, ['reqrealip_imeimd5'], 'hour')
df_uni = do_group_mean(df_uni, ['reqrealip_imeimd5'], 'hour_cut')
df_uni = do_group_mean(df_uni, ['reqrealip_imeimd5'], 'day')
df_uni = do_group_mean(df_uni, ['reqrealip_imeimd5'], 'day_cut')

df_uni = do_group_mean(df_uni, ['ip_adidmd5'], 'hour')
df_uni = do_group_mean(df_uni, ['ip_adidmd5'], 'hour_cut')
df_uni = do_group_mean(df_uni, ['ip_adidmd5'], 'day')
df_uni = do_group_mean(df_uni, ['ip_adidmd5'], 'day_cut')

df_uni = do_group_mean(df_uni, ['ip_imeimd5'], 'hour')
df_uni = do_group_mean(df_uni, ['ip_imeimd5'], 'hour_cut')
df_uni = do_group_mean(df_uni, ['ip_imeimd5'], 'day')
df_uni = do_group_mean(df_uni, ['ip_imeimd5'], 'day_cut')

df_uni的样本数为110000。
这些代码已经运行了大约3个小时。
我发现CPU的使用率总是低于10%。所以我想我应该通过并行处理来优化这些代码。然后我发现一个名为pandarallel的python包可以以一种简单的方式并行处理groupby.apply()。但它不支持Windows上的
所以我想知道是否有其他方法可以优化groupby.apply(),这些代码和CPU使用率。
提前谢谢


Tags: 代码ipdfgroupmeandounicols

热门问题