电商数据分析–用户行为分析

数据分析流程:

  1. 明确目的
  2. 获取数据
  3. 数据探索和预处理
  4. 分析数据
  5. 得出结论
  6. 验证结论
  7. 结果展现

用户行为是指用户在产品上产生的行为。(登陆、浏览、购买、加入购物车)

用户行为数据统计:

  • 日活跃用户数
  • 注册成功人数
  • 账号登陆成功人数
  • 进入商品详情页人数
  • 加入购物车人数
  • 提交订单成功人数

分析思路

如何进行用户行为分析提高销售量销售额?
用户购物行为的整体分析(基础数据分析,提供数据支撑)

  • PV、UV (按周期进行统计)
  • 平均访问量 (按周期进行统计)
  • 跳失率 (点击行为用户数/UV)
  • 用户最活跃的日期及时间段 (每天、每周等)

商品购买情况分析 (用户偏好分析)

  • 商品购买次数 (按周期进行统计)
  • 商品点击次数 (按周期进行统计)
  • 商品购买次数和点击次数总分析 (同一周期内进行汇总统计)
  • 商品转化率 (购买量和点击量)

用户香味转化漏斗分析 (用户行文路径分析)

  • 点击加购转化率 (购买人数/点击人数)
  • 点击收藏转化率 (收藏人数/点击人数)
  • 点击购买转化率 (购买人数/点击人数)

方法论(AARR Model)

数据分组,使用Pandas中的Groupby。(df.groupby(‘str1’,‘str2’).sum())
AARR Model

留存用户:在某段时间开始使用产品,经过一段时间后仍然继续使用产品的用户。
留存率:仍旧使用产品的用户量/最初的总用户量
复购率:是在某时间窗口内消费两次及以上在总消费用户中的占比
回购率:在某一时间窗口消费的用户,在下一个时间窗口仍旧消费的占比。

电商漏洞分析–节点 点击、加购、收藏、购买

项目实操

实操流程

  1. 数据探索
  2. 数据清洗
  3. 数据类型转化
  4. 构建模型
  5. 数据分析
  6. 结果解读

源代码

