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 Embed
Download Paste or View Raw
  1. #объединим данные в новый датафрейм, так чтобы ни одна поездка не потерялась и чтобы были ценовые характеристики в каждой поездке
  2. all_in_one = users.merge(riders, on='user_id',how='right')
  3. all_in_one = all_in_one.merge(sub, on='subscription_type', how='left')
  4. print(all_in_one.head())
  5. #выделим в датафрейм поездки по подписке и отдельно - без
  6. riders_ultra = all_in_one.query('subscription_type =="ultra"')
  7. riders_free = all_in_one.query('subscription_type =="free"')
  9. #соберем сводную таблицу методом .groupby
  10. agg_data = all_in_one.groupby(['user_id','month']).agg({'distance':'sum','duration':['sum','count']})
  11. #наведем красоту в названиях колонок и идексах
  12. agg_data.columns = ['distance_sum', 'duration_sum', 'rides_count']
  13. agg_data = agg_data.reset_index()
  14. #объявляем функцию расчета выручки в месяц
  15. def income_func (row):
  16.     if row['user_id'] in riders_ultra['user_id']:
  17.         return 6*row['duration_sum'].round()+199
  18.     if row['user_id'] in riders_free['user_id']:
  19.         return 8*row['duration_sum']+ 50*row['rides_count']
  20. #добавим столбец со стоимостью поездок, применив функцию к каждой строке agg_data
  21. agg_data['income'] = agg_data.apply(income_func, axis=1)      
  22. print(agg_data.head(15))
  23. print(agg_data.tail(15))

Reply to "Re: Re: Untitled"

Here you can reply to the paste above