Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Подскажите как дописать код

Music Hj Ученик (36), на голосовании 2 недели назад
Вычислите размеры когорт игроков, привлечённых в каждый из дней до максимально возможной даты: от min_analysis_date до max_analysis_date.
Постройте график, отражающий динамику привлечения пользователей в этот период.
Рассчитайте средний размер когорты и сохраните результат в переменной mean_daily_cohort_size. Приведите её к типу int и выведите на экран.

import pandas as pd
from datetime import datetime, timedelta
from matplotlib import pyplot as plt

users = pd.read_csv('ch02_problems01_users.csv') # профили
visits = pd.read_csv('ch02_problems01_visits.csv') # сессии

# преобразование данных о времени
users['dt'] = pd.to_datetime(users['dt']).dt.date
users['first_ts'] = pd.to_datetime(users['first_ts'])
visits['session_start'] = pd.to_datetime(visits['session_start'])

# доступный интервал привлечения пользователей
min_analysis_date = users['dt'].min()
observation_date = users['dt'].max()

# горизонт анализа
analysis_horizon = 14
# максимально возможная дата привлечения с учётом горизонта
max_analysis_date = observation_date - timedelta(days=analysis_horizon - 1)

# рассчитайте размеры когорт
report = (
users.query('@min_analysis_date < dt and dt < @max_analysis_date') # допишите код
.groupby('dt') # допишите код
.agg({'user_id':'nunique'}) # допишите код
)

ВОТ ЗДЕСЬ ОШИБКА В КОДЕ
report. # постройте график, добавьте сетку
plt.title('Динамика привлечения пользователей') # название графика
plt.xlabel('Дата привлечения') # название оси X
plt.xticks(rotation=45) # угол наклона подписей на оси X
plt.ylabel('Размер когорты') # название оси Y
plt.show()

# посчитайте средний размер когорты
mean_daily_cohort_size = report.mean()
# ваш код здесь

print(mean_daily_cohort_size.astype(int))
# выведите средний размер когорты в виде целого числа
Голосование за лучший ответ
XD Знаток (354) 1 месяц назад
report = (
users.query('@min_analysis_date <= dt and dt <= @max_analysis_date')
.groupby('dt')
.agg({'user_id': 'nunique'})
.reset_index()
)

# Построим график
plt.figure(figsize=(10, 6))
plt.plot(report['dt'], report['user_id'])
plt.title('Динамика привлечения пользователей')
plt.xlabel('Дата привлечения')
plt.xticks(rotation=45)
plt.ylabel('Размер когорты')
plt.grid(True)
plt.show()

# Рассчитаем средний размер когорты
mean_daily_cohort_size = report['user_id'].mean()
print(mean_daily_cohort_size.astype(int))
Похожие вопросы