电商用户行为可视化分析

傷城~ 2022-09-01 14:56 265阅读 0赞
  1. 导入数据

    import numpy as np
    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    plt.rcParams[‘font.sans-serif’] = [‘SimHei’] # 步骤一(替换sans-serif字体)
    plt.rcParams[‘axes.unicode_minus’] = False # 步骤二(解决坐标轴负数的负号显示问题)

  2. 了解数据

    user = pd.read_csv(‘E:/学习/fresh_comp_offline/tianchi_fresh_comp_train_user.csv’)
    user.info()

在这里插入图片描述

  1. user.head()
  2. # '''
  3. # user_id用户标识,
  4. # item_id 商品标识,
  5. # behavior_type,用户对商品的行为类型 包括浏览、收藏、加购物车、购买,对应取值分别是1、2、3、4。
  6. # user_geohash 用户位置的空间标识,可以为空 由经纬度通过保密的算法生成
  7. # item_category 商品分类标识 字段脱敏
  8. # time 行为时间 精确到小时级别
  9. # '

在这里插入图片描述

  1. # 查看统计信息
  2. user.describe()

在这里插入图片描述

  1. # 查看缺失值
  2. user.isnull().sum()

在这里插入图片描述

  1. 处理数据

    user.duplicated().sum()

    删除重复值

    user.drop_duplicates(keep=’last’,inplace=True)
    user.info() # 查看是否删除了重复值

在这里插入图片描述

  1. # 将时间转换为datetime格式
  2. user['time'] = pd.to_datetime(user['time'])
  3. user.head()

在这里插入图片描述

  1. # 提取出日期、月、年
  2. user['dates'] = user.time.dt.date
  3. user['month'] = user.dates.values.astype('datetime64[M]')
  4. user['hours'] = user.time.dt.hour
  5. user.head()

在这里插入图片描述

  1. # 转换数据类型
  2. user['behavior_type'] = user['behavior_type'].apply(str)
  3. user['user_id'] = user['user_id'].apply(str)
  4. user['item_id'] = user['item_id'].apply(str)
  5. user.info()

在这里插入图片描述

  1. 数据可视化
    4.1 统计每日PV和UV数据

    统计每日PV数据

    pv_day = user[user.behavior_type==’1’].groupby(‘dates’)[‘behavior_type’].count()
    pv_day

在这里插入图片描述

  1. # 统计每日UV数据
  2. uv_day = user[user.behavior_type=='1'].drop_duplicates(['user_id','dates']).groupby('dates')['user_id'].count()
  3. uv_day

在这里插入图片描述
4.2 分析每天的PV和uv的趋势

  1. pv_day.plot(figsize=(12,5),legend=True,title='pv与uv趋势图')
  2. uv_day.plot(legend=True)

在这里插入图片描述
两个数据的数据量相差较大,因此需要使用两个不同的坐标来表示

  1. fig,ax1 = plt.subplots()
  2. ax1.plot(pv_day,label = 'pv',color='red')
  3. ax2 = ax1.twinx()
  4. ax2.plot(uv_day,label = 'uv',color='green')
  5. fig.legend()
  6. plt.show()

在这里插入图片描述
4.3 pv、uv差异分析(by day)

  1. pv_uv = pd.concat([pv_day,uv_day],join='outer',axis = 1)
  2. pv_uv.columns = ['pv_day','uv_day']
  3. pv_uv

在这里插入图片描述

  1. pv_uv[['pv_day','uv_day']].plot(secondary_y=['pv_day','uv_day'])

在这里插入图片描述

  1. new_day = pv_uv.diff() # 计算日期之间的差异
  2. new_day.columns = ['new_pv','new_uv']
  3. new_day

在这里插入图片描述

  1. new_day.new_uv.plot()
  2. new_day.new_pv.plot()

在这里插入图片描述

  1. 不同时期用户行为分析

    统计不同购买行为的每日总计量

    shopping_cart= user[user.behavior_type == ‘3’].groupby(‘dates’)[‘behavior_type’].count()
    collect=user[user.behavior_type==’2’].groupby(‘dates’)[‘behavior_type’].count()
    buy=user[user.behavior_type==’4’].groupby(‘dates’)[‘behavior_type’].count()

    plt.figure(1,figsize=(10,4))
    plt.plot(shopping_cart,’go-‘,label=’加购人数’)
    plt.plot(collect,’bo-‘,label=’收藏人数’)
    plt.plot(buy,’ro-‘,label=’购买人数’)
    plt.legend()
    plt.show()

在这里插入图片描述
可以看到数据在12月11日附近有较大的波动,考虑是双十二活动的影响,整理分析用户的不同时期行为可能会导致分析结果与实际差异较大,因此拆分开来做不同的对比分析

  1. 不同时段用户行为分析
    选取活动数据子集

    active = user[user[‘dates’].isin([“2014/12/11”,”2014/12/12”,”2014/12/13”])]
    active

在这里插入图片描述
选取日常数据子集

  1. daily = user[~user['dates'].isin(["2014/12/11","2014/12/12","2014/12/13"])]
  2. daily

