利用Python进行电商网站用户行为分析

news/2024/5/20 12:29:06/文章来源:https://blog.csdn.net/xiao_pingping/article/details/106414417

电商网站用户行为分析

项目需求

1.用户整体购物情况怎样?

  • 统计数据集中总的用户数,商品数,商品类别数,用户行为数。
  • 核心指标如PV,UV,跳出率,复购率,留存率等分别是多少?

2.用户的购物行为情况。

3.统计出每天各种行为的访问次数。

4.找出购买率最高的前二十个商品品类。

分析过程:获取业务方的需求->获取数据->分析数据->整理并清洗异常数据->实现需求

获取数据

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
%matplotlib inline
# data = pd.read_csv('./UserBehavior.csv')
# 数据有3.7+ GB,比较大,全部读取耗费时间和内存,因此可以使用pandas的迭代读取方法,先获取前30万条数据,熟悉数据,并加入列名
user_behavior = pd.read_csv('./UserBehavior.csv',header=None,iterator=True)
head_data = user_behavior.get_chunk(300000)
head_data.head()
01234
0122683182520377pv1511544070
1123333462520771pv1511561733
212576651149192pv1511572885
3138308084181361pv1511593493
4143655852520377pv1511596146
# 加入列名
head_data.columns = ['user_id','goods_id','category_id','behaviour','timestamp']
head_data.head()
user_idgoods_idcategory_idbehaviourtimestamp
0122683182520377pv1511544070
1123333462520771pv1511561733
212576651149192pv1511572885
3138308084181361pv1511593493
4143655852520377pv1511596146

   数据集(UserBehavior.csv)来源于:阿里云天池数据集。包含了2017年11月25日至2017年12月3日之间,有行为的约一百万随机用户的所有行为(行为包括点击、购买、加购、喜欢)。数据集的每一行表示一条用户行为,由用户ID、商品ID、商品类目ID、行为类型和时间戳组成,并以逗号分隔。

  • pv:商品详情页点击pv
  • buy:商品购买
  • cart:将商品加入购物车
  • fav:收藏商品
head_data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 300000 entries, 0 to 299999
Data columns (total 5 columns):#   Column       Non-Null Count   Dtype 
---  ------       --------------   ----- 0   user_id      300000 non-null  int64 1   goods_id     300000 non-null  int64 2   category_id  300000 non-null  int64 3   behaviour    300000 non-null  object4   timestamp    300000 non-null  int64 
dtypes: int64(4), object(1)
memory usage: 11.4+ MB

   从上可以看出,实验数据集没有缺失值。

  • user_id 整数类型
  • goods_id 整数类型
  • category_id 整数类型
  • behaviour 字符串,枚举类型,包含了pv、buy、cart和fav四种行为
  • timestamp 时间戳,整数类型,需要转换为日期类型

数据清洗

(1)查看是否有缺失值

head_data.isnull().any()
user_id        False
goods_id       False
category_id    False
behaviour      False
timestamp      False
dtype: bool

(2)将时间戳转为时间格式,并新加一列time

head_data['time'] = pd.to_datetime(head_data['timestamp'],unit='s')

(3)删除时间戳列

head_data.drop(['timestamp'],axis=1,inplace=True)

(4)将time设置为索引,目的是方便清除异常时间的数据

head_data.set_index('time',inplace=True)

(5)数据是2017年11月25日至2017年12月3日之间,将异常时间的数据清洗掉

head_data = head_data['2017-11-25':'2017-12-04']
head_data.head()
user_idgoods_idcategory_idbehaviour
time
2017-11-25 01:21:2512576651149192pv
2017-11-25 07:04:53138308084181361pv
2017-11-25 07:49:06143655852520377pv
2017-11-25 13:28:01146060182735466pv
2017-11-25 21:22:221230380411153pv

需求实现

(1)用户整体购物情况怎样?

  • 统计数据集中总的用户数,商品数,商品类别数,用户行为数。
# 用户数、商品数、商品类别数
base_count = head_data[['user_id','goods_id','category_id']].nunique()# 用户行为数
behaviour_count = head_data['behaviour'].count()print(base_count,'\n','用户行为数:',behaviour_count)
user_id          2953
goods_id       161249
category_id      4494
dtype: int64 用户行为数: 296000

   由以上的代码可以得到:用户数为2953、 商品数为161249、商品品类数为4494、用户行为数为296000

  • 核心指标如PV,UV,跳出率,复购率,留存率等分别是多少?
behaviour_group = head_data.groupby(['behaviour']).count()
behaviour_group
timeuser_idgoods_idcategory_id
behaviour
buy6247624762476247
cart16603166031660316603
fav7429742974297429
pv265721265721265721265721
PV = behaviour_group[3:4]['user_id'].values[0]
UV = base_count[0:1].values[0]
PV/UV
89.98340670504571

   页面总访问量(PV):265721、访问用户总数(UV):2953、平均每人每周访问量为90次页面

