12311k

Untitled

Jan 15th, 2020
1,177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. import pandas as pd
  2. import datetime as dt
  3. import numpy as np
  4.  
  5. orders = pd.read_csv('/datasets/data_for_tasks_3.csv', sep=',')
  6. orders['date'] = orders['date'].map(lambda x: dt.datetime.strptime(x, '%d/%m/%Y'))
  7.  
  8. visitors = pd.read_csv('/datasets/data_for_tasks_3_visitors.csv', sep=',')
  9. visitors['date'] = visitors['date'].map(lambda x: dt.datetime.strptime(x, '%d/%m/%Y'))
  10.  
  11. print(orders.head(5))
  12. print(visitors.head(5))
  13.  
  14. datesGroups = orders[['date','group']].drop_duplicates()
  15.  
  16. ordersAggregated = datesGroups.apply(
  17. lambda x: orders[np.logical_and(orders['date'] <= x['date'], orders['group'] == x['group'])].agg({
  18. 'date' : 'max',
  19. 'group' : 'max',
  20. 'orderId' : pd.Series.nunique,
  21. 'userId' : pd.Series.nunique,
  22. 'revenue' : 'sum'}), axis=1).sort_values(by=['date','group'])
  23.  
  24. visitorsAggregated = datesGroups.apply(
  25. lambda x: visitors[np.logical_and(visitors['date'] <= x['date'], visitors['group'] == x['group'])].agg({
  26. 'date' : 'max',
  27. 'group' : 'max',
  28. 'visitors' : 'sum'}), axis=1).sort_values(by=['date','group'])
  29.  
  30. cummulativeData = ordersAggregated.merge(visitorsAggregated, left_on=['date', 'group'], right_on=['date', 'group'])
  31. cummulativeData.columns = ['date', 'group', 'orders', 'buyers', 'revenue', 'visitors']
  32.  
  33. print(cummulativeData.head(5))
Advertisement
Add Comment
Please, Sign In to add comment