当前位置:首页>python>Python 实战:电商用户行为全流程分析

Python 实战:电商用户行为全流程分析

  • 2026-10-11 08:24:02
Python 实战:电商用户行为全流程分析

📊 Python 实战|电商用户行为全流程分析指南

大家好呀!今天我们用一个超接地气的电商用户行为小案例,手把手教你用 Python 完成从数据读取、清洗、分析到可视化的全流程实战。跟着走一遍,你也能轻松读懂用户行为背后的业务逻辑~

🛠️ 一、准备工作:搭建 Python 分析环境

首先,我们需要导入数据分析必备的三大库:

python                  import pandas as pd                  import numpy asnpimport matplotlib.pyplot as plt                  # 设置中文字体,避免可视化乱码                  plt.rcParams['font.sans-serif'] = ['SimHei']                  plt.rcParams['axes.unicode_minus'] = False

📥 二、步骤 1:数据读取与初探

我们模拟了电商平台的用户行为数据,包含用户 ID、行为类型、时间戳、商品信息等字段。

python                  # 读取数据(这里用模拟数据演示,真实场景可替换为你的CSV文件)                  data = {                  "user_id": [1001, 1002, 1003, 1001, 1002, 1004, 1003, 1001],                  "behavior": ["view", "cart", "buy", "view", "buy", "view", "cart", "buy"],                  "timestamp": ["2025-05-01 09:30", "2025-05-01 10:15", "2025-05-01 11:00",                  "2025-05-01 14:20", "2025-05-01 15:30", "2025-05-01 16:10",                  "2025-05-01 17:05", "2025-05-01 18:20"],                  "product_id": [201, 202, 201, 203, 202, 204, 203, 201],                  "category": ["数码", "服饰", "数码", "家居", "服饰", "美妆", "家居", "数码"]                  }                  df = pd.DataFrame(data)                  # 查看数据基本信息                  print("数据前5行:")                  print(df.head())                  print("\n数据信息概览:")                  print(df.info())

Plain Text                  # 运行结果                  数据前5行:                  user_id behaviortimestampproduct_id category                  01001view2025-05-01 09:30201数码                  11002cart2025-05-01 10:15202服饰                  21003buy2025-05-01 11:00201数码                  31001view2025-05-01 14:20203家居                  41002buy2025-05-01 15:30202服饰                  数据信息概览:                  RangeIndex: 8 entries, 0 to 7          Data columns (total 5 columns):             #ColumnNon-Null CountDtype          ----------------------------             0user_id8 non-nullint64             1behavior8 non-nullobject             2timestamp8 non-nullobject             3product_id8 non-nullint64             4category8 non-nullobject          dtypes: int64(2), object(3)          memory usage: 448.0 bytes

🧹 三、步骤 2:数据清洗 —— 给数据 “洗个澡”

1. 处理时间戳格式问题

原始数据中的时间戳是字符串,我们需要转换为日期格式,并分析时间范围:

python                  # 转换时间戳为datetime格式                  df['timestamp'] = pd.to_datetime(df['timestamp'])                  # 分析时间边界                  min_time = df['timestamp'].min()                  max_time = df['timestamp'].max()                  print(f"数据时间范围:从 {min_time} 到 {max_time}")

Plain Text                  # 运行结果                  数据时间范围:从 2025-05-01 09:30:00 到 2025-05-01 18:20:00

2. 处理缺失值与异常值

python                  # 检查缺失值                  print("缺失值统计:")                  print(df.isnull().sum())                  # 删除包含缺失值的记录(如果存在)                  df_clean = df.dropna()                  print(f"\n清洗后数据量:{len(df_clean)} 条(清洗前:{len(df)} 条)")

Plain Text                  # 运行结果                  缺失值统计:                  user_id0                  behavior0                  timestamp0                  product_id0                  category0                  dtype: int64                  清洗后数据量:8 条(清洗前:8 条)

💡 本案例无缺失值,真实场景中 dropna() 会自动删除含缺失值的行。

📈 四、步骤 3:数据分布分析 —— 用户行为大盘点

我们来看看用户不同行为(浏览、加购、购买)的分布情况,以及商品类别的热度分布。

1. 用户行为分布统计

