Python

Анализ вовлеченности пользователей с использованием 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)
топ 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. Не стесняйтесь задавать ценные вопросы в разделе комментариев ниже.


Ссылка на источник

Похожие статьи

Кнопка «Наверх»