一、项目简介
在本项目中,运用 Python 搭配机器学习技术,对数据集展开深度剖析。数据处理完成后,将处理结果以直观、生动的可视化形式呈现出来 。
二、数据说明
本数据集整合了某电商平台海量且多元的用户数据,它详细记录了用户的年龄、性别、居住地区、收入水平等基本属性,同时还精准捕捉了用户的兴趣偏好、登录频率、购买行为以及与平台的互动等动态指标,全方位、多维度地呈现了用户在该电商平台上的综合表现。
三、分析目标
- 对用户进行购买行为分析
- 进行RFM分析
- 对用户活跃度进行分析
- 进行个性化推荐预测
四、数据预处理
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.不同用户群体购买行为差异分析
-
性别维度:对比男性和女性用户的购买频率、平均订单价值和总消费金额,分析性别在消费行为上的差异,挖掘不同性别的消费偏好和购买习惯,为性别针对性营销提供数据支持。
-
# 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” 的用户举办新品体验官招募、电子产品评测大赛等活动,增强用户参与感和对平台的粘性。同时,收集用户反馈,用于优化产品推荐和服务。