import time
from datetime import datetime,timedelta,date
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#解决中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
#导入数据
data = pd.read_csv(r"E:\customer_behavior.csv")
print(data.head())
del data['Unnamed: 0']
print(data.head())
#分析下双11活动
data1 = data[(data.buy_time>='2019-11-05')&(data.buy_time<='2019-11-13')]print(data1['be_type'].drop_duplicates())
print(data1.isnull().any())#是否有缺失值#数据处理
data1['day_id']=pd.to_datetime(data1['day_id'],format='%Y-%m-%d')data1['month']=data1['day_id'].dt.month
data1['buy_time']=data1['day_id'].dt.date
data1['times']=data1['day_id'].dt.time
data1['hours']=data1['day_id'].dt.hour
data1['weekday']=data1['day_id'].dt.dayofweek+1
#查看处理后的数据
print(data1.head())#AARR model
#用户行为分组统计
behavior_count = data1.groupby('be_type')['cust_id'].count()PV=behavior_count['pv']
print("PV=%d"%PV)
UV=len(data['cust_id'].unique())
print("UV=%d"%UV)
print("平均访问量 PV/UV=%d"%(PV/UV))data_pv=data1.loc[data1['be_type']=='pv',['cust_id']]
data_fav=data1.loc[data1['be_type']=='fav',['cust_id']]
data_cart=data1.loc[data1['be_type']=='cart',['cust_id']]
data_buy=data1.loc[data1['be_type']=='buy',['cust_id']]
#集合相减,获取只有点击行为的用户数
data_pv_only=set(data_pv['cust_id'])-set(data_fav['cust_id'])-set(data_cart['cust_id'])-set(data_buy['cust_id'])
pv_only=len(data_pv_only)
print('跳失率为:%.2f%%'%(pv_only/UV*100))pv_day= data1[data1.be_type=='pv'].groupby('buy_time')['be_type'].count()uv_day=data1[data1.be_type=='pv'].drop_duplicates(['cust_id','buy_time']).groupby('buy_time')['cust_id'].count()attr = pv_day.index
v1 = pv_day.values
v2 = uv_day.values#设置线宽
plt.figure(figsize=(8, 5))
plt.plot(attr,v1,linewidth=4)
#设置图表标题,并给坐标轴添加标签
plt.title("日点击量趋势图",fontsize=20)
plt.xlabel('日期',fontsize=10)
plt.ylabel('PV',fontsize=10)
plt.show()#折线图绘制
fig = plt.figure(figsize=(6,6))
plt.subplot(2,1,1)
xlabel=attr
plt.plot(range(len(xlabel)),v1)
plt.xticks(np.arange(9),'')
plt.title('日点击量趋势图')
plt.ylabel('日pv')
for a,b in zip(range(len(xlabel)),v1):plt.text(a, b, b, ha='center', va='bottom', fontsize=10)
plt.subplot(2,1,2)
plt.plot(range(len(xlabel)),v2)
plt.xticks(np.arange(9),('11-05 周二','11-06 周三','11-07 周四','11-08 周五','11-09 周六','11-10 周日','12-11 周一','11-12 周二','11-13 周三'),rotation=45)
plt.title('日独立访客数趋势图')
plt.ylabel('日uv')
for a,b in zip(range(len(xlabel)),v2):plt.text(a, b, b, ha='center', va='bottom', fontsize=10)
plt.show()pv_hour=data1.groupby('hours')['cust_id'].count().reset_index().rename(columns={'用户ID':'pv'})
uv_hour=data1.groupby('hours')['cust_id'].apply(lambda x:x.drop_duplicates().count()).reset_index().rename(columns={'用户ID':'时uv'})fig,axes=plt.subplots(2,1,sharex=True)
pv_hour.plot(x='hours',y='cust_id',ax=axes[0])
uv_hour.plot(x='hours',y='cust_id',ax=axes[1])
plt.xticks(range(24),np.arange(24))
axes[0].set_title('按小时点击量趋势图')
axes[1].set_title('按小时独立访客数趋势图')def cal_retention(data,n): #n为n日留存user=[]date=pd.Series(data.buy_time.unique()).sort_values()[:-n] #时间截取至最后一天的前n天retention_rates=[]for i in date:new_user=set(data[data.buy_time==i].cust_id.unique())-set(user) #识别新用户,本案例中设初始用户量为零user.extend(new_user)  #将新用户加入用户群中#第n天留存情况user_nday=data[data.buy_time==i+timedelta(n)].cust_id.unique() #第n天登录的用户情况a=0for cust_id in user_nday:if cust_id in new_user:a+=1retention_rate=a/len(new_user) #计算该天第n日留存率retention_rates.append(retention_rate) #汇总n日留存数据data_retention=pd.Series(retention_rates,index=date)return data_retentiondata_retention=cal_retention(data1,3)  #求用户的3日留存情况day_buy_user_num = data1[data1.be_type == 'buy'].drop_duplicates(['cust_id', 'buy_time']).groupby('buy_time')['cust_id'].count()
day_active_user_num = data1.drop_duplicates(['cust_id', 'buy_time']).groupby('buy_time')['cust_id'].count()
day_buy_rate = day_buy_user_num / day_active_user_num
attr = day_buy_user_num.index
v1 = day_buy_user_num.values
v2 = day_buy_rate.values#设置线宽
plt.figure(figsize=(8, 5))
plt.plot(attr,v1,linewidth=4)
#设置图表标题,并给坐标轴添加标签
plt.title("日购买人数趋势图",fontsize=20)
plt.xlabel('日期',fontsize=10)
plt.ylabel('PV',fontsize=10)#设置线宽
plt.figure(figsize=(8, 5))
plt.plot(attr,v2,linewidth=4)
#设置图表标题,并给坐标轴添加标签
plt.title("日购买率趋势图",fontsize=20)
plt.xlabel('日期',fontsize=10)
plt.ylabel('PV',fontsize=10)