(2)统计用户的每个购买行为

   思路:使用groupby进行分组统计

count_by_user_behav = head_data.groupby(['user_id','behaviour']).count()
count_by_user_behav.head()
goods_idcategory_id
user_idbehaviour
1pv5353
100buy88
fav33
pv7272
1000cart11
  • 绘制折线图,展示用户的购买行为
count_by_userid_behav = count_by_user_behav['goods_id']count_by_userid_behav[1:100].plot(kind='bar',figsize=(150,50))
plt.xlabel('用户及行为',fontsize=100)
plt.ylabel('用户购买行为次数',fontsize=100)

在这里插入图片描述
   使用pandas自带的绘图功能进行绘制柱状图,因为用户有很多,我截取了部分用户数据及用户行为

(3)统计每天各行为的访问次数(绘制折线图)

# 根据行为类型进行分组统计
count_by_behav = head_data.groupby('behaviour')
# 设置画图尺寸大小
plt.figure(figsize=(12,6))for group_name,group_data in count_by_behav:# 对每天的行为进行统计,resample中的D表示天,也可以用H按小时统计count_by_day = group_data.resample('D').count()['behaviour']# 以日期作为X轴,以次数作为Y轴x = count_by_day.indexy = count_by_day.values# 设置x,y轴数据以及每条线的标签名plt.plot(range(len(x)),y,label=group_name)# 设置x轴的刻度以及对应的标签,rotation是设置标签的倾斜度
plt.xticks(range(len(x)),x,rotation=45)# 对每条折线设置图例,自动选择最佳位置
plt.legend(loc='best')# 设置x轴和y轴的标签
plt.xlabel('日期',fontsize=12)
plt.ylabel('行为次数',fontsize=12)# 设置标题
plt.title('每天各行为的访问次数')plt.show()

在这里插入图片描述
   上图可以明显的看出,用户4中行为的走势,用户访问页面的次数是最多的,且在上图中,2017年12月02日出现了小高峰,通过查阅资料发现,这天为星期六,但12月03日的访问量并不是很高,如果不是数据准确性的问题,则可以说明这天可能做了活动,或APP改版等多种原因,导致这一天的访问量出现小高峰。

(4)找出购买率最高的前二十个商品品类(以柱状图展示)

  • 购买率的计算时根据四种行为来进行计算的。
  • 购买率=购买次数/(访问+加入购物车+收藏+购买)
  • 思路:要根据商品品类进行分组
# 取消以时间为索引
head_data = head_data.reset_index()
# 按照商品的品类进行分组
count_by_category_id = head_data.groupby('category_id')
# 分组后每组数据的数量
count_by_category_id.size().head()
category_id
2171    12
2410     5
5064    67
7769     4
8109     1
dtype: int64

   分组后的数据说明了,在上述的数据集中,共有4494个商品品类。

# 查看分组后的部分数据
for group_name,group_data in count_by_category_id:print('组名:',group_name)print('数据:\n',group_data)print('数组的形状:\n',group_data.shape)break
组名: 2171
数据:time  user_id  goods_id  category_id behaviour
24525  2017-11-27 11:12:34  1001120   1988565         2171        pv
24526  2017-11-27 11:19:35  1001120    536228         2171        pv
24541  2017-11-28 03:36:33  1001120   1988565         2171        pv
24543  2017-11-28 03:38:28  1001120   1988565         2171       fav
24570  2017-11-30 09:09:37  1001120   1988565         2171        pv
24571  2017-11-30 09:13:42  1001120   2898033         2171        pv
55473  2017-11-28 17:37:54  1002331   1981587         2171        pv
55474  2017-11-28 17:39:35  1002331   2786201         2171        pv
55475  2017-11-28 17:40:29  1002331   1981587         2171        pv
191651 2017-12-02 05:44:33  1008631    591563         2171       fav
191653 2017-12-02 05:44:58  1008631    591563         2171        pv
293787 2017-11-27 14:02:21  1013456   4767007         2171        pv
数组的形状:(12, 5)

   通过shape可以看出这组数据的形状为12行5列,一次可以直接用shape[0]作为购物的总次数使用,即取的是行数,如果是shape[1]则取的是列数,接下来在用behaviour进行分组,通过size属性,获取buy这一组的次数,最后将商品品类中购买率一一对应保存到字典中,使用内置函数sorted对字典进行排序。

