#python #pandas #numpy
#python #pandas #numpy
Вопрос:
Я хотел бы добавить среднее значение и квантили для примерной таблицы, которую я добавил ниже — однако у меня проблемы с квантилями. Это то, что я пробовал до сих пор:
df_grouped = df.groupby('date')
.agg({'delay':'count', 'delay_time':'mean'})
.rename(columns={'delay':'#_delays','delay_time':'Mean_flight_delays'})
.reset_index()
Main_df
date flight_# delay delay_time
2019-01-01 100 1 04h:10min
2019-01-01 123 1 03h:58min
2019-01-01 121 1 04h:12min
2019-01-01 101 1 03h:45min
Output_df
date #_delays Mean_flight_delays 0.25_quantile. 0.50_quantile 0.75_quantile
2019-01-01 100 4:01:15
Ответ №1:
Вот вариант:
df_grouped = (df.groupby('date')
.agg({
'delay': 'count',
'delay_time': [
('delay_mean', lambda x: x.mean()),
('delay_q25', lambda x: x.quantile(0.25)),
('delay_q50', lambda x: x.quantile(0.5)),
('delay_q75', lambda x: x.quantile(0.75)),
]})
.droplevel(0, 1)
.reset_index())
print(df_grouped)
Вывод:
date count delay_mean delay_q25 delay_q50
0 2019-01-01 4 0 days 04:01:15 0 days 03:54:45 0 days 04:04:00
delay_q75
0 0 days 04:10:30
PS Вы также можете установить interpolation
параметр quantile
в соответствии с вашими потребностями (по умолчанию он линейный, см. Документ)