df_rebuy = data1[data1.be_type == 'buy'].drop_duplicates(['cust_id', 'day_id']).groupby('cust_id')['day_id'].count()
df_rebuy[df_rebuy >= 2].count() / df_rebuy.count()data_AARR=data1.groupby('be_type')['cust_id'].count()
#点击量
pv_value=data_AARR['pv']
#收藏量
fav_value=data_AARR['fav']
#加购量
cart_value=data_AARR['cart']
#购买量
buy_value=data_AARR['buy']
##计算转化率,此处由于实际业务中用户收藏和加购没有先后顺序,所以二者合并后计算转化率
#收藏加购转化率
f_c_value=fav_value+cart_value
f_c_ratio=f_c_value/pv_value
print('收藏加购转化率为:%.2f%%'%(f_c_ratio*100))
#购买转化率
buy_ratio=buy_value/pv_value
print('购买转化率为:%.2f%%'%(buy_ratio*100))pv_users = data1[data1.be_type == 'pv']['cust_id'].count()
fav_users = data1[data1.be_type == 'fav']['cust_id'].count()
cart_users =data1[data1.be_type == 'cart']['cust_id'].count()
buy_users = data1[data1.be_type == 'buy']['cust_id'].count()
attr = ['点击', '加入购物车', '收藏', '购买']
values = [np.around((pv_users / pv_users * 100), 2),np.around((cart_users / pv_users * 100), 2),np.around((fav_users / pv_users * 100), 2),np.around((buy_users / pv_users * 100), 2)]from pyecharts.charts import Funnel
funnel1 = Funnel("总体转化漏斗图",width=800, height=400, title_pos='center')
funnel1.add(name='环节',  # 指定图例名称attr=attr,  # 指定属性名称value=values,  # 指定属性所对应的值is_label_show=True,  # 确认显示标签label_formatter='{c}'+'%',  # 指定标签显示的方式legend_top='bottom',    # 指定图例位置,为避免遮盖选择右下展示# pyecharts包的文档中指出,当label_formatter='{d}'时,标签以百分比的形式显示.# 但我这样做的时候,发现显示的百分比与原始数据对应不上,只好用上面那种显示形式label_pos='outside',  # 指定标签的位置,inside,outsidelegend_orient='vertical',  # 指定图例显示的方向legend_pos='right')  # 指定图例的位置funnel1.render_notebook()product_buy=data1.loc[data1['be_type']=='buy',['cust_id','group_id']]
product_buy_count=product_buy.groupby('group_id')['cust_id'].count().rename('销售次数')product_buy_count=pd.DataFrame(product_buy_count)
product_buy_count=product_buy_count.sort_values(by='销售次数',axis=0,ascending = False)product_buy_count=product_buy_count.iloc[:10,:]
product_buy_count

product_pv=data1.loc[data1['be_type']=='pv',['cust_id','group_id']]
product_pv_count=product_pv.groupby('group_id')['cust_id'].count().rename('点击次数')
product_pv_count=pd.DataFrame(product_pv_count)
product_pv_count=product_pv_count.sort_values(by='点击次数',axis=0,ascending = False)
product_pv_count=product_pv_count.iloc[:10,:]
product_pv_count

item_behavior=data.groupby(['group_id','be_type'])['cust_id'].count().unstack(1).rename(columns={'pv':'点击量','fav':'收藏量','cart':'加购量','buy':'购买量'}).fillna(0)
item_behavior.head()
item_behavior['转化率']=item_behavior['购买量']/item_behavior['点击量']
item_behavior.head()

top=pd.concat([product_buy_count,product_pv_count],axis=1,sort=False)
top

分析报告:从以上结果中分析即可。
例如:
1、每天凌晨点击量最少的时间段,用户访问量最少的情况。用户活跃高峰期,针对这个高峰期应该做些什么。
2、用户回购率的情况及分析。
3、订单分析
4、漏斗分析

电商数据分析--用户行为分析相关推荐

  1. 小红书用户画像分析_电商平台用户画像分析

    电商平台用户画像分析 1.项目背景 1.1 分析目的 通过分析用户的行为特征,深挖用户的潜在价值. 1.2 产品简述 由于数据脱敏无法具体了解产品的种类,通过数据只能基本判断该产品的消耗量和复购率并不 ...

  2. 基于hadoop的小红书电商网站用户行为分析系统毕业论文+任务书+开题报告+答辩PPT+知网查重报告+项目源码及Mysql数据

    基于hadoop的小红书电商网站用户行为分析系统毕业论文+任务书+开题报告+答辩PPT+知网查重报告+项目源码及Mysql数据库-99源码网,程序代做,代写程序代码,代写编程,代写Java编程,代写p ...

  3. 电商平台用户行为分析

    近年,诸多电商平台逐渐扩大规模,瓜分市场,电商平台不再一家独大.而拥有一定用户基础的平台需要保有一席之地,就需要分析用户行为,找出提高盈利水平的方法.以淘宝为例,对用户行为进行分析. 分析过程: 提出 ...

  4. 电商App用户行为分析

    一.分析背景和目的 分析背景:如今,电商在我们的日常生活中扮演着越来越重要的角色,它给我们的生活带来了极大的便利,基本足不出户就能就能就能买到我们所需的各种生活物资,淘宝作为我国最最大的电商平台,绝大 ...

  5. 电商平台用户行为分析—Tableau

    在之前文章https://blog.csdn.net/rubyw/article/details/124632518基础上结合tableau进行分析 一.获取数据 连接mysql数据库,登录 连接目标 ...

  6. SQL分析--淘宝电商数据分析用户行为

    数据 https://link.zhihu.com/?target=https%3A//tianchi.aliyun.com/dataset/dataDetail%3FdataId%3D46%26us ...

  7. Olist巴西电商数据分析(二)

    Olist巴西电商数据分析 上篇指路:https://blog.csdn.net/jlycd/article/details/113887419 文章目录 Olist巴西电商数据分析 项目背景 分析目 ...

  8. 数据集收集-包含《COVID-19》,《英国在线零售业务》,《电商行业用户行为分析数据集》,《电商婴儿用户》,《亚马逊手机》等17个数据集,用于数据分析挖掘,kaggle比赛练习

    COVID-19数据集 本数据集记录了2019年12月01日至2020年7月24日,每日精确到国家.省.市的确诊.疑似.治愈.死亡人数.2020年02月07后数据从今日头条接口采集,每小时57分自动更 ...

  9. 电商数据分析方案和BI强强联合,一站式做分析

    搭建一个电商大数据分析平台需要哪些条件?总的来说需要一套满足电商数据分析需求的方案,一个能够提供强大数据计算分析功能和数据可视化图表的平台,比如电商数据分析方案和奥威BI软件这样的组合. 电商数据分析 ...

最新文章

  1. 又一无人车玩家驶出深圳:元戎启行获近5000万美元融资,军运会提供Robo-Taxi接驳服务...
  2. 操作系统的进程调度简析
  3. (转)为什么人生气时说话用喊的?
  4. php如何与数据库连接,PHP文章如何和数据库连接(1)
  5. C#算法设计查找篇之05-二叉树查找
  6. activiti高亮显示图片_电气自动化控制中,工业显示器应用如何“硬核”拓展细分领域?...
  7. 显示已暂停_美国大学这类研究生项目真的要凉?盘点美国暂停招生的研究生项目~...
  8. SQL 2005 Beta2 和VS 2005 Beta1安装的问题
  9. iOS中的armv6、armv7、armv7s含义详解
  10. EDIUS 9 PRO(视频编辑软件)
  11. 关于jpa的mappedBy用法
  12. 阿里云活动价格点击购买时价格上涨的解决办法
  13. Vue3 router 默认加载 views 文件夹下全部vue文件
  14. 引导过程(修复MBR故障和GRUB鼓掌及破解密码)
  15. 滁州市区地图小区楼盘图矢量高清cdr|pdf2021年(高品质)
  16. Markov Chain Monte Carlo
  17. 微信小程序运用云函数调用新闻类API
  18. Linux创建磁盘并分区命令
  19. 9 个非常实用的网络调试命令
  20. 齐博x1用户登录接口

热门文章

  1. 在aws亚马逊云EC2上创建root用户,并使用root用户登录
  2. mysql强制修改root密码
  3. 数据平台初试(产品篇)——监控大屏初露面
  4. 添加Win10文件夹详细信息------统一显示内容
  5. 显卡---显卡驱动---CUDA---Cudnn
  6. 【正点原子Linux连载】第六十七章 Linux USB驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
  7. Kurento应用开发指南(以Kurento 5.0为模板) 之四:示例教程 一对一视频呼叫
  8. 卡巴斯基和Endtab.org开设新课程教授用户如何防范人肉搜索
  9. (干货)备战2021年软考中级网络工程师-04知识产权与标准化
  10. OpenWrt固件实现路由器定时重启方法