一、分析背景
近年来,互联网电商的获客成本逐渐增加,电商由“流量”时代逐渐过渡为“存量”时代。如何做好用户管理,是每一个互联网商家需要思考的问题。在这样的背景下,本次分析通过一个淘宝用户数据集,对用户购物过程中的行为(现象)作出分析,找出运营过程中存在的问题以及出现问题的原因并提供优化改善的建议。
二、分析问题
1、淘宝的用户流失情况的怎样?
2、造成该种流失的原因是什么?
3、该怎么避免类似流失的发生?
三、数据加工
数据来源:https://tianchi.aliyun.com/dataset/dataDetail?dataId=46(选取100万行数据作为分析依据)——为虚构数据的时效性,此文将数据的日期2014年改成了2021年。
1.字段翻译
① user_id:用户编号
② item_id:商品编号
③ behavior_type:用户行为(包含点击、收藏、加购、购买四种行为,原始字段中分别用数字1、2、3、4表示)
④ user_geohash:地理位置
⑤ item_category:商品种类
⑥ time:时间
2. 导入数据并清洗数据
1、导入数据
data = pd.read_excel("./tianchi_mobile_recommend_train_user.xlsx")
2、选择字段
item_category 列地理位置的数据大多是空值 NULL ,且位置信息被加密处理了,难以研究。所以不选择该列分析,即直接删除。
data.drop(columns="用户地理位置",inplace=True)
3、缺失值处理
无缺失值
4、时间类型转换
data['时间'] = data['时间'].astype('datetime64[ns]')
整理后的数据预览如下:

3.对用户行为(点击、收藏、加购、购买)进行统计,查看用户最常进行的操作是什么

用户行为包括点击、加入购物车、收藏以及购买,图1显示,
分组一:点击行为占总行为数的94.22%,
分组二:放进购物车只占2.8%,
分组5:购买最后实际购买占不到1%,用户流失主要在放进购物车这一环节上。
于是我们做出假设:可能出现的原因是用户在淘宝花了大量时间搜寻不到自己想要的产品,以致于放弃在淘宝平台购买产品,转而去其他平台购买。
针对这个假设(猜测),从以下3个维度分析来验证此猜测:
①用户想要在淘宝找到什么商品?
②用户习惯什么时候(时间段)购买?
③平台推送的商品是否满足用户需求?
4、用户流失情况原因分析
(1)用户想要在淘宝找到什么商品
衡量用户最想要在淘宝平台找到什么产品,最重要的指标是商品点击数。通过该项指标,可最大程度上了解到哪类产品用户的需求量较大,哪类产品的需求较小。
# 这行代码从原始数据中筛选出 '用户行为' 为1的记录,表示用户的点击行为。
click_data = data[data['用户行为'] == 1] # 只保留点击行为
# 对点击数据按'商品种类'进行分组,然后使用 .size() 计算每个商品类别的点击量。
# 使用 .reset_index() 将结果转换为DataFrame,并命名为 '点击量'。
category_clicks = click_data.groupby('商品种类').size().reset_index(name="点击量")
# 按照 '点击量' 对商品类别进行降序排列,然后取前五个点击量最多的商品类别。
top_5_categories = category_clicks.sort_values(by='点击量', ascending=False).head(5)
# 可视化前五商品类别点击量

从图中可看出,商品类别编号为1863、13230、5027、5894、6513的在淘宝APP中点击数最高,说明用户最想要在淘宝平台中找到这五类商品。
在这五种类型下,继续找各类中点击数排名前三的商品:
# 从点击数据中筛选出属于前五个商品类别的数据,'isin()' 函数检查每条记录的商品类别是否属于前五名。
top_categories_data = click_data[click_data['商品种类'].isin(top_5_categories['商品种类'])]
# 对筛选出的数据按 '商品类别' 和 '商品编号' 进行分组,计算每个商品编号的点击量。
item_clicks = top_categories_data.groupby(['商品种类', '商品编号']).size().reset_index(name='点击量')
# 对每个商品类别,选取点击量排名前3的商品(使用 .nlargest() 函数)。
top_3_items_category = item_clicks.groupby('商品种类').apply(lambda x: x.nlargest(3, '点击量')).reset_index(drop=True)

#绘图

从图中看出,各类商品中,5027类的商品需求较高,前三名商品的点击量均在40以上;6513类的商品需求量相对较小。
(2)用户习惯什么时候购买商品
1.分析在一天内用户寻找这五类商品的主要时间段。结果如下:
# 从 'time' 字段中提取出小时部分,并将其存储为 'hour' 字段。
top_categories_data['小时'] = top_categories_data['时间'].dt.hour
# 按小时对点击数据进行分组,计算每个小时的点击量。
hour_clicks = top_categories_data.groupby(['商品种类','小时']).size().reset_index(name='点击量')
#可视化绘图