python                  # 统计不同行为的数量                  behavior_count = df['behavior'].value_counts()                  print("用户行为分布:")                  print(behavior_count)                  # 可视化行为分布                  plt.figure(figsize=(8, 4))                  behavior_count.plot(kind='bar', color=['#FF9999', '#66B2FF', '#99FF99'])                  plt.title('用户行为分布')                  plt.xlabel('行为类型')                  plt.ylabel('次数')                  plt.show()

Plain Text                  # 运行结果                  用户行为分布:                  view3                  buy3                  cart2                  Name: behavior, dtype: int64

2. 商品类别热度分布

python                  # 统计不同类别的商品行为次数                  category_count = df['category'].value_counts()                  print("商品类别热度分布:")                  print(category_count)                  # 可视化饼图分布                  plt.figure(figsize=(6, 6))                  category_count.plot(kind='pie', autopct='%1.1f%%', colors=['#FF9999', '#66B2FF', '#99FF99', '#FFCC99'])                  plt.title('商品类别热度占比')                  plt.ylabel('')                  plt.show()

Plain Text                  # 运行结果                  商品类别热度分布:                  数码3                  服饰2                  家居2                  美妆1                  Name: category, dtype: int64

🔗 五、步骤 4:多表合并与联合查询

假设我们还有一张用户信息表,现在要和行为表进行关联分析。

python                  # 模拟用户信息表                  user_info = pd.DataFrame({                  "user_id": [1001, 1002, 1003, 1004],                  "age_group": ["20-25", "26-30", "20-25", "31-35"],                     "gender": ["男", "女", "女", "男"]                  })                  # 方式1:使用join函数合并两张表(按user_id关联)                  # 先设置索引,再join                  df_indexed = df.set_index('user_id')                  user_indexed = user_info.set_index('user_id')                  merged_df = df_indexed.join(user_indexed, on='user_id', how='left')                  print("合并后数据前5行:")                  print(merged_df.head())

Plain Text                  # 运行结果                  合并后数据前5行:                  behaviortimestampproduct_id category age_group gender                  user_id1001view 2025-05-01 09:30:00201数码20-25男                  1001view 2025-05-01 14:20:00203家居20-25男                  1001buy 2025-05-01 18:20:00201数码20-25男                  1002cart 2025-05-01 10:15:00202服饰26-30女                  1002buy 2025-05-01 15:30:00202服饰26-30女

🧩 进阶:用 apply 自定义字段 + loc 筛选数据

我们新增一个字段,标记用户行为是否为购买行为,然后筛选出女性用户的购买记录:

python                  # 新增自定义字段:是否为购买行为                  merged_df['is_buy'] = merged_df['behavior'].apply(lambda x: 1 if x == 'buy' else 0)                  print("新增字段后数据:")                  print(merged_df[['behavior', 'is_buy']].head())                  # 使用loc筛选女性用户的购买记录                  female_buy = merged_df.loc[(merged_df['gender'] == '女') & (merged_df['is_buy'] == 1)]                  print("\n女性用户购买记录:")                  print(female_buy)

Plain Text                  # 运行结果                  新增字段后数据:                  behavioris_buy                  user_id1001view0                  1001view0                  1001buy1                  1002cart0                  1002buy1                  女性用户购买记录:                  behaviortimestampproduct_id category age_group genderis_buy                  user_id1002buy 2025-05-01 15:30:00202服饰26-30女1

💡 六、步骤 5:关键结论与业务洞察

通过以上分析,我们得到了几个关键业务结论:

1.📊 用户行为转化情况:浏览:加购:购买的比例为 3:2:3,整体转化效率不错,尤其是数码类商品,浏览到购买的转化非常直接。

2.👥 用户画像特征:女性用户更倾向购买服饰类商品,而 20-25 岁男性用户是数码类商品的核心消费群体。

3.🛍️ 商品类别热度:数码类商品最受欢迎,其次是服饰和家居,美妆类商品关注度较低,后续可考虑增加美妆类商品的曝光或活动。

4.🧹 数据清洗的重要性:原始数据中如果存在缺失值或时间戳格式问题,不清洗会直接影响后续分析结果, dropna() 和时间格式转换是数据预处理的关键步骤。

✍️ 七、写在最后

今天我们用一个小案例,完整演示了电商用户行为分析的全流程,用到了 pandas 中最常用的 read_csv、dropna、value_counts、join、apply、loc 等函数,这些技巧在几乎所有数据分析场景中都能用到~

如果这篇文章对你有帮助,别忘了点赞收藏哦!后续我们还会分享更多 Python 数据分析实战案例~

最新文章

随机文章