某电商网站用户行为分析【已脱敏】

news/2024/5/13 22:15:59/文章来源:https://blog.csdn.net/kun_csdn/article/details/122910281

用户行为分析

final_data为脱敏后的数据

final_data.head()
user_iditem_idbehavior_typeuser_geohashitem_categorytime
054007195796335351NaN39402014-11-24 16
11369526423378002941NaN48302014-11-22 12
21212551581089267881NaN19702014-11-22 08
3722560731440907861NaN40082014-12-09 20
46564593325002918519t4qqgn28252014-11-25 17
data = final_data[['user_id', 'item_id', 'behavior_type', 'time']]
data.head()
user_iditem_idbehavior_typetime
0540071957963353512014-11-24 16
113695264233780029412014-11-22 12
212125515810892678812014-11-22 08
37225607314409078612014-12-09 20
46564593325002918512014-11-25 17
data.shape
(12256906, 4)
data['date'] = data['time'].map(lambda x:x.split(' ')[0])
data['hour'] = data['time'].map(lambda x:x.split(' ')[1])
data.head()
C:\work\software\Anaconda5.3.0\lib\site-packages\ipykernel_launcher.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value insteadSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy"""Entry point for launching an IPython kernel.
user_iditem_idbehavior_typetimedatehour
0540071957963353512014-11-24 162014-11-2416
113695264233780029412014-11-22 122014-11-2212
212125515810892678812014-11-22 082014-11-2208
37225607314409078612014-12-09 202014-12-0920
46564593325002918512014-11-25 172014-11-2517
data.drop(['time'], axis=1, inplace=True)
data.head()
user_iditem_idbehavior_typedatehour
0540071957963353512014-11-2416
113695264233780029412014-11-2212
212125515810892678812014-11-2208
37225607314409078612014-12-0920
46564593325002918512014-11-2517

pandas中的map()、apply()、applymap()函数的区别

  • map函数是Series对象的一个函数,DataFrame中没有map(),map()的功能是将一个自定义函数作用于Series对象的每个元素。
  • apply()函数的功能是将一个自定义函数作用于DataFrame的行或者列
  • applymap()函数的功能是将自定义函数作用于DataFrame的所有元素
  • 总结:三者区别在于应用对象的不同
data.shape
(12256906, 5)
data.dtypes
user_id           int64
item_id           int64
behavior_type     int64
date             object
hour             object
dtype: object
# 转换时间类型
data['date'] = pd.to_datetime(data['date'])
data['hour'] = data['hour'].astype('int32')
data.dtypes
user_id                   int64
item_id                   int64
behavior_type             int64
date             datetime64[ns]
hour                      int32
dtype: object
#  看下用户数
data['user_id'].nunique()
10000
# 是否有缺失值
data.isnull().sum()
user_id          0
item_id          0
behavior_type    0
date             0
hour             0
dtype: int64

流量指标分析

  • 流量指标:用户在该网站操作的每一个步骤记录的量化指标

  • 指标有浏览量PV,独立访客数UV

  • 针对每一位访客,还可以用以下的指标衡量访客的质量

  1. 平均在线时间:平均每个UV访问页面的停留时间
  2. 平均访问深度:平均每个UV的PV数量
  3. 跳失率:浏览某个页面后就离开的访问次数/该页面的全部访问次数
# 总pv值是什么,一定时间周期内(本次)的pv数也就是全部的记录数
total_pv = data.shape[0]
total_pv
12256906
# 计算日均pv
pv = data.groupby(['date'])['user_id'].count().reset_index()
pv
dateuser_id
02014-11-18366701
12014-11-19358823
22014-11-20353429
32014-11-21333104
42014-11-22361355
52014-11-23382702
62014-11-24378342
72014-11-25370239
82014-11-26360896
92014-11-27371384
102014-11-28340638
112014-11-29364697
122014-11-30401620
132014-12-01394611
142014-12-02405216
152014-12-03411606
162014-12-04399952
172014-12-05361878
182014-12-06389610
192014-12-07399751
202014-12-08386667
212014-12-09398025
222014-12-10421910
232014-12-11488508
242014-12-12691712
252014-12-13407160
262014-12-14402541
272014-12-15398356
282014-12-16395085
292014-12-17384791
302014-12-18375597
pv = pv.rename(columns={'user_id':'pv'})
pv.head()
datepv
02014-11-18366701
12014-11-19358823
22014-11-20353429
32014-11-21333104
42014-11-22361355

#日均uv的计算
uv = data.groupby(['date'])['user_id'].apply(lambda x:x.drop_duplicates().count())
uv.head()
date
2014-11-18    6343
2014-11-19    6420
2014-11-20    6333
2014-11-21    6276
2014-11-22    6187
Name: user_id, dtype: int64
uv = uv.reset_index().rename(columns={'user_id':'uv'})
uv.head()
dateuv
02014-11-186343
12014-11-196420
22014-11-206333
32014-11-216276
42014-11-226187
# 画图
import matplotlib.pyplot as plt
font = {'family':'SimHei', 'size':'20'}
plt.rc('font', **font)plt.figure(figsize=(20,5))
plt.xticks(rotation=30)plt.plot(pv['date'], pv['pv'])plt.title('日均pv')plt.show()

日均PV

# 日均uv
plt.figure(figsize=(20,5))
plt.xticks(rotation=30)plt.plot(uv['date'], uv['uv'])plt.title('日均uv')# 保存图片
plt.savefig('日UV.png')plt.show()

日均UV

  • pv和uv都是在12月12日达到峰值
  • 在双十二前后会有较高波动,而平常的波动比较平稳

每一个时刻的PV和UV值

data.head()
user_iditem_idbehavior_typedatehour
0540071957963353512014-11-2416
113695264233780029412014-11-2212
212125515810892678812014-11-228
37225607314409078612014-12-0920
46564593325002918512014-11-2517
pv_hour = data.groupby(['hour'])['user_id'].count()
pv_hour.head()
hour
0    517404
1    267682
2    147090
3     98516
4     80487
Name: user_id, dtype: int64
pv_hour = pv_hour.reset_index().rename(columns={'user_id':'pv'})
pv_hour.head()
hourpv
00517404
11267682
22147090
3398516
4480487
uv_hour = data.groupby(['hour'])['user_id'].apply(lambda x:x.drop_duplicates().count())
uv_hour = uv_hour.reset_index().rename(columns={'user_id':"uv"})
uv_hour.head()
houruv
005786
113780
222532
331937
441765
plt.figure(figsize=(20,5))
plt.plot(uv_hour['hour'],uv_hour['uv'])plt.xticks(rotation=30)
plt.title('每小时UV')# 保存图片
plt.savefig('每小时UV.png')plt.show()

每小时UV

plt.figure(figsize=(20,5))
plt.plot(pv_hour['hour'],pv_hour['pv'])plt.xticks(rotation=30)
plt.title('每小时PV')# 保存图片
plt.savefig('每小时PV.png')plt.show()

每小时PV

# 每个UV的平均访问深度
# 全部的PV除以用户数
round(data.shape[0] / data['user_id'].nunique(), 2)
1225.69
# 每个UV的日均访问深度
round(data['user_id'].shape[0] / data['user_id'].nunique() / data['date'].nunique(), 2)
39.54

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

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

相关文章

Linux实训——搭建动态网站

山东科技大学 信息工程系 内容说明:本篇文章是《嵌入式操作系统》实训报告的第三部分,使用WordPress实现了动态网站的搭建,使用php编写了学生信息管理系统的动态网页。建议先阅读实训报告第二部分 《嵌入式操作系统》实训报告完整内容介绍&am…

使用requests和BeautifulSoup库实现从任意网站爬取数据_附源代码+注释

文章目录 一.了解页面信息二.爬取数据代码三.获取数据结果 一.了解页面信息 这里我们以酷狗音乐古风榜为例 由此可见我们需要我曲目和歌手的信息都在框住的class里面 二.爬取数据代码 #导入requests和BeautifulSoup库 import requests from bs4 import BeautifulSoupurl &…

黄聪:C#模拟网站页面POST数据提交表单(二)--HttpWebRequest以及HttpWebResponse (转)

黄聪:C#模拟网站页面POST数据提交表单(二)--HttpWebRequest以及HttpWebResponse (转) 上次介绍了用WebClient的方式提交POST请求,这次,我继续来介绍用其它一种方式 HttpWebRequest以及HttpWebRe…

黄聪:C#模拟网站页面POST数据提交表单(一)--WebClient (转)

黄聪:C#模拟网站页面POST数据提交表单(一)--WebClient (转) C#的提交表单方式主要有两种WebClient与HttpWebRequest,这里先介绍一种 WebClient,转送门:http://msdn.microsoft.com/zh…

搭建基于github的个人网站

注: 1. 没写完,持续更新。 2. 有些条目写的顺序可能会有点奇怪,比如说我可能写完给博客换主题,然后写了买域名,又突然觉得换主题那块要再加一些内容,所以看上去可能我还没讲到买域名,但是自己…

[网站动态]年轻态SNS席卷台湾

年轻态SNS席卷台湾 年轻态SNS,个人感觉,比BOKEE这种的距离赢利更为接近。这次的文章来自于台湾 BLOGGER(Jason Chiang),分析的很是透彻,结合我的文章,让我们再度思考年轻态SNS的盈利&#xff0c…

提升网站性能开发的10个技巧

摘要:随着网络的高速发展,网络性能的持续提高成为能否在芸芸App中脱颖而出的关键。高度联结的世界意味着用户对网络体验提出了更严苛的要求。文中为大家总结10条有关性能提升的经验。 随着网络的高速发展,网络性能的持续提高成为能否在芸芸Ap…

《SparkStreaming 2》--UpdateStateByKey操作、spark-submit提交、网站日志案例(禁止爬虫、transform和join连接、网站的UV访问数、窗口操作PV)

UpdateStateByKey操作(按照key更新状态) 其它案例都是之前spark用到过的,以下是特殊RDD (之前案例统计的是5秒内的总次数,并不是wordcount的总次数,此Rdd可以统计整个流 流过的内容的wordcount总次数) 该updateStateByKey操作允许您在使用新信息不断更新时保持任…

js事件中的onmouseout和onmouseleave

写一个项目的过程中发现一个问题: 鼠标监听A元素的onmouseout事件,结果当鼠标移到A元素里面的B元素时,事件也触发了。 原因是因为:事件冒泡。 当鼠标从A元素进入到B元素时,A也会触发自己的onmouseout事件&#xff0…

2022百度收录方法-顺鑫说seo

今年已经是2022年头了,现在百度是一个怎样的形式呢,好多人都在吐槽,也有很多默默无闻的人。 我自认为我是一个很有想法的人。但是我不认为我是一个聪明的人。 后来的我明白,时间和实践才是检验真理的唯一标准。 我们一定要多看&am…

网站设计流程

以理论的角度: 使用NoahWeb进行网站开发,您可以将开发过程分为三个阶段:需求阶段、实现阶段、以及发布阶段。在三个阶段中,您同样可做到始终探索用户需求,多次将DEMO交付客户进行演示,网站开发中由于NoahW…

负载测试—网站的“体能”测试

通常来说,负载测试可以采用手动和自动两种方式。手动测试会遇到很多问题,如无法模拟太多用户、测试者很难精确记录相应时间、连续测试和重复测试的工作量特别大等。因此对于负载测试,手动方式通常用于初级的负载测试。目前,绝大多…

如何查看网站的端口

转:http://jingyan.baidu.com/article/4dc40848be2fd2c8d946f1a0.html 本文教您: 1,网站的域名和端口是什么含义 2,网站的端口到底有哪些 方法/步骤 1 通俗化解释什么是网站的端口,特别实用。 ---------------------------------…

ubuntu网站服务器环境搭建

转账自:ubuntu网站服务器搭建 如果想用Ubuntu作为网站的服务器,一些基本的服务是必备的。本文对环境的搭建做一个简单的整理。 Appach Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和…

WordPress 网站漏洞扫描 wpscan Kali Linux

在 WordPress 网站漏洞扫描,我将向你展示一些有用的命令 , 我们可以使用在 wpscan 搜索已知的漏洞在 wordpress 博客。 打开终端 , 使用下面的命令以启动对目标 wpscan WordPress 网站。 使用 wpscan --url blog.tld (更换 blog.tld 域与要扫描的漏洞。…

linux获取网站的响应时间

一个简易的抓包脚本 ----- url_check.sh ----- if ! [ $# -eq 1 ] then echo "Usage For example:" echo "$0 www.yy.com" exit -1 fi domain$1 echo "输入URL:"$domain echo "" echo "开始curl检测:" cu…

Git 分支 - 分支的新建与合并 分支的新建与合并 让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。 你将经历如下步骤: 开发某个网站。 为实现某个新的需求,创

Git 分支 - 分支的新建与合并 分支的新建与合并 让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。 你将经历如下步骤: 开发某个网站。 为实现某个新的需求,创建一个分支。 在这个分支上开展工作。 正…

怎样得到一个清爽干净简洁的CSDN文章页面?开源一个小插件,可自由定制用于其他网站。【含视频教程】

!!!想直接看视频教程的请点这里!!! 一、原版CSDN文章页面与清爽版对比 1.1 原版CSDN文章页面 原版页面分了三次截图还没截全: 1.2 清爽版CSDN文章页面 二、忍不住吐槽一下CSDN(…

360浏览器访问https网站直接跳转 se://error/ 或者se://errorpage/问题(无法打开网站,网页走丢了)解决方法

最近发现360浏览器访问某个https://网站直接跳转 se://error/ 或者se://errorpage/具体如下 用其他浏览器,例如chrome就可以正常访问那个https网站。所以问题出在浏览器这块了。经过查询资料和测试发现,这个问题的正确解决办法有两个 1、如果安装了IE8等…

iptables+shell防御网站

1.简易搭建一个web服务器 2.分析访问HTTP的日志,目录在 /var/log/httpd/access_log 3.根据网站一分钟之内的访问量来判断,限制IP过多访问,所以要设置时间变量来控制时间。先通过awk进行日志筛选出符合条件的ip,然后通过iptabl…