- #объединим данные в новый датафрейм, так чтобы ни одна поездка не потерялась и чтобы были ценовые характеристики в каждой поездке
- all_in_one = users.merge(riders, on='user_id',how='right')
- all_in_one = all_in_one.merge(sub, on='subscription_type', how='left')
- print(all_in_one.head())
- #выделим в датафрейм поездки по подписке и отдельно - без
- riders_ultra = all_in_one.query('subscription_type =="ultra"')
- riders_free = all_in_one.query('subscription_type =="free"')
- #соберем сводную таблицу методом .groupby
- agg_data = all_in_one.groupby(['user_id','month']).agg({'distance':'sum','duration':['sum','count']})
- #наведем красоту в названиях колонок и идексах
- agg_data.columns = ['distance_sum', 'duration_sum', 'rides_count']
- agg_data = agg_data.reset_index()
- #объявляем функцию расчета выручки в месяц
- def income_func (row):
- if row['user_id'] in riders_ultra['user_id']:
- return 6*row['duration_sum'].round()+199
- if row['user_id'] in riders_free['user_id']:
- return 8*row['duration_sum']+ 50*row['rides_count']
- #добавим столбец со стоимостью поездок, применив функцию к каждой строке agg_data
- agg_data['income'] = agg_data.apply(income_func, axis=1)
- print(agg_data.head(15))
- print(agg_data.tail(15))
Re: Re: Untitled
From Small Bushbaby, 4 Months ago, written in Plain Text, viewed 130 times.
This paste is a reply to Re: Untitled from Sole Mosquito
- view diff
URL http://codebin.org/view/a13512e6
Embed
Download Paste or View Raw
— Expand Paste to full width of browser