使用python代码实现电商用户行为分析

使用python实现电商用户行为分析 ​​

描述​​:分析电商平台用户行为数据(点击、购买、收藏等),使用Pandas和Matplotlib统计用户活跃时段、热销商品类别,并用Seaborn绘制行为趋势图。 ​​

工具​​:Pandas, NumPy, Matplotlib/Seaborn ​​

数据集​​:可从Kaggle获取用户行为日志(如ecommerce-behavior-data)

以下是一个完整的电商用户行为分析Python实现方案,使用Pandas处理数据、Matplotlib/Seaborn进行可视化:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.ticker import FuncFormatter

# 设置中文显示(如果需要显示中文)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 读取数据(假设数据文件名为user_behavior.csv)
try:
    # 从Kaggle下载的数据集可能包含这些列:timestamp, user_id, product_id, category, behavior_type
    df = pd.read_csv('user_behavior.csv', parse_dates=['timestamp'])
    
    # 若时间列为其他名称(如event_time),需调整列名
    # df = pd.read_csv('user_behavior.csv', parse_dates=['event_time'], 
    #                  names=['timestamp', 'user_id', 'product_id', 'category', 'behavior_type'])
    
except FileNotFoundError:
    print("文件未找到!请从Kaggle下载数据集:https://www.kaggle.com/datasets/mkechinov/ecommerce-behavior-data")
    exit()

# 1. 数据处理
# 添加时间字段
df['hour'] = df['timestamp'].dt.hour
df['date'] = df['timestamp'].dt.date
df['day_name'] = df['timestamp'].dt.day_name()

# 2. 用户活跃时段分析
hourly_activity = df.groupby('hour')['user_id'].count().reset_index(name='count')

# 3. 热销商品类别分析(假设'purchase'表示购买)
purchase_data = df[df['behavior_type'] == 'purchase']
top_categories = purchase_data.groupby('category')['product_id'] \
                    .count() \
                    .sort_values(ascending=False) \
                    .head(10) \
                    .reset_index(name='purchases')

# 4. 行为趋势分析
daily_trend = df.groupby('date')['behavior_type'] \
                .value_counts() \
                .unstack() \
                .fillna(0)

# 5. 可视化
fig, axes = plt.subplots(3, 1, figsize=(15, 18))

# 用户活跃时段(小时)
sns.barplot(x='hour', y='count', data=hourly_activity, 
            palette='Blues_d', ax=axes[0])
axes[0].set_title('每小时用户活跃度')
axes[0].set_xlabel('小时')
axes[0].set_ylabel('行为计数')

# 热销商品类别
sns.barplot(x='purchases', y='category', data=top_categories, 
            palette='viridis', ax=axes[1])
axes[1].set_title('热门商品类别Top10')
axes[1].set_xlabel('购买次数')
axes[1].set_ylabel('商品类别')

# 行为趋势(按天)
sns.lineplot(data=daily_trend, dashes=False, ax=axes[2])
axes[2].set_title('用户行为趋势(每日)')
axes[2].set_xlabel('日期')
axes[2].set_ylabel('行为计数')
axes[2].legend(title='行为类型')
axes[2].xaxis.set_major_locator(plt.MaxNLocator(10))

plt.tight_layout()
plt.savefig('ecommerce_analysis.png', dpi=300)
plt.show()

# 6. 附加分析:按星期分析用户行为
weekday_order = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
weekday_activity = df.groupby(['day_name', 'behavior_type'])['user_id'] \
                    .count() \
                    .reset_index(name='count') \
                    .sort_values('count', ascending=False)

plt.figure(figsize=(12, 6))
sns.barplot(x='day_name', y='count', hue='behavior_type', 
            data=weekday_activity, order=weekday_order,
            palette='Set2')
plt.title('每周用户行为分布')
plt.xlabel('星期')
plt.ylabel('行为计数')
plt.tight_layout()
plt.savefig('weekly_behavior.png', dpi=300)

使用说明:

​1.数据集准备​​:

从Kaggle下载电商行为数据(如eCommerce Behavior Data)

确保包含以下列(列名可能需要调整):

  • timestamp:行为时间戳
  • user_id:用户ID
  • product_id:商品ID
  • category:商品类别
  • behavior_type:行为类型(点击、购买、收藏等)
2.安装依赖​​:
pip install pandas numpy matplotlib seaborn

3.关键分析点​​:

  • ​用户活跃时段​​:展示一天中24小时内的用户行为分布
  • ​热销商品类别​​:统计购买次数最多的前10个商品类别
  • ​行为趋势​​:展示不同行为类型(点击/购买/收藏)随时间变化趋势
  • ​周行为分析​​:展示不同星期的用户行为分布(单独图表)

​4.结果输出​​:

  • 生成三合一图表:活跃时段、热销类别、行为趋势
  • 单独输出每周行为分析图
  • 图像保存为高清PNG格式(600dpi)

数据分析扩展建议:

​1.用户分群分析​​:
# 区分新老用户(示例)
df['user_type'] = np.where(df.groupby('user_id')['timestamp'].transform('min') == df['timestamp'], '新用户', '老用户')
2.转化漏斗分析​​:
# 计算行为转化率
funnel = df.groupby('behavior_type')['user_id'].nunique().reset_index()
funnel['ratio'] = funnel['user_id'] / funnel['user_id'].max()
3.RFM模型​​(最近购买、购买频率、购买金额):
# 需有订单金额数据
rfm = purchase_data.groupby('user_id').agg({
    'timestamp': 'max',        # 最近购买时间
    'product_id': 'count',     # 购买次数
    'price': 'sum'             # 总金额(假设有价格列)
})
4.协同过滤推荐​​:
# 使用surprise库实现
from surprise import Dataset, Reader, SVD

# 创建用户-商品评分矩阵(基于行为次数)
interactions = df.groupby(['user_id', 'product_id']).size().reset_index(name='interactions')

这些扩展分析可以帮助构建个性化推荐系统和用户画像系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vinceri

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值