Прогнозирование SEO-трафика Google Analytics 4 с помощью Python и Prophet
В этой статье познакомимся с алгоритмом прогнозирования SEO-трафика вашего веб-сайта с помощью Python и библиотеки Prophet на примере данных Google Analytics 4.
Обновление: я выпустил электронное руководство по Google Analytics 4. Бесплатно скачать его можно в формате .PDF по ссылке.
Вступление
Умение прогнозировать будущие показатели вашего бизнеса на основе исторических данных - следующий уровень, к которому должен стремиться каждый веб-аналитик и интернет-маркетолог, работающий с новым счетчиком Google Analytics и временными рядами. Учитывая одну из парадигм, по которой Google развивает GA4, невольно задумываешься о том, какими еще компетенциями и навыками должен обладать специалист в современном мире.
Наверняка вы знаете, что Google Analytics 4 может автоматически прогнозировать поведение пользователей с помощью технологии машинного обучения. Например, оценить вероятность конверсии, которую совершают пользователи в ближайшие 7 дней на основе их активности на вашем сайте или в мобильном приложении за последние 28 дней, или вероятность оттока, то есть когда те, кто был активен, вдруг перестанут проявлять активность. Искусственный интеллект может спрогнозировать и доход от покупки в ближайшие 28 дней на основе поведения пользователя за последние 28 дней.
Недавно в счетчике GA4 появился дополнительный способ идентификации Моделирование. Когда пользователи запрещают отслеживание их действий, количество данных в отчетах резко сокращается. Чтобы устранить пробелы, в дело вступает машинное обучение и специальные алгоритмы. Они могут использоваться для аппроксимации пробелов в данных, которые создаются пользователями, которые отказываются от персонализации рекламы, путем моделирования поведения пользователей, которые согласились с отслеживанием.
Другими словами, Google Analytics будет сам достраивать недостающие данные для тех пользователей, кто отказался от отслеживания, на основе данных тех пользователей, кто был не против, чтобы их отслеживали.
За AI и ML будущее, в этом нет никаких сомнений. Все эти нововведения в Google Analytics 4 так же подтверждают вышеописанное - мы не просто должны уметь анализировать данные, которые смог для нас собрать аналитический инструмент, но и стараться самостоятельно прогнозировать изменения трафика в зависимости от тех или иных событий.
В этом материале я опишу способ прогнозирования SEO-трафика на основе исторических данных вашего счетчика Google Analytics 4 с помощью Python, библиотеки Prophet, браузера и Colab.
Перед тем, как мы это сделаем, сразу хотелось бы отметить следующее:
- чем больше у вас будет исторических данных, тем точнее будет ваша модель и, следовательно, прогнозы;
- целью данной публикации является описание методики и последовательности действий, а не обучение вас работы с Colab, Python и пониманию того, как устроена библиотека Prophet и какие в нее заложены функции. Но зная сам алгоритм, вам будет проще разобраться в отдельных процессах в дальнейшем. Именно поэтому в статье какие-то вещи могут быть упомянуты вскользь и до конца не разбираться (например, как работает API Google Analytics 4, что такое сервисный аккаунт Google, какие еще есть функции в библиотеке Prophet или почему нужны именно такие библиотеки Python, а не другие);
- поскольку программы, библиотеки и сами сервисы постоянно обновляются, я, как автор, не гарантирую полной работоспособности представленного кода через n-ое количество времени. Возможно, вам предстоит переработать его под свои задачи. Обязательно учитывайте дату выхода этого материала при повторении шагов, описанных в этой статье.
Мы будем прогнозировать органический трафик (Organic Search) для данных Google Analytics 4, где рассчитанный тренд корректируется с учетом сезонности и предыдущей периодичности. Сделать прогноз можно разными способами и с помощью различных инструментов, но именно в этой статье речь пойдет о Python, API Google Analytics 4, Prophet и Colab.
Решение текущей задачи будет состоять из трех основных этапов:
- получение данных из Google Analytics 4 о SEO-трафике за определенный период времени;
- моделирование данных с помощью Prophet;
- визуализация данных - показать изменение тренда и смоделированный прогноз.
Давайте начнем.
Получение данных Google Analytics 4
Для того, чтобы получить данные из Google Analytics 4, необходимо:
- создать проект, сервисный аккаунт и включить API Google Analytics в Google Cloud Platform;
- добавить сервисный аккаунт в ресурс Google Analytics 4;
- загрузить файл в Colab;
- установить библиотеку для Python;
- написать код извлечения данных.
Разберем каждый шаг подробнее.
Настройки в Google Cloud Plaftorm
Перейдите по ссылке и создайте новый проект в Google Cloud Platform.
Примечание: для работы вы можете использовать аккаунт без привязанной карты.
Задайте произвольное название в поле Project name (например forecast) и нажмите кнопку Create:
Выбрав проект, в поиске введите Google Analytics Data API и включите API Google Analytics:
С помощью кнопки Enable:
Затем перейдите в раздел IAM & Admin – Service Accounts:
Создайте сервисный аккаунт через Create Service Account:
Введите имя сервисного аккаунта (например: forecast):
Нажмите Done. Будет создан сервисный аккаунт, вы увидите его в списке всех аккаунтов. Напротив него нажмите на иконку с тремя точками и выберите Manage keys:
Затем создайте новый ключ: Add key – Create new key:
Key type – JSON. В завершение нажмите Create:
После этого будет создан файл, который автоматически сохранится у вас локально на компьютере.
Добавление сервисного аккаунта в Google Analytics 4
Откройте этот файл (в блокноте, Notepad++ и т.д.) и скопируйте значение поля client_email:
Откройте свой ресурс Google Analytics 4, с которым планируете работать и для которого будете делать прогноз трафика. Перейдите в раздел Администратор – Ресурс - Управление доступом к ресурсу:
Добавьте нового пользователя:
Для работы с Google Analytics Data API v1 необходимы только разрешения на чтение и анализ (он же Читатель). В поле адреса электронный почты добавьте скопированный на предыдущем шаге e-mail сервисного аккаунта:
В правом верхнем углу нажмите кнопку Добавить. На этом настройки Google Analytics 4 завершены.
Работа с Colab
Чтобы упростить процесс написания кода и повторения тех шагов, которые описаны в этой статье, мы будем использовать Colab. Colaboratory (просто Colab), позволяет писать и выполнять код Python в браузере. При этом:
- не требуется никакой настройки;
- вы получаете бесплатный доступ к графическим процессорам;
- вы можете предоставлять доступ к документам другим людям.
Примечание: вы можете использовать и другие программы для написания кода, например: Jupyter Notebook, PyCharm, Visual Studio Code и т.д.
Перейдите по ссылке под той же учетной записью, что вы создали проект в Google Cloud Plaftorm, и добавьте новый блокнот.
Установка библиотеки
Перейдите в свой блокнот Colab и введите первую команду.
1 |
!pip list |
Нажмите Run. Вы должны увидеть список установленных пакетов:
Среди них будут те, которые нам нужны в дальнейшем - prophet, pystan, pandas, matplotlib. Нам необходимо установить библиотеку google-analytics-data, которая предоставляет программные методы для доступа к данным отчетов Google Analytics 4. Сделать это можно с помощью команды:
1 |
!pip install google-analytics-data |
Введите команду и нажмите Run в своем блокноте Colab. Библиотека начнет устанавливаться. В конце вам отобразиться сообщение типа Successfully installed google-analytics-data-0.13.1 google-api-core-2.8.2 grpcio-status-1.47.0 proto-plus-1.20.6 protobuf-3.20.1. Но при этом вас попросят перезапустить среду выполнения, чтобы использовать недавно установленные версии.
Нажмите Restart Runtime и перезапустите среду выполнения.
В левом меню нажмите на иконку папки и загрузите файл в формате json в сессионное хранилище, который вы получили в Google Cloud Plaftorm после создания сервисного аккаунта.
После того, как он загрузится, откройте его в проекте и убедитесь, что в нем все данные отображаются корректно:
Примечание: ваш загруженный файл будет удален при перезапуске среды выполнения.
Код для извлечения данных на Python
Теперь вы можете извлечь данные, отправив запрос к API Google Analytics 4. В официальной документации Google есть примеры запросов на Python для получения статистики по нужным параметрам и показателям. Вы можете использовать мой нижеприложенный код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
import os from google.analytics.data_v1beta import BetaAnalyticsDataClient from google.analytics.data_v1beta.types import DateRange from google.analytics.data_v1beta.types import Dimension from google.analytics.data_v1beta.types import Metric from google.analytics.data_v1beta.types import Filter from google.analytics.data_v1beta.types import FilterExpression from google.analytics.data_v1beta.types import FilterExpressionList from google.analytics.data_v1beta.types import RunReportRequest PROPERTY_ID = '206854065' START_DATE = '2022-07-01' END_DATE = '2022-07-31' os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "vocal-mountain-355620-fc279c61a21b.json" def ga4(PROPERTY_ID, START_DATE, END_DATE): client = BetaAnalyticsDataClient() request = RunReportRequest(property=f"properties/{PROPERTY_ID}", dimensions=[Dimension(name='date')], metrics=[Metric(name='eventCount')], date_ranges=[DateRange(start_date=START_DATE, end_date=END_DATE)], dimension_filter=FilterExpression(and_group=FilterExpressionList(expressions=[ FilterExpression(filter=Filter(field_name='sessionDefaultChannelGrouping', string_filter=Filter.StringFilter( value='Organic Search', match_type=Filter.StringFilter.MatchType(1)))), FilterExpression(filter=Filter(field_name='eventName', string_filter=Filter.StringFilter( value='session_start', match_type=Filter.StringFilter.MatchType(1))))]))) response = client.run_report(request) print("Report result:") for row in response.rows: print(row.dimension_values[0].value, row.metric_values[0].value) if __name__ == "__main__": ga4(PROPERTY_ID, START_DATE, END_DATE) |
В Colab это выглядит так:
Примечание: при копировании кода не забудьте про отступы. В Python это важно. Может быть такое, что вы все сделаете так, как я показал, но при этом у вас не будет одного отступа, и тогда код будет срабатывать некорректно.
Этот запрос позволяет получить информацию по вашим сеансам с источникам трафика Organic Search за установленный период. В качестве определения количества сеансов используется фильтр по событию session_start, которое срабатывает тогда, когда пользователь начинает новый сеанс на вашем сайте. Итоговый подсчет идет именно по ним.
Любой параметр, показатель, фильтр, порядок данных, диапазон дат и т.д., добавленные в переменную запроса, должны быть добавлены как класс. Именно поэтому в начале кода мы добавляем такие строки:
1 2 3 4 5 6 7 8 |
from google.analytics.data_v1beta import BetaAnalyticsDataClient from google.analytics.data_v1beta.types import DateRange from google.analytics.data_v1beta.types import Dimension from google.analytics.data_v1beta.types import Metric from google.analytics.data_v1beta.types import Filter from google.analytics.data_v1beta.types import FilterExpression from google.analytics.data_v1beta.types import FilterExpressionList from google.analytics.data_v1beta.types import RunReportRequest |
В приведенном выше коде вам необходимо изменить некоторые значения на свои:
- PROPERTY_ID = '206854065' (идентификатор ресурса Google Analytics 4)
- START_DATE = '2022-07-01' (начальная дата выгрузки данных)
- END_DATE = '2022-07-31' (конечная дата выгрузки данных)
И в строке os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "vocal-mountain-355620-fc279c61a21b.json" вам нужно изменить название файла, который вы загрузили в проект, на свое:
Эта строка кода позволит избежать некоторых проблем при управлении разрешениями на Google API. Если вы загрузили этот файл в проект не в корневую папку, то в os.environ["GOOGLE_APPLICATION_CREDENTIALS"] вам надо прописать полный путь к файлу.
Запустив код, вы должны получить ответ в виде SEO-данных из вашего счетчика Google Analytics 4 в формате {Дата, События}, {20220713, 1000}, {…}, … :
Как вы уже знаете, чем больше у вас будет исторических данных, тем точнее будет ваша модель и, следовательно, прогноз. Поэтому рекомендуется выгружать данные из Google Analytics 4 за больший период, чем месяц. Например, за 6-9-12 месяцев.
Прогнозирование данных с помощью Facebook Prophet
В настоящее время существует множество бесплатных и готовых библиотек для выполнения любого типа прогнозирования на основе исторических данных. В этом материале я буду использовать библиотеку Prophet от Facebook *.
* Деятельность американской компании Meta (бывшая Facebook) запрещена в России, организация признана экстремистской.
Prophet - это библиотека с открытым исходным кодом на Python и R от компании Facebook. Она предназначена для прогнозирования временных рядов и часто используется в работе аналитиками данных поскольку, согласно независимым исследованиям разных компаний, обладает высокой точностью предсказаний по сравнению с аналогами. В рамках этой публикации я не буду подробно расписывать все ее возможности, а лишь хочу показать один из примеров ее использовании применительно к данным Google Analytics 4.
Подробнее про Prophet вы можете узнать:
- в официальной документации Facebook;
- в статье "Прогнозирование временных рядов с помощью Prophet: введение";
- в материале "Предсказываем будущее с помощью библиотеки Facebook Prophet";
А также посмотрев лекцию Прогнозирование метрик с помощью Facebook Prophet от Karpov.Courses на YouTube:
Примечание: при изучении чужих статей и кода обращайте внимание на дату публикации, поскольку не так давно библиотека Prophet была изменена (например, та же установка библиотеки: начиная с версии 1.0 имя пакета в PyPI — prophet; до версии 1.0 - fbprophet).
В основе прогноза лежит процедура подгонки аддитивных регрессионных моделей, в которой нелинейные тренды корректируются с учетом ежедневной сезонности, еженедельных и годовых значений, а также учитываются последствия отпускных дней и праздников (например, официальные праздничные и выходные дни - Новый год, Рождество, спортивные мероприятия, культурные события, природные явления. В такие дни поведение и свойства временных рядов могут существенно меняться/колебаться, вызывать всплески и серьезные отклонения. В Prophet вы можете это учесть и гибко настроить условия прогноза благодаря доступным переменным.
Для прогнозирования и визуализации полученных данных нам необходимы библиотеки prophet, pystan, pandas, matplotlib. В Colab они уже все предустановлены, поэтому дальнейший процесс прогноза существенно сокращается. Наша задача будет заключаться только в их импорте.
Prophet находится в каталоге PyPI, поэтому вы можете использовать pip для его установки:
1 |
python -m pip install prophet |
Prophet также можно установить через conda-forge:
1 |
conda install -c conda-forge prophet |
Для библиотеки Prophet:
- начиная с версии 0.6, Python 2 больше не поддерживается;
- начиная с версии 1.0 имя пакета в PyPI — prophet; до версии 1.0 это был fbprophet (в старых статьях в интернете используется именно fbprophet);
- начиная с версии 1.1 минимальная поддерживаемая версия Python — 3.7.
При работе с Prophet:
- создается экземпляр объекта Prophet с нужными атрибутами для прогноза;
- запрашивается метод подгонки для данных, извлеченных из Google Analytics 4, в виде датафрейма. В некоторых случаях этот запрос может занять несколько секунд. Входные данные для Prophet всегда представляют собой датафрейм с двумя столбцами: ds и y. Столбец ds (отметка даты) должен иметь формат, поддерживаемый Pandas, в идеале вида ГГГГ-ММ-ДД для даты или ГГГГ-ММ-ДД ЧЧ:ММ:СС для отметки времени. Столбец y (метрика для изучения/прогноза) должен быть числовым;
- для полученного датафрейма задается количество периодов, до которых должен достигаться прогноз из выбранного диапазона дат, и частоту, с которой данные будут агрегироваться (еженедельно, ежемесячно и т.д.);
- запрашивается метод predict, который назначит каждой строке будущего датафрейма прогнозируемое значение (yhat);
- запрашивается метод plot, чтобы иметь возможность просматривать сгенерированные прогнозы;
- запрашивается метод plot_components, который помогает визуально понять тенденцию и сезонность данных.
Пример сформированного запроса:
1 2 3 4 5 6 7 |
m = Prophet() m.fit(df) future = m.make_future_dataframe(periods=365) forecast = m.predict(future) m.plot(forecast) m.plot_components(forecast) plt.show() |
Prophet очень гибок в настройке и имеет большое количество разных функций. В рамках данной статьи я не берусь рассказывать про них, поскольку некоторые авторы даже выпускают целые книги по работе с данной библиотекой, чего уж говорить об одной публикации.
Наша главная цель - создать прогноз для органического поиска наших данных Google Analytics 4, придерживаясь определенной логике. Например, учитывать снижение количества трафика в выходные и праздничные дни, исключить выбросы, если они имеют место быть, выбрать сезонную модель (аддитивная и мультипликативная сезонность) и т.д.
В отличие от других каналов (например, рекламный трафик, e-mail рассылки или посты в социальных сетях), SEO-трафик обычно имеет мало заметных колебаний (впадин или пиков). Он имеет тенденцию к постепенному росту или снижению с течением времени, и иногда на него влияют сезонные явления. Обычно заметные колебания связаны с обновлениями в алгоритме поисковых систем (Google, Яндекс, Bing и т.д.).
Функция, которую мы будем использовать для прогнозирования, будет выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
def forecasting(x, y, p, f): print('Prophet %s' % prophet.__version__) data = {'ds': x, 'y': y} df = pd.DataFrame(data, columns=['ds', 'y']) m = Prophet(growth='linear', changepoint_prior_scale=0.05, seasonality_mode='additive', daily_seasonality=False, weekly_seasonality=True, yearly_seasonality=False, holidays=None ) m.fit(df) future = m.make_future_dataframe(periods = PERIODS, freq = FREQ) forecast = m.predict(future) print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].head()) fig = m.plot(forecast, xlabel='Date', ylabel='Visits') add_changepoints_to_plot(fig.gca(), m, forecast) m.plot_components(forecast) plt.show() |
Таким образом, мы заносим входные данные в датафрейм, состоящий из двух столбцов ds и y, а затем создаем экземпляр Prophet с необходимым набором атрибутов для прогнозирования:
- growth - тип тренда. Принимает два возможных значения: линейный по умолчанию (linear) и логистический (logistic);
- changepoint_prior_scale - параметр, задающий чувствительность автоматического механизма обнаружения точек излома в тренде временного ряда y (0.05 по умолчанию). Более высокие значение позволят иметь больше таких точек излома (что одновременно увеличит риск переобучения модели);
- seasonality_mode - режим моделирования сезонных компонент. Принимает два возможных значения: аддитивный по умолчанию (additive) и мультипликативный (multiplicative);
- daily_seasonality - параметр настройки дневной сезонности (т.е. закономерных колебаний в пределах дня). Принимает следующие возможные значения: auto (автоматический режим, принят по умолчанию), TRUE, FALSE или количество членов ряда Фурье, с помощью которого аппроксимируется компонента годовой сезонности;
- weekly_seasonality - параметр настройки недельной сезонности (т.е. закономерных колебаний в пределах недели). Возможные значения те же, что и у daily_seasonality;
- yearly_seasonality - параметр настройки годовой сезонности (т.е. закономерных колебаний в пределах года). Возможные значения те же, что и у daily_seasonality;
- holidays - параметр учитывает фактор праздников (Новый год, Рождество, спортивные мероприятия, культурные события, природные явления). Настраиваются с помощью дополнительного атрибута holidays_prior_scale.
Подробнее о параметрах читайте в официальной документации.
После определения всех компонент мы вызываем метод fit командой m.fit(df) передаем исторический датафрейм. Запрос может занять несколько секунд. После этого мы используем функцию make_future_dataframe() с заданным периодом прогнозирования (periods) и частотой (freq). Параметры periods и freq в моем коде вынесены отдельно и объявлены в переменных PERIODS и FREQ соответственно. Поэтому вы легко можете поменять их столько раз, сколько требуется.
Но ее можно задать и явно, например так (периодичность - ежемесячно, периоды - 12 месяцев в год, умноженные на 6 лет):
1 |
future = prophet.make_future_dataframe(periods=12 * 6, freq='M') |
Следующая строка в коде запрашивает метод predict. Он будет присваивать каждой строке future прогнозируемое значение, которое он называет yhat. Если вы передадите исторические даты, это обеспечит подгонку в выборке. Объектом forecast является новый датафрейм, который включает в себя столбец yhat с прогнозом, а также столбцы для компонентов и интервалов неопределенности.
1 |
print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].head()) |
Далее строится прогноз с помощью:
1 2 3 4 |
fig = m.plot(forecast, xlabel='Date', ylabel='Visits') add_changepoints_to_plot(fig.gca(), m, forecast) m.plot_components(forecast) plt.show() |
Визуализация данных
Мы также визуализируем компоненты прогноза с помощью метода m.plot_components(forecast) и добавляем к ним точки изменения тренда (trend changepoints) с помощью функции add_changepoints_to_plot для выявления переломных моментов на графике, то есть когда произошли существенные изменения в тренде временного ряда.
Для демонстрации работы библиотеки Prophet я выгрузил данные по органическому трафику из счетчика Google Analytics 4 с 1 января 2021 года по 31 июля 2022 года, а в качестве периода прогнозирования указал 12 месяцев (periods=12) с разбиением по месяцам (freq='M'). После выполнения кода я получил такие графики и значения:
1 2 3 4 5 6 |
ds yhat yhat_lower yhat_upper 0 2021-01-01 784.432325 478.444877 1059.114418 1 2021-01-02 186.809977 -119.285468 501.274612 2 2021-01-03 217.957192 -67.148836 517.526371 3 2021-01-04 871.614486 552.356172 1168.257148 4 2021-01-05 994.850150 673.042762 1283.668503 |
По оси X отложены даты с учетом прогноза (12 месяцев - значит до сентября 2023 года), а по оси Y отображаются данные по органическому трафику моего блога. Prophet включил исходные данные в виде черных точек, а синяя линия - это модель прогноза. Голубая область - доверительный интервал. С помощью функции add_changepoints_to_plot добавлены красные линии: вертикальные пунктирные линии - это точки изменения, которые Prophet определил, где изменился тренд, а сплошная красная линия - это тренд с удалением всей сезонности.
Помимо этого Prophet отобразит сам тренд и ту сезонность для органического поиска, которую вы задали в настройках запроса. У меня это были weekly_seasonality и yearly_seasonality со значением True:
Исходя из полученных цифр и прогноза с таким набором входных параметров, получается, что к сентябрю 2023 года мой блог osipenkov.ru ждет снижение органического трафика.
В заключение я бы хотел поделиться итоговым кодом, который вы можете использовать в своем проекте Colab, изменив данные в тех настройках, что я описал.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
import pandas as pd import prophet from prophet import Prophet from prophet.plot import add_changepoints_to_plot import matplotlib.pyplot as plt import os from google.analytics.data_v1beta import BetaAnalyticsDataClient from google.analytics.data_v1beta.types import DateRange from google.analytics.data_v1beta.types import Dimension from google.analytics.data_v1beta.types import Metric from google.analytics.data_v1beta.types import Filter from google.analytics.data_v1beta.types import FilterExpression from google.analytics.data_v1beta.types import FilterExpressionList from google.analytics.data_v1beta.types import RunReportRequest PROPERTY_ID = '206854065' START_DATE = '2021-01-01' END_DATE = '2022-07-31' PERIODS = 12 FREQ = 'M' os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "vocal-mountain-355620-fc279c61a21b.json" def ga4(PROPERTY_ID, START_DATE, END_DATE): client = BetaAnalyticsDataClient() request = RunReportRequest(property=f"properties/{PROPERTY_ID}", dimensions=[Dimension(name='date')], metrics=[Metric(name='eventCount')], date_ranges=[DateRange(start_date=START_DATE, end_date=END_DATE)], dimension_filter=FilterExpression(and_group=FilterExpressionList(expressions=[ FilterExpression(filter=Filter(field_name='sessionDefaultChannelGrouping', string_filter=Filter.StringFilter( value='Organic Search', match_type=Filter.StringFilter.MatchType(1)))), FilterExpression(filter=Filter(field_name='eventName', string_filter=Filter.StringFilter( value='session_start', match_type=Filter.StringFilter.MatchType(1))))]))) response = client.run_report(request) x, y = ([] for i in range(2)) for row in response.rows: x.append(row.dimension_values[0].value) y.append(row.metric_values[0].value) print(row.dimension_values[0].value, row.metric_values[0].value) return x, y def forecasting(x, y, p, f): print('Prophet %s' % prophet.__version__) data = {'ds': x, 'y': y} df = pd.DataFrame(data, columns=['ds', 'y']) m = Prophet(growth='linear', changepoint_prior_scale=0.05, seasonality_mode='additive', daily_seasonality=True, weekly_seasonality=True, yearly_seasonality=True, holidays=None ) m.fit(df) future = m.make_future_dataframe(periods = PERIODS, freq = FREQ) forecast = m.predict(future) print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].head()) fig = m.plot(forecast, xlabel='Date', ylabel='Visits') add_changepoints_to_plot(fig.gca(), m, forecast) m.plot_components(forecast) plt.show() if __name__ == "__main__": channel_group, event_count = ga4(PROPERTY_ID, START_DATE, END_DATE) forecasting(channel_group, event_count, PERIODS, FREQ) |
И ссылкой на мой проект Colab, который я использовал при написании этого материала.
Вот таким вот способом с помощью Python и библиотеки Prophet вы можете спрогнозировать рост или падение вашего трафика Google Analytics 4 (необязательно Organic Search), задав соответствующий фильтр при выгрузке статистики.