2.分析在一天内用户寻找这五类商品的主要时间段。结果如下:
# 从 'time' 字段中提取出日期部分,并将其存储为 'date' 字段。
top_categories_data['日期'] = click_data['时间'].dt.date
# 按日期对点击数据进行分组,计算每天的点击量。
daily_clicks = top_categories_data.groupby(['商品种类','日期']).size().reset_index(name='点击量')
#可视化结果

从图中可看出,因为淘宝的双十二活动,这五类商品的点击数在双十二前夕及双十二这天剧增,双十二过后恢复到正常的范围,其他时间都未有较大的波动。
一天内用户寻找这五类商品的主要时间段。可以看出,这五类商品的用户点击数从每日0点到5点快速降低,4点左右降到一天中的点击数最低值,6点到10点用户点击数快速上升,10点到18点用户点击数较平稳,18点到23点用户点击数快速上升,21点左右达到一天中的最高值。
对比可知,18-23点这个时间段,用户明显活跃起来。对此,有做广告以及促销的商家可以侧重于这几个时间段加大投放,争取流量获得最大转化。
综合上述分析可知,用户在淘宝平台最想要寻找到商品类别编号为1863、13230、5027、5894、6513的这五类商品,在这五类商品中,5027类的商品需求最高。用户主要集中在下午6点到晚上11点在淘宝平台寻找这几类商品,基本包含6点以后这个时间段。
3.分析淘宝对这五类商品的推送机制是否合理,即在用户搜索某类商品后,出现的商品是否满足用户的需求。结果如下:
分别分析所有商品类别中购买量前五的商品购买数量,以及点击量前五的商品类别的商品的购买数量
(1)所有商品类别中购买量前五的商品购买数量
# 只保留购买行为
click_data_4 = data[data['用户行为'] == 4]
#统计各商品种类的购买情况
category_clicks_4 = click_data_4.groupby('商品种类').size().reset_index(name="购买量")
#列出购买量前五的商品种类
top_5_categories_4 = category_clicks_4.sort_values(by='购买量', ascending=False).head(5)

#可视化绘图

(2)点击量前五的商品类别的商品的购买数量
#将点击量前五的商品种类购买数量统计出来
top_categories_data_4 = click_data_4[click_data_4['商品种类'].isin(top_5_categories['商品种类'])]
item_shop = top_categories_data_4.groupby("商品种类")["用户编号"].count().reset_index(name='购买量')

#可视化绘图

从上图可以看出,除了1863类商品的购买次数较多外,其他需求多的四类商品的购买次数并不多,甚至都没有进入购买次数的前五名。
显然,需求最高的五类商品的购买数都远低于购买数最高的五类商品,说明淘宝对这五类需求最高的商品的推送机制并不合理,淘宝平台给用户推送的这五类商品没有满足用户的要求,即用户在点击查看该类商品后,发现并不是自己想要的商品放弃加入购物车,造成转化率的降低。
根据以上结论,提出以下几点改进建议:
1、算法部门建议:建议算法部门改善淘宝推送商品机制,尤其针对需求最高的1863、13230、5027、5894、6513这五类商品,监控这五类商品的购买数,优先将购买数高的商品推送给用户,使用在搜索该类商品后,能在前三个或前五个商品页面看到这些购买数较高的商品,缩小用户寻找商品的时间,提高用户的转化率。
2、市场部门建议:淘宝的用户偏爱1863、13230、5027、5894、6513这五类商品,建议市场部门在淘宝的主要投放渠道,多投放这五类商品的广告,尤其是投放五类商品中销量较高的商品广告,获取到更多的用户到淘宝平台。
3、运营部门建议:淘宝的用户搜寻商品的时间段主要在下午6点至晚上11点,也就是大多数人下班后休息的时间。建议运营部门在这个时间段对这五类商品多策划一些营销活动,例如“聚划算”、“满减活动”等,刺激用户消费,提高用户转化率。并对这五类商品中需求很高的一些商品,精确用户对这些商品的主要搜寻时间段,在这些主要的搜寻时间对该商品进行促销活动。例如上述分析中提到五类商品中需求最高的是5027类商品,分析中给出了5027类点击数前三的商品的主要搜寻时间段,运营部门可根据这些精确的时间段策划推广相应的营销活动,激活用户,提高转化率。 |