用户购买行为与个性化推荐分析

一、项目简介

在本项目中,运用 Python 搭配机器学习技术,对数据集展开深度剖析。数据处理完成后,将处理结果以直观、生动的可视化形式呈现出来 。

二、数据说明

本数据集整合了某电商平台海量且多元的用户数据,它详细记录了用户的年龄、性别、居住地区、收入水平等基本属性,同时还精准捕捉了用户的兴趣偏好、登录频率、购买行为以及与平台的互动等动态指标,全方位、多维度地呈现了用户在该电商平台上的综合表现。

三、分析目标

  1. 对用户进行购买行为分析
  2. 进行RFM分析
  3. 对用户活跃度进行分析
  4. 进行个性化推荐预测

四、数据预处理

1. 数据导入

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.neighbors import NearestNeighbors
# 设置字体为SimHei以显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题
# 1. 数据加载
df = pd.read_excel("C:/Users/HP/Desktop/data.xlsx")
df

2. 数据清洗

# 数据清洗
df.drop(columns=["Unnamed: 0"], inplace=True)  # 删除冗余列
df = df[df["Income"] > 0]  # 过滤无效收入
df.dropna(inplace=True)  # 删除缺失值

五、数据分析

1.不同用户群体购买行为差异分析

  1. 性别维度:对比男性和女性用户的购买频率、平均订单价值和总消费金额,分析性别在消费行为上的差异,挖掘不同性别的消费偏好和购买习惯,为性别针对性营销提供数据支持。

    • # 2. 购买行为分析
      # 按性别统计购买行为
      purchase_by_gender = df.groupby("Gender").agg({
          "Purchase_Frequency": "mean",
          "Total_Spending": "sum"
      }).reset_index()
      purchase_by_gender

    • 地区维度:按照用户居住地区进行分组,分析不同地区用户的购买行为差异,探究地域因素对消费习惯的影响,如不同地区的热门产品类别、消费金额水平等,为区域差异化营销策略提供依据。

      #按地区统计购买行为
      spending_by_location = df.groupby("Location")["Total_Spending"].sum().reset_index()
      spending_by_location

 2.RFM 分析

 RFM 分析是一种用于衡量客户价值和客户创利能力的重要工具,包括三个指标:最近一次消费(Recency)、消费频率(Frequency)和消费金额(Monetary)。

# RFM 分析
# Recency: 最近一次登录天数(越小越好)
# Frequency: 购买频率(越大越好)
# Monetary: 总消费金额(越大越好)
rfm = df[["User_ID", "Last_Login_Days_Ago", "Purchase_Frequency", "Total_Spending"]]
rfm.columns = ["User_ID", "Recency", "Frequency", "Monetary"]
rfm

# d. 用户分群
rfm["RFM_Score"] = rfm["R_Score"] + rfm["F_Score"] + rfm["M_Score"]
rfm["Segment"] = "流失风险客户"
rfm.loc[rfm["RFM_Score"] >= 6, "Segment"] = "一般客户"
rfm.loc[rfm["RFM_Score"] >= 9, "Segment"] = "潜力客户"
rfm.loc[rfm["RFM_Score"] >= 12, "Segment"] = "高价值客户"
rfm.loc[rfm["RFM_Score"] < 6, "Segment"] = "流失风险客户"
rfm

 3. 用户活跃度分析

在本次分析中,我们对用户活跃度进行了精细化的分类与评估。具体而言,我们综合考量了用户的最近登录天数以及在网站上的停留时间,以此作为衡量用户活跃度的关键指标。

  • 高活跃用户:定义为在过去7天内登录过平台,且累计停留时间超过300分钟的用户。这类用户对平台的参与度极高,频繁访问且投入大量时间,是平台的核心用户群体。

  • 低活跃用户:定义为超过30天未登录平台,且累计停留时间低于100分钟的用户。这类用户对平台的参与度较低,可能需要通过针对性的策略来重新吸引其关注。

  • 普通用户:介于高活跃用户和低活跃用户之间的用户,其登录行为和停留时间处于中等水平。这类用户是平台的中坚力量,具有较大的潜力,通过适当的激励措施有望提升其活跃度。

    # 4. 用户活跃度分析
    df["Active_Status"] = "普通用户"
    df.loc[(df["Last_Login_Days_Ago"] <= 7) & (df["Time_Spent_on_Site_Minutes"] >= 300), "Active_Status"] = "高活跃用户"
    df.loc[(df["Last_Login_Days_Ago"] > 30) & (df["Time_Spent_on_Site_Minutes"] < 100), "Active_Status"] = "低活跃用户"
    df