con_dict = {}
for group_name,group_data in count_by_category_id:# 总次数total = group_data.shape[0]buy = 0try:# 有些商品没有购买行为,以buy作为索引获取时会出错,使用异常语句捕获一下异常buy = group_data.groupby('behaviour').size()['buy']except:pass# 购买转化率buy_con = (buy/total)*100# 类别名称对应转化率con_dict[group_name] = buy_con# 排序
sort_con = sorted(con_dict.items(),key=lambda item:item[1],reverse=True)# 对排序后的列表取值
sort_con_20 = sort_con[: 20]sort_con_20
[(324339, 100.0),(589765, 100.0),(654045, 100.0),(665245, 100.0),(848089, 100.0),(910741, 100.0),(1169371, 100.0),(1340836, 100.0),(1489467, 100.0),(1516260, 100.0),(1672287, 100.0),(1712001, 100.0),(1781126, 100.0),(2464463, 100.0),(2529139, 100.0),(2555879, 100.0),(2854994, 100.0),(2923285, 100.0),(3011375, 100.0),(3428464, 100.0)]

   得到前20个商品品类的购买转化率后,可以根据这个数据进行绘制图形

# 获取商品的品类
label = [i[0] for i in sort_con_20]# 获取转化率
con = [i[1] for i in sort_con_20]
# 绘制图形
plt.figure(figsize=(20,6))
plt.bar(range(len(sort_con_20)),con,label=label)plt.xticks(range(len(sort_con_20)),label)plt.xlabel('商品的品类',fontsize=15)
plt.ylabel('商品品类的购买转化率',fontsize=15)
plt.title('各类商品的购买转化率')plt.show()

在这里插入图片描述
   总结:
通过使用Python来对电商网站用户行为进行简单的分析,其中涉及的分析点很多,在这里就不一一介绍,后续将会在MySQL数据库中使用SQL语句来对电商网站的用户行为进行分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_870634.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win7 IIS7 发布网站 出现 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误

windows7下发布web项目需要安装IIS,当安装完以后,web程序已经映射到了本地IIS上,运行出现如下错误提示 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler” 原因: vs2010默认的是4.0框架&#xff0c;4.0的框架是独立的CLR&…

UI应遵循的三大网站设计原则

触摸优先设计、响应式设计、移动优先设计是UI设计师设计网站应遵循的三大原则&#xff0c;以使网站最大范围地适应各种设备。外文《Designing The Well-Tempered Web》中详细阐述了这三大原则。CSDN对该文进行了编译&#xff0c;内容如下&#xff1a; 随着技术的进化&#xff…

如何构建高扩展性网站?

阅读目录 主要内容化简方程分布工作横向扩展设计使用正确的工具不要做重复的工作积极利用缓存从错误中吸取教训数据库原则容错设计与故障控制避免或分发状态异步通信和消息总线其他原则参考 本篇通过阅读《高扩展性网站的50条原则》&#xff0c;总结出以下内容。 一方面博主没有…

利用压缩网页来提升网站浏览速度

转至 &#xff1a;http://blog.csdn.net/joliny/article/details/2124344 在线查询&#xff1a;http://tool.chinaz.com/Gzips 本文主要介绍如何通过对页面进行压缩从而节省网站的带宽以及提升用户的访问速度。 网站的访问速度是由多个因素所共同决定的&#xff0c;这些因素例…

机器学习:K-近邻算法(二)约会网站配对效果

目录 K-近邻算法实战(二)&#xff1a;约会网站配对效果判断 实战 1.背景介绍 2.准备数据&#xff1a;数据分类 3.分析数据&#xff1a;数据可视化 4.准备数据&#xff1a;数据归一化 5.测试算法&#xff1a;验证分类器 6.使用算法&#xff1a;构建完整可用系统 K-近邻算法实…

前端布局,最如何合理布局最底下的公司和网站信息

如何让公司和网站信息始终布局在页面的最下方&#xff0c;之前试过多种方式&#xff0c;特别是用固定定位的方法&#xff0c;很难达到满意的效果。 后来多次尝试后得出&#xff0c;这块还是有窍门 首先父盒子要设置相对定位&#xff0c;并且设置页面的高度&#xff08;也就是说…

VS.NET2013发布网站的时候去掉.cs文件(预编译)

原帖地址&#xff1a;http://blog.sina.com.cn/s/blog_6f72ff900102vcbp.html VS2013在WIN8下扁平的UI和我今天锈垢的大脑&#xff0c;让找这个设置找了好半天&#xff01;&#xff01;&#xff01; OK&#xff0c;言归正传。 在要发布的网站上右键&#xff0c;选择"发布…

一步步构建大型网站架构

之前我简单向大家介绍了各个知名大型网站的架构&#xff0c;MySpace的五个里程碑、Flickr的架构、YouTube的架构、PlentyOfFish的架构、WikiPedia的架构。这几个都很典型&#xff0c;我们可以从中获取很多有关网站架构方面的知识&#xff0c;看了之后你会发现你原来的想法很可能…

