Агрегация данных по группам по процентилям - PullRequest
0 голосов
/ 10 ноября 2018

Предположим, у меня есть кадр данных со столбцами: JobTitle, возраст, статистика и дата. Цель состоит в том, чтобы сгруппировать его по JobTitle и Age и применить функции агрегирования к Stats и Date. Столбец Stats будет считан из файла конфигурации. Если он пуст, значением по умолчанию будет «среднее», в противном случае он будет принимать пользовательское число для процентиля.

Вот что я сделал:

import pandas as pd
import numpy as np
aggregate_dict={'Stats':'Mean', 'Date':'min'}

for i in range(0,df.shape[0]):
    if df.Stats[i]:
         temp_StatsName = df.Stats[i]
         aggregate_dict={'Stats':'percentile('+temp_StatsName+')', 'Date':'min'}


df_final=df.groupby(['JobTitle','Age']).agg(aggregate_dict).reset_index()

Кроме того, я также попытался создать свою собственную функцию процентиля как таковую и использовал ее в определении aggregate_dict, но безуспешно:

def percentile(n):
    def percentile_(x):
        return np.percentile(x, n)
    percentile_.__name__ = 'percentile_%s' % n
    return percentile_

Если у вас может появиться предложение о том, как реализовать пользовательский процентиль , когда столбец Stats не пуст, это было бы очень полезно. Мой код может быть не идеальным, я относительно новый в Python. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...