4. 个性化预测

在个性化推荐预测领域,我们借助机器学习模型,深度挖掘用户的兴趣偏好以及对不同产品类别的倾向。通过对海量用户行为数据的分析,模型能够精准捕捉用户的独特需求和潜在兴趣点。基于此,我们能够预测用户可能感兴趣的其他产品类别,从而为每一位用户提供高度个性化的产品推荐。

 

# 5. 个性化推荐预测
# 构建用户特征矩阵(兴趣 + 产品偏好)
user_features = pd.get_dummies(df[["Interests", "Product_Category_Preference"]])
model = NearestNeighbors(n_neighbors=5)
model.fit(user_features)

# 为每个用户推荐相似兴趣的Top 5商品类别
_, indices = model.kneighbors(user_features)
df["Recommended_Category"] = [df.iloc[i]["Product_Category_Preference"].mode()[0] for i in indices]

# 保存结果供可视化
df.to_csv("cleaned_user_data.csv", index=False)
rfm.to_csv("rfm_segments.csv", index=False)
df

六、数据可视化

import seaborn as sns
import matplotlib.pyplot as plt
# 在 Jupyter Notebook 中启用内联绘图
%matplotlib inline
# 统计不同用户群体的推荐产品类别数量
category_counts = df.groupby(["Active_Status", "Recommended_Category"]).size().reset_index(name="Count")
# 统计用户群体的类别总数
category_counts_sum = category_counts.groupby("Active_Status").agg({
    "Count": "sum"
}).reset_index().rename(columns={'Count': 'Sum_Count'})

category_counts = category_counts.merge(category_counts_sum)
category_counts['Ratio_Count'] = category_counts['Count'] / category_counts['Sum_Count']
category_counts

 

active_user_counts = df[df['Active_Status'].isin(['普通用户', '高活跃用户'])].groupby('Active_Status').size()
total_users = active_user_counts.sum()
percentages = active_user_counts / total_users * 100

plt.figure(figsize=(8, 8))
plt.pie(percentages, labels=percentages.index, autopct='%1.1f%%', startangle=90)
plt.title('普通用户和高活跃用户的占比扇形图', fontsize=16)
plt.axis('equal')
plt.show()

 

 

# 设置图片清晰度
plt.rcParams['figure.dpi'] = 300

# 绘制柱状图 1
plt.figure(figsize=(12, 8))
ax1 = sns.barplot(data=category_counts, x="Recommended_Category", y="Ratio_Count", hue="Active_Status")

# 添加数据标签
for p in ax1.patches:
    ax1.annotate(format(p.get_height(), '.2f'),
                 (p.get_x() + p.get_width() / 2., p.get_height()),
                 ha='center', va='center',
                 xytext=(0, 10),
                 textcoords='offset points')

# 添加标题和标签
plt.title("Recommended Product Categories by User Group", fontsize=16)
plt.xlabel("Recommended Category", fontsize=14)
plt.ylabel("Ratio of Recommended Products", fontsize=14)
plt.legend(title="Active Status", fontsize=12)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

 

# 绘制柱状图 2
plt.figure(figsize=(12, 8))
ax2 = sns.barplot(data=category_counts, x="Active_Status", y="Ratio_Count", hue="Recommended_Category")

# 添加数据标签
for p in ax2.patches:
    ax2.annotate(format(p.get_height(), '.2f'),
                 (p.get_x() + p.get_width() / 2., p.get_height()),
                 ha='center', va='center',
                 xytext=(0, 10),
                 textcoords='offset points')

# 添加标题和标签
plt.title("Recommended Product Categories by User Group", fontsize=16)
plt.xlabel("Active Status", fontsize=14)
plt.ylabel("Ratio of Recommended Products", fontsize=14)
plt.legend(title="Recommended Category", fontsize=12, loc='upper right')
plt.tight_layout()
plt.show()

 

七、分析结论与建议

