- import pandas as pd
- from datetime import datetime, timedelta
- visits = pd.read_csv('ch02_problems03_visits.csv') # журнал сессий
- purchases = pd.read_csv('ch02_problems02_orders.csv') # покупки
- ad_costs = pd.read_csv('ch02_problems02_costs.csv') # траты на рекламу
- # преобразование данных о времени
- visits['session_start'] = pd.to_datetime(visits['session_start'])
- purchases['event_dt'] = pd.to_datetime(purchases['event_dt'])
- min_date = datetime(2020, 7, 11).date() # добавьте самую раннюю дату в отчёте в формате datetime
- max_date = datetime(2020, 8, 10).date()
- # находим количество дней в отчёте
- days_num = (max_date - min_date).days
- # создаём пустую таблицу для рекламных трат
- daily_costs = []
- # перебираем данные о затратах по источникам
- for index, values in ad_costs.iterrows():
- channel_name = values['channel'] # определите канал привлечения
- channel_costs = values['costs'] # и общие рекламные траты на него
- avg_channel_costs = channel_costs / days_num # рассчитайте средние траты за день
- # заполняем таблицу рекламных трат
- for i in range(days_num):
- current_day = min_date + timedelta(i) # рассчитайте текущую дату
- # добавляем строку в таблицу трат
- daily_costs += [[current_day, channel_name, avg_channel_costs]]
- # превращаем таблицу рекламных трат в датафрейм
- daily_costs = pd.DataFrame(daily_costs, columns=['dt', 'channel', 'costs'])
- # преобразуем данные о времени
- daily_costs['dt'] = daily_costs['dt'].dt.date
- print(daily_costs.head(5))