Анализ вовлеченности пользователей с использованием Python

Анализ вовлеченности пользователей — это основанный на данных подход к оценке и пониманию вовлеченности, взаимодействия и удовлетворенности пользователей продуктом, услугой или платформой. Он включает в себя анализ различных показателей и моделей поведения, чтобы получить представление о поведении и предпочтениях пользователей. Это помогает предприятиям принимать обоснованные решения для улучшения взаимодействия с пользователем, оптимизации маркетинговых стратегий и повышения общей производительности продукта или услуги. Если вы хотите узнать, как проводить анализ вовлеченности пользователей, эта статья для вас. В этой статье я проведу вас через задачу анализа вовлеченности пользователей, используя Питон.
Анализ вовлеченности пользователей: обзор
Анализ вовлеченности пользователей помогает компаниям понять, как люди взаимодействуют с их продуктами или услугами, что позволяет им вносить улучшения, которые делают пользователей более счастливыми и с большей вероятностью останутся с ними. Это помогает компаниям создавать лучший пользовательский интерфейс / UX для своих клиентов и в конечном итоге достигать своих целей.
Анализ вовлеченности пользователей помогает различным видам бизнеса, включая электронную коммерцию, социальные сети, мобильные приложения и онлайн-платформы. Например, компания электронной коммерции может использовать его, чтобы понять, как клиенты перемещаются по своему веб-сайту, какие продукты им нравятся и как долго они остаются на каждой странице. Это помогает компании оптимизировать дизайн своего веб-сайта, персонализировать рекомендации по продуктам и улучшать маркетинговые стратегии для повышения удовлетворенности и лояльности клиентов.
Для анализа вовлеченности пользователей компаниям нужны данные, которые фиксируют, как пользователи взаимодействуют с их продуктом, услугой или платформой. Он включает в себя такую информацию, как количество посещений пользователями веб-сайта или приложения, предпринимаемые ими действия (например, клики или покупки), продолжительность пребывания на странице или в течение сеанса, а также любые отзывы, которые они предоставляют. Я нашел идеальный набор данных для задачи анализа вовлеченности пользователей. Вы можете скачать набор данных с здесь.
Анализ вовлеченности пользователей с использованием Python
Теперь давайте приступим к задаче анализа вовлеченности пользователей, импортировав необходимые библиотеки Python и набор данных:
import pandas as pd import plotly.express as px import plotly.io as pio import plotly.graph_objects as go pio.templates.default = "plotly_white" data = pd.read_csv("bounce rate.csv") print(data.head())
Client ID Sessions Avg. Session Duration Bounce Rate 0 5.778476e+08 367 00:01:35 87.19% 1 1.583822e+09 260 00:01:04 29.62% 2 1.030699e+09 237 00:00:02 99.16% 3 1.025030e+09 226 00:02:22 25.66% 4 1.469968e+09 216 00:01:23 46.76%
Давайте посмотрим на нулевые значения, прежде чем двигаться дальше:
print(data.isnull().sum())
Client ID 0 Sessions 0 Avg. Session Duration 0 Bounce Rate 0 dtype: int64
Теперь давайте посмотрим на статистику столбца:
<class 'pandas.core.frame.DataFrame'> RangeIndex: 999 entries, 0 to 998 Data columns (total 4 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Client ID 999 non-null float64 1 Sessions 999 non-null int64 2 Avg. Session Duration 999 non-null object 3 Bounce Rate 999 non-null object dtypes: float64(1), int64(1), object(2) memory usage: 31.3+ KB None
Средн. Столбцы «Длительность сеанса» и «Показатель отказов» не являются числовыми. Нам нужно преобразовать их в соответствующие типы данных для этой задачи. Вот как мы можем подготовить наши данные:
data['Avg. Session Duration'] = data['Avg. Session Duration'].str[1:] data['Avg. Session Duration'] = pd.to_timedelta(data['Avg. Session Duration']) data['Avg. Session Duration'] = data['Avg. Session Duration'] / pd.Timedelta(minutes=1) data['Bounce Rate'] = data['Bounce Rate'].str.rstrip('%').astype('float') print(data)
Client ID Sessions Avg. Session Duration Bounce Rate 0 5.778476e+08 367 1.583333 87.19 1 1.583822e+09 260 1.066667 29.62 2 1.030699e+09 237 0.033333 99.16 3 1.025030e+09 226 2.366667 25.66 4 1.469968e+09 216 1.383333 46.76 .. ... ... ... ... 994 1.049263e+09 17 7.733333 41.18 995 1.145806e+09 17 5.616667 47.06 996 1.153811e+09 17 0.200000 94.12 997 1.182133e+09 17 1.216667 88.24 998 1.184187e+09 17 2.566667 64.71 [999 rows x 4 columns]
В приведенном выше коде мы удалили первый символ из каждого значения в «Avg. Session Duration», представляющий единицу времени. Затем мы преобразовали значения в «Avg. Продолжительность сеанса» в стандартизированный формат дельты времени, представляющий продолжительность времени. Затем мы преобразовали значения дельты времени в минуты, указав среднюю продолжительность сеанса в числовом формате. Точно так же мы удалили знак процента из каждого значения в столбце «Показатель отказов» и преобразовали их в значения с плавающей запятой, представляя показатель отказов в виде десятичных дробей.
Теперь давайте посмотрим на описательную статистику данных:
Client ID Sessions Avg. Session Duration Bounce Rate count 9.990000e+02 999.000000 999.000000 999.000000 mean 1.036401e+09 32.259259 3.636520 65.307978 std 6.151503e+08 24.658588 4.040562 22.997270 min 1.849182e+05 17.000000 0.000000 4.880000 25% 4.801824e+08 21.000000 0.891667 47.370000 50% 1.029507e+09 25.000000 2.466667 66.670000 75% 1.587982e+09 35.000000 4.816667 85.190000 max 2.063338e+09 367.000000 30.666667 100.000000
Теперь давайте посмотрим на матрицу корреляции, прежде чем двигаться дальше:
# Exclude 'Client Id' column from the dataset data_without_id = data.drop('Client ID', axis=1) # Calculate the correlation matrix correlation_matrix = data_without_id.corr() # Visualize the correlation matrix correlation_fig = px.imshow(correlation_matrix, labels=dict(x='Features', y='Features', color="Correlation")) correlation_fig.update_layout(title="Correlation Matrix") correlation_fig.show()

Анализ показателей отказов
Давайте проанализируем показатель отказов пользователей, чтобы понять вовлеченность пользователей. Показатель отказов относится к проценту пользователей, которые посещают веб-сайт или веб-страницу, но уходят, не предприняв никаких дальнейших действий или не перейдя на другие страницы того же сайта. Проще говоря, он измеряет скорость, с которой посетители уходят с веб-сайта.
Это полезная метрика для анализа вовлеченности пользователей, поскольку она дает представление о поведении пользователей и эффективности веб-сайта или веб-страницы в привлечении и удержании интереса пользователей. Высокий показатель отказов часто указывает на то, что пользователи не находят на сайте того, что ожидали или хотели. Он может указывать на такие проблемы, как плохое взаимодействие с пользователем, нерелевантный контент, медленная загрузка страниц или вводящие в заблуждение маркетинговые кампании. Вот как можно проанализировать Вовлеченность пользователей, анализируя показатели отказов пользователей:
# Define the thresholds for high, medium, and low bounce rates high_bounce_rate_threshold = 70 low_bounce_rate_threshold = 30 # Segment the clients based on bounce rates data['Bounce Rate Segment'] = pd.cut(data['Bounce Rate'], bins=[0, low_bounce_rate_threshold, high_bounce_rate_threshold, 100], labels=['Low', 'Medium', 'High'], right=False) # Count the number of clients in each segment segment_counts = data['Bounce Rate Segment'].value_counts().sort_index() # Visualize the segments segment_fig = px.bar(segment_counts, labels={'index': 'Bounce Rate Segment', 'value': 'Number of Clients'}, title="Segmentation of Clients based on Bounce Rates") segment_fig.show()

Мы создали сегменты показателя отказов и проанализировали количество пользователей в каждом сегменте в приведенном выше коде. Теперь давайте посмотрим на среднюю продолжительность сеанса пользователей в каждом сегменте показателя отказов:
# Calculate the average session duration for each segment segment_avg_duration = data.groupby('Bounce Rate Segment')['Avg. Session Duration'].mean() # Create a bar chart to compare user engagement engagement_fig = go.Figure(data=go.Bar( x=segment_avg_duration.index, y=segment_avg_duration, text=segment_avg_duration.round(2), textposition='auto', marker=dict(color=['#2ECC40', '#FFDC00', '#FF4136']) )) engagement_fig.update_layout( title="Comparison of User Engagement by Bounce Rate Segment", xaxis=dict(title="Bounce Rate Segment"), yaxis=dict(title="Average Session Duration (minutes)"), ) engagement_fig.show()

Итак, мы видим, что у пользователей с низким показателем отказов средняя продолжительность сеанса на веб-сайте составляет около 9,05 минут, а у пользователей с высоким показателем отказов средняя продолжительность сеанса составляет всего 1,43 минуты.
Теперь давайте посмотрим на топ-10 лояльных пользователей по количеству сеансов и средней продолжительности сеанса:
# Calculate the total session duration for each client data['Total Session Duration'] = data['Sessions'] * data['Avg. Session Duration'] # Sort the DataFrame by the total session duration in descending order df_sorted = data.sort_values('Total Session Duration', ascending=False) # the top 10 most loyal users df_sorted.head(10)

Теперь давайте посмотрим на взаимосвязь между средней продолжительностью сеанса и показателем отказов:
# Create a scatter plot to analyze the relationship between bounce rate and avg session duration scatter_fig = px.scatter(data, x='Bounce Rate', y='Avg. Session Duration', title="Relationship between Bounce Rate and Avg. Session Duration", trendline="ols") scatter_fig.update_layout( xaxis=dict(title="Bounce Rate"), yaxis=dict(title="Avg. Session Duration") ) scatter_fig.show()

Таким образом, существует отрицательная линейная зависимость между средней продолжительностью сеанса и показателем отказов (что здесь идеально). Это означает, что большая средняя продолжительность сеанса приводит к более низким показателям отказов.
Анализ удержания пользователей
Теперь давайте проанализируем вовлеченность пользователей, рассчитав количество пользователей, которых платформа сохранила до сих пор. Удержанные пользователи — это лица, которые продолжают использовать или взаимодействовать с продуктом, услугой или платформой в течение определенного периода времени. Это пользователи, которые возвращаются и остаются активными или лояльными к предложению после их первоначального взаимодействия или регистрации.
Удержанные пользователи демонстрируют постоянное участие, повторное использование или продолжающееся взаимодействие с предложением, что указывает на уровень удовлетворенности или ценности продукта или услуги. Компании часто сосредотачиваются на удержании пользователей, чтобы стимулировать рост, повысить лояльность клиентов и добиться устойчивого успеха на рынке.
Теперь вот как мы можем создавать сегменты хранения на основе количества сеансов:
# Define the retention segments based on number of sessions def get_retention_segment(row): if row['Sessions'] >= 32: # 32 is mean of sessions return 'Frequent Users' else: return 'Occasional Users' # Create a new column for retention segments data['Retention Segment'] = data.apply(get_retention_segment, axis=1) # Print the updated DataFrame print(data)
Client ID Sessions Avg. Session Duration Bounce Rate \ 0 5.778476e+08 367 1.583333 87.19 1 1.583822e+09 260 1.066667 29.62 2 1.030699e+09 237 0.033333 99.16 3 1.025030e+09 226 2.366667 25.66 4 1.469968e+09 216 1.383333 46.76 .. ... ... ... ... 994 1.049263e+09 17 7.733333 41.18 995 1.145806e+09 17 5.616667 47.06 996 1.153811e+09 17 0.200000 94.12 997 1.182133e+09 17 1.216667 88.24 998 1.184187e+09 17 2.566667 64.71 Bounce Rate Segment Total Session Duration Retention Segment 0 High 581.083333 Frequent Users 1 Low 277.333333 Frequent Users 2 High 7.900000 Frequent Users 3 Low 534.866667 Frequent Users 4 Medium 298.800000 Frequent Users .. ... ... ... 994 Medium 131.466667 Occasional Users 995 Medium 95.483333 Occasional Users 996 High 3.400000 Occasional Users 997 High 20.683333 Occasional Users 998 Medium 43.633333 Occasional Users [999 rows x 7 columns]
Вышеупомянутая функция принимает строку данных в качестве входных данных. Он назначает сегмент хранения на основе количества сеансов для каждой строки. Если количество сеансов больше или равно 32 (что является средним значением сеансов), функция возвращает «Частые пользователи». В противном случае он возвращает «Случайные пользователи».
Теперь давайте посмотрим на средний показатель отказов по сегментам удержания:
# Calculate the average bounce rate for each retention segment segment_bounce_rates = data.groupby('Retention Segment')['Bounce Rate'].mean().reset_index() # Create a bar chart to visualize the average bounce rates by retention segment bar_fig = px.bar(segment_bounce_rates, x='Retention Segment', y='Bounce Rate', title="Average Bounce Rate by Retention Segment", labels={'Retention Segment': 'Retention Segment', 'Bounce Rate': 'Average Bounce Rate'}) bar_fig.show()

Таким образом, нет большой разницы между средними показателями отказов частых и случайных пользователей. Теперь давайте посмотрим на процент удержанных пользователей:
# Count the number of users in each retention segment segment_counts = data['Retention Segment'].value_counts() # Define the pastel colors colors = ['#FFB6C1', '#87CEFA'] # Create a pie chart using Plotly fig = px.pie(segment_counts, values=segment_counts.values, names=segment_counts.index, color=segment_counts.index, color_discrete_sequence=colors, title="User Retention Rate") # Update layout and show the chart fig.update_traces(textposition='inside', textinfo='percent+label') fig.update_layout(showlegend=False) fig.show()

В данных 1000 пользователей платформа сохранила 29,7% пользователей (297 пользователей), которые часто посещают платформу. Этот коэффициент удержания совсем не плох. Итак, вот как вы можете выполнить анализ вовлеченности пользователей с помощью Python.
Краткое содержание
Анализ вовлеченности пользователей помогает компаниям понять, как люди взаимодействуют с их продуктами или услугами, что позволяет им вносить улучшения, которые делают пользователей более счастливыми и с большей вероятностью останутся с ними. Это помогает компаниям создавать лучший пользовательский интерфейс / UX для своих клиентов и в конечном итоге достигать своих целей. Надеюсь, вам понравилась эта статья об анализе вовлеченности пользователей с использованием Python. Не стесняйтесь задавать ценные вопросы в разделе комментариев ниже.
Ссылка на источник