基于用户活跃度占比的建议

  • 普通用户
    • 活跃度提升策略:鉴于普通用户占比高达 88.9% ,可针对该群体开展提升活跃度的活动。比如推出签到打卡奖励机制,连续打卡一定天数可获得优惠券、积分等;设置新手引导任务,引导用户完成特定操作,如完善个人信息、浏览特定商品页面等,完成后给予小礼品或折扣优惠。
    • 个性化推荐优化:利用已有的用户兴趣和行为数据,进一步细化对普通用户的个性化推荐。通过分析他们在浏览、收藏等行为中的偏好,推荐更贴合其需求的商品,提高其对推荐商品的关注度和购买意愿。
  • 高活跃用户
    • 忠诚度维护:高活跃用户虽占比仅 11.1% ,但价值较高。为他们提供专属服务,如优先客服响应、专享折扣、限量版商品提前购买资格等,增强其对平台的忠诚度。
    • 价值深挖:鼓励高活跃用户进行口碑传播,比如设立推荐奖励机制,他们成功推荐新用户注册并消费,可获得丰厚奖励;邀请其参与新品试用、产品反馈等活动,借助他们的活跃度和影响力,为平台产品优化提供建议。

基于推荐产品类别差异的建议

  • Apparel(服装):普通用户对服装类推荐接受度较高,可针对普通用户多推出服装新品推荐、搭配推荐等内容。对于高活跃用户,可尝试推出限量版服装、联名款服装等,激发其购买欲望。
  • Electronics(电子产品):普通用户推荐比例略高于高活跃用户。可针对普通用户举办电子产品促销活动,如满减、赠品等;对于高活跃用户,可提供高端电子产品的优先体验、预定等服务。
  • Books(书籍):普通用户更倾向书籍类推荐。可建立普通用户读书社区,举办读书分享会、书评征集等活动,增加用户粘性;对于高活跃用户,可推出稀缺书籍、签名版书籍等资源。
  • Health & Beauty(健康与美容):高活跃用户对此类产品推荐比例更高。可针对高活跃用户推出健康美容定制服务、高端品牌推荐等;对于普通用户,可通过科普文章、试用装等形式,提高其对此类产品的兴趣。
  • Home & Kitchen(家居与厨房):高活跃用户推荐比例优势明显。可针对高活跃用户开展家居厨房新品试用、高端家居品牌合作推广等活动;对于普通用户,可通过性价比高的家居厨房用品推荐、搭配方案等吸引关注。

产品推荐策略

  • 针对普通用户
    • 普通用户对 “Apparel”(服装)、“Electronics”(电子产品)和 “Books”(书籍)的推荐比例相对较高。可加大这几类热门产品的推荐力度,比如在首页、个性化推荐板块增加相关产品展示。同时,挖掘这几类产品中不同风格、价位、功能的细分品类,满足普通用户多样化需求。
    • 对于推荐比例相对较低的 “Health & Beauty”(健康与美容)类产品,可通过内容营销来提升用户兴趣,如发布护肤、美妆教程,健康养生知识等,结合产品推荐,引导普通用户尝试购买。
  • 针对高活跃用户
    • 高活跃用户对 “Home & Kitchen”(家居与厨房)、“Health & Beauty”(健康与美容)和 “Electronics”(电子产品)的推荐比例较高。对于这些热门品类,可推出高端、限量版或独家合作款产品,满足高活跃用户追求独特和高品质的需求。
    • 对于 “Books”(书籍)类产品,虽然推荐比例相对较低,但仍有一定占比。可以打造书友会、读书俱乐部等社群活动,邀请高活跃用户参与,分享读书心得,同时推荐相关书籍产品,提升其对此类产品的关注度和购买量。

用户运营策略

  • 用户细分运营:基于不同用户群体对各类产品的偏好差异,进一步细分用户标签。例如,将喜欢 “Apparel” 的普通用户标记为 “时尚关注型普通用户”,对喜欢 “Home & Kitchen” 的高活跃用户标记为 “家居生活型高活跃用户”。针对不同细分标签的用户,制定更精准的营销和服务策略。
  • 用户互动提升:无论是普通用户还是高活跃用户,都可围绕其偏好的产品类别开展互动活动。比如针对喜欢 “Electronics” 的用户举办新品体验官招募、电子产品评测大赛等活动,增强用户参与感和对平台的粘性。同时,收集用户反馈,用于优化产品推荐和服务。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值