Моё мнение: аналитика это не только и не столько констатация факта. Важнее понимать не где мы сейчас, а где мы будем и какие драйверы для этого есть.
Часто возникает задача прогноза того или иного показателя. Т.е. какой будет конкретная величина (MAU, Turnover и т.д.) через неделю, месяц, квартал. Чаще всего линейно прогнозировать нельзя: надо, как минимум, учитывать сезонность. При этом сезонность может быть как внутри года, так и внутри недели. Не забываем про государственные праздники и т.д. Множество факторов, которые надо уложить в модель.
Если показатель, которые вы прогнозируете достаточно инертен (например MAU), то для решения этой задачи прекрасно подходит библиотека Prophet от FaceBook. С её помощь построение прогноза сводится к 5-7 строчкам кода. При этом под капотом мощнейшие технологии, разработанные в Фейсбуке для целей Фейсбука. Библиотека самостоятельно определяет характер временного ряда и строит функцию повторяющую его.
Сначала покажу пример прогноза, которые я использую в дашбордах:
На графике выше синяя линия - факт показателя, оранжевая - прогноз.
Покажу пример кода, который позволит реализует такой график:
1. Устанавливаем библиотеку (выполняется 1 раз)
$ pip install pystan
$ pip install fbprophet
2. Импортируем библиотеки:
# Python
import pandas as pd
from fbprophet import Prophet
3.Читаем данные в датафрейм:
df = pd.read_csv ( '../examples/example_wp_log_peyton_manning.csv' )
Важно отметить: библиотека Prophet на входе требует датафрейм с двумя колонками: ds - дата, y - значение. Названия колонок именно такие и ни как иначе.
4. Инициализируем объект m, и отдаём ему на обучение наш датафрейм
# Python
m = Prophet ()
m.fit (df)
5. Создаём датафрейм, которые содержит 365 дат от сегодня в будущее (можно больше или меньше). Функция встроена в Prophet
future = m.make_future_dataframe(periods = 365)
6. Запускаем построение прогноза по модели в m для дат из датафрейма future
forecast = m.predict (future) # прогноз
forecast [[ 'ds' , 'yhat' , 'yhat_lower' , 'yhat_upper' ]].tail() # вывод результата
На этом прогнозирование закончено. Прогноз лежит в датафрейме, им можно пользоваться, например, для визуализации:
fig1 = m.plot(forecast)
Вот и всё. Никаких космических технологий. Прогнозы получаются достаточно точными. Главное помнить: хорошие данные на входе, хороший прогноз на выходе.
В этом прелесть Python. Практически любой может использовать технологи Facebook легко и просто