复制文字需要登录的网站如何跳过登录

复制文字需要登录的网站如何跳过登录 网页复制类型js代码使用说明 网页复制类型 文章展示的网页&#xff0c;根据可复制性&#xff0c;我将其分成三类&#xff1a; 文字可复制&#xff1a;没有任何文字复制的限制文字可复制但需要登录&#xff1a;选中文字后复制时&#xff0…

正在找工作的设计师,你应该把自己的作品集放在云端--读完此文轻松搞定个人作品网站

AWO起源 很多公司的内推系统对设计师非常不友好&#xff0c;甚至可以说“歧视设计职位”&#xff0c;有的要求作品必须是pdf&#xff0c;有的要求体积限制在12m以内&#xff0c;反正花样繁多。一个优秀的设计作品要阐述清晰设计理念和观点&#xff0c;往往需要一个2000px以上的…

设计师搭建免费好用的个人作品网站

作为设计师&#xff0c;UI设计师也好&#xff0c;平面设计师也好&#xff0c;找工作时拥有一个漂亮高效的个人作品网站会特别方便。今天要为大家介绍一个开源项目&#xff1a;Art on web-AOW&#xff0c;15分钟拥有自己的作品网站。先把这个项目的Github链接放上&#xff1a;ht…

全网17个在线平面设计网站评测(基础体验)

目录 小而美高大全1. 轻图&#xff1a;https://www.logosc.cn/photo/2. Canva &#xff1a;https://www.canva.cn收费不是原罪&#xff0c;难用还收费才是罪3. 图怪兽&#xff1a;https://818ps.com/4. 图帮主&#xff1a;https://www.tubangzhu.com/5. 图小白&#xff1a;http…

有哪些高级网站,使用一次你就离不开了?

笔者用了5年时间&#xff0c;从小白爬到了运营总监&#xff0c;最不在意的爽感层面的用户体验&#xff0c;而是更在意哪些工具哪些网站能够是实实在在的提升效率&#xff0c;今天我就把我升职加薪路上对我帮助极大的5个网站介绍给大家&#xff0c;希望对大家的以后的奋斗或多或…

有哪些好玩有趣的国内外网站值得分享?

图宇宙——自动配文案、自动出图的设计神器 模糊文字生成器 ——朋友圈引流、群聊吸引眼球的在线利器 Incredibox——人人都可创作专属的铃声、BGM和配乐 CTS - conserve the sound 旧物声音博物馆 AutoDraw —— 自动笔迹幻化成简笔画的利器 一、图宇宙——自动配文案、自…

有哪些鲜为人知但异常强大的网站工具?

持续更新中&#xff0c;最新更新至2022年5月10日&#xff0c;笔者推荐的网站一般都是免费、好用、堪称神器的网站。 Notion——新时代的在线文档和协同工具图宇宙——自动配文案、自动出图的在线设计神器Bitcron&#xff1a;小白会用的九块九建站工具Gitmind&#xff1a;免费好…

平面设计师经常去哪些网站?

导航&#xff1a; Peculiar——色彩搭配全的百度和维基百科 Nolipix——自动配文案、自动出图的设计神器 Happy Hues ——轻松搞定色彩搭配 LogoLuck —— AI一键生成和修改Logo FontPairings.ByPeople ——自动寻找最适合的字体 欢迎关注持续更新~ 正文&#xff1a; P…

你见过哪些让你相见恨晚的神器网站?

现在给大家分享7个神器网站&#xff0c;亲测实用~你要悄悄用起来&#xff0c;然后惊艳所有人 1、图宇宙——AI自动配文案、自动设计、秒出图 2、Archive.today——收藏任何你想要收藏的网站 3、Bitealbe —— 免费套模板快速生成动画视频 4、Upscale Pics ——无损放大、消…

互联网人必备的高效工具和网站

Notion 一句话评语&#xff1a;没有被商业化污染的瑞士军刀级产品&#xff0c;个人最喜欢的一款在线应用。 产品特点&#xff1a;全能、协同、美观 使用体验&#xff1a;www.notion.so Notion 在国际市场上非常火&#xff0c;被誉为唯一可以取代印象笔记、google docs 的产品。…

大型网站的HTTPS实践(一)——HTTPS协议和原理

前言 百度于2015年上线了全站HTTPS的安全搜索&#xff0c;默认会将HTTP请求跳转成HTTPS。从今天开始&#xff0c;我们将会分享多篇系列文章&#xff0c;为大家重点介绍和解析百度的HTTPS最佳实践。 HTTPS协议概述 HTTPS可以认为是HTTPTLS。 HTTP协议大家耳熟能详了&#xff0c;…