活动期间不同时段的用户行为分析

  1. uv_h = active[active.behavior_type=='1'].groupby('hours')['user_id'].count()
  2. collect_h = active[active.behavior_type=='2'].groupby('hours')['behavior_type'].count()
  3. cart_h = active[active.behavior_type=='3'].groupby('hours')['behavior_type'].count()
  4. buy_h = active[active.behavior_type=='4'].groupby('hours')['behavior_type'].count()
  5. uv_h.plot(kind='bar',title="浏览人数")

在这里插入图片描述

  1. plt.figure(figsize = (10,5))
  2. plt.plot(cart_h,'go-',label='加购人数')
  3. plt.plot(collect_h,'bo-',label='收藏人数')
  4. plt.plot(buy_h,'ro-',label='购买人数')
  5. plt.title("日均各时段活动用户行为")
  6. plt.legend()
  7. plt.show()

在这里插入图片描述
这是三天活动的日均数据,可以发现活动期间是商家在起主导作用大促集中在零点,因此用户的购买高峰也出现在0点, 点击浏览的高峰集中在晚上的21点到22点之间,因此商家可以在20点前改好促销页面吸引顾客参加0点的活动。

日常期间不同时段的用户行为分析

  1. uv_d = daily[daily.behavior_type=='1'].groupby('hours')['user_id'].count()
  2. collect_d = daily[daily.behavior_type=='2'].groupby('hours')['behavior_type'].count()
  3. cart_d = daily[daily.behavior_type=='3'].groupby('hours')['behavior_type'].count()
  4. buy_d = daily[daily.behavior_type=='4'].groupby('hours')['behavior_type'].count()
  5. uv_d.plot(kind='bar',title="浏览人数")

在这里插入图片描述

  1. plt.figure(figsize = (10,5))
  2. plt.plot(cart_d,'go-',label='加购人数')
  3. plt.plot(collect_d,'bo-',label='收藏人数')
  4. plt.plot(buy_d,'ro-',label='购买人数')
  5. plt.legend()
  6. plt.title("日均各时段活动用户行为")
  7. plt.show()

在这里插入图片描述
与大促不同的是日常期间购买人数从上午10点到晚上19点变化都不会太大,高峰出现在晚上21点,pv、加购、收藏的高峰出现在晚上21点到22点之间,说明大家都喜欢在晚上这个时间段浏览商品,日常时可以集中在这个时段进行促销活动,浏览高峰也是集中在晚上21点到22点之间。

  1. 购买率
    活动期间购买率

    hour_buy_user_sum = active[active.behavior_type==’4’].drop_duplicates([‘user_id’,’dates’,’hours’]).groupby(‘hours’)[‘user_id’].count()
    hour_buy_user_sum # 活动时每小时的购买人数

在这里插入图片描述

  1. hour_active_user_sum = active.drop_duplicates(['user_id','dates','hours']).groupby('hours')['user_id'].count()
  2. hour_active_user_sum # 活动参加人数

在这里插入图片描述

  1. hour_buy_rate = hour_buy_user_sum/hour_active_user_sum
  2. attr_o = list(hour_buy_user_sum.index)
  3. vo_2 =np.around(hour_buy_rate.values,decimals=2)
  4. vo_2

在这里插入图片描述
日常购买率

  1. hour_buy_daily_num = daily[daily.behavior_type == '4'].drop_duplicates(['user_id','dates', 'hours']).groupby('hours')['user_id'].count()
  2. hour_active_daily_num = daily.drop_duplicates(['user_id','dates', 'hours']).groupby('hours')['user_id'].count()
  3. daily_buy_rate = hour_buy_daily_num / hour_active_daily_num
  4. vi_2 =np.around(daily_buy_rate.values,decimals=2)

在这里插入图片描述

  1. plt.figure()
  2. plt.plot(hour_buy_rate,marker='o',label="活动购买率")
  3. plt.plot(daily_buy_rate,marker='o',label="日常购买率")
  4. plt.legend()
  5. plt.show()

在这里插入图片描述
日常时的购买率最高的出现在上午10点到下午15点间,还有晚上的21点,和活动期间的购买率不同,但是明显晚上21点已经在分析中出现比较多的峰值,因此可以考虑这个时段做做吸引用户购买的措施。

  1. 转化漏斗分析

    活动转化

    a_pv = active[active.behavior_type == ‘1’][‘user_id’].count()
    a_cart=active[active.behavior_type==”3”][“user_id”].count()
    a_collect=active[active.behavior_type==”2”][“user_id”].count()
    a_buy=active[active.behavior_type==”4”][“user_id”].count()
    a_attr=[“点击”,”加入购物车”,”收藏”,”购买”]
    values=[np.around((a_pv/a_pv*100),2),

    1. np.around((a_cart/a_pv*100),2),
    2. np.around((a_collect/a_pv*100),2),
    3. np.around((a_buy/a_pv*100),2),
    4. ]

在这里插入图片描述
参考链接:
电商用户行为可视化分析

发表评论

表情:
评论列表 (有 0 条评论,265人围观)

还没有评论,来说两句吧...

相关阅读

    相关 案例---用户业务行为分析

    1. 电商用户业务行为分析 电商平台中的用户行为频繁且较复杂,系统上线运行一段时间后,可以收集到大量的用户行为数据,进而利用数据分析技术进行深入挖掘和分析,得到感兴趣的商