用Python分析淘宝用户行为

发布时间:2024-11-24 17:16

使用Python进行数据分析入门 #生活技巧# #工作学习技巧# #数字技能训练#

数据来源:

阿里云 天池数据集https://tianchi.aliyun.com/dataset/dataDetail?dataId=46

阿里巴巴提供的移动端淘宝用户的行为数据集,包含2014-11-18至2014-12-18共计一千多万条数据。

数据集的每一列描述如下:

列名 说明 user_id 用户身份(脱敏) item_id 商品id(脱敏) behavior_type

用户行为类型(点击,收藏,加入购物车,购买)

对应数字1,2,3,4

user_geohash 地理位置 item_category

商品类别ID

time 用户行为发生时间

分析思路如下:

根据分析结果做出以下判断: PV、UV和平均访问深度都存在周期性的变化,在每周的周五会出现波谷,PV的波峰出现在每周六,UV无明显波峰。 从10号开始PV和UV逐渐上升,在12日当天都达到顶峰,然后回落。在10-12日,用户搜索、加购行为较往日有所增加,而购买行为在12日当天明显增加,是平时购买量的三倍左右。 用户工作日和周末的使用时间较为相似,都集中在18:00-23:00,在21:00-22:00区间内达到最高值,但用户在周末午间的用户行为略微少于工作日。 大部分用户的日均消费次数在10次以内,约一半的用户日均消费次数集中在0.66-2.67次,双十二当天用户日均消费次数明显增加。 用户付费率达到88.86%,用户复购率为91.45%,需要结合更多数据进一步分析未付费用户的流失节点。 双十二当天的ARPPU约为日常的 2倍,活动结束后应做好活跃用户的引流,保持用户增长。 PV—收藏行为的转化率为4.46%,PV-加购行为的转化率4.46%,收藏加购—购买行为的转化率为19.27%。由于用户浏览-收藏加购这部分转化率较低,需要更多的用户行为埋点数据进一步分析咨询、收藏、加购、直接购买、下单和支付步骤的转化率指标。 根据最近一次消费时间和消费频率得到的RFM用户模型,可以结合用户画像进行精细化运营。如重点关注RF评分都高的重要价值用户,针对R高F低的重要发展用户发放优惠券、举办活动等增加用户粘性。 高点击量的产品,如点击量最高的产品209323160的加购和收藏量都很高,但销量并不在前十。而销量最高的产品,点击、加购、收藏都不再前十榜单中。需要结合具体的商品类别和用户行为数据进一步分析,增加高曝光产品的购买转化率,提高销量高产品的宣传。 在不同的时间点和不同的日期,商品销量具有不同的表现,可进一步对时间和活动进行商品挖掘,更加精细化地投放商品广告。 根据帕累托分析,45.04%的商品实现了80%的销量。可以针对头部商品和长尾效应进一步精细化商品运营。 运营建议和反馈: 确认是否有需求提高周五的数值,需要对周五PV、访问深度降低的情况进一步探究变化原因。 11.28,11.29日的UV明显偏低,确认是否有业务活动或竞品的影响,需要结合前期更多的数据挖掘异常原因。 需要重点关注双十二拉新用户后续的留存和转化,关注活动的长期效应。 根据用户活动时间点,可以选择PV较高的时间段(18:00~23:00)推送广告或者活动,针对不同时间点核心购买人群推送不同的商品。 用户点击、加购、收藏行为在12.12活动前两天呈明显上升趋势,建议前2-3天开始活动预热刺激搜索加购,活动当天重点刺激购买行为。 用户行为数据指标不足,考虑是否增加埋点,根据对标竞品的各步骤的转化率衡量产品个步骤转化率的情况。 可以根据双十二当天成交数据,挖掘平时销量低但活动期间销量高的商品种类,如3064、13230、5894等商品,在活动期间重点销售。

数据预处理

import pandas as pd

import datetime

import matplotlib.pyplot as plt

import matplotlib.dates as mdate

import seaborn as sns

df=pd.read_csv(r'D:\数据分析\数据分析\tianchi\taobao.csv',engine='python')

print(df.info())

print(df.head())

df['time']=pd.to_datetime(df['time'],format='%Y-%m-%d')

t1=datetime.datetime(2014,12,8)

t2=datetime.datetime(2014,12,15)

mask=(df['time']>t1)&(df['time']<t2)

data=df[mask]

print(data.count())

df.drop_duplicates(inplace=True)

df.drop('user_geohash',axis=1,inplace=True)

df['time']=pd.to_datetime(df['time'],format='%Y-%m-%d')

df['hour']=df.time.dt.hour

df['time']=df.time.dt.normalize()

df=df.sort_values(by='time').reset_index(drop=True)

经过日期筛选和数据标准化,最终得到8164040条数据,各列的数据类型和数据格式如下:

用户行为分析

一、时间维度分析 1、流量指标

(1) PV、UV环比增长

PV:页面浏览量,全部用户在24小时内看了多少页面,用户每打开一个页面就记做一次,多次打开同一页面算作多次。这里我们将用户所有的操作(click, collect, add to cart,payment)次数进行求和,按照日期统计作为当日的PV值。

UV:独立访客,24小时内访问网站的用户数,同一个人多次访问也算一个,通过访问的客户端计算。我们通过用户唯一标志user_id进行计数求和,按照日期通知作为当日的UV值。

条形图反映了每天的PV值,折线图为环比昨日PV的值:(今日PV-昨日PV)/昨日PV,UV同理。

从周期性分析,PV和UV值都存在周期性的波动以周为统计周期,PV在11.21,11.28,12.5这三个周五都呈现波谷,而11.23,11.30,12.7这三个周日都为一周内的PV最高峰。但UV的情况有所不同,UV在11.22,11.28,11.29,12.5这四天,呈现周期内的波谷。结合访问深度(PV/UV)的数据来看,11.21,11.28,12.5三个周五也都呈现周期性最低点。需要结合更长的时间线分析整体趋势是否存在这样的周期性变化,如果存在变化背后的原因是什么,可具体分析周五活跃用户和不活跃用户之间的区别,并结合商品进行分析,看是否需要提高周五的活跃用户数量。观察异常情况,环比昨日,同比上周分析,11.28,11.29日的UV明显偏低,需要结合当时的业务表现再具体探索。

在11.21日出现PV周期性减少,UV小幅波动,而访问深度明显降低的情况

 

(2)平均访问深度(PV/UV)

(3)PV、UV及同比增长

以一周为时间周期,比较双十二活动前后5天的PV和UV环比变化。 由下图可知,双十二活动前后PV和UV的总体波动趋势相似,从10号开始有明显的增幅,在12日PV和UV都达到顶峰,然后回落,双十二活动明显促进UV、PV增长。

uv_daily=df.groupby('time')['user_id'].apply(lambda x:x.drop_duplicates().count())

uv_daily=uv_daily.reset_index().rename(columns={'user_id':'uv'})

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

uv_daily['uv_lastday']=uv_daily.shift(1)

uv_daily['tb']=100*(uv_daily['uv']-uv_daily['uv_lastday'])/uv_daily['uv_lastday']

formater="{0:.02f}".format

uv_daily['tb']=uv_daily['tb'].map(formater).astype('float')

uv_daily['uv_7days']=uv_daily['uv'].shift(7)

uv_daily['hb']=100*(uv_daily['uv']-uv_daily['uv_7days'])/uv_daily['uv_7days']

formater="{0:.02f}".format

uv_daily['hb']=uv_daily['hb'].map(formater).astype('float')

pv_daily=df.groupby('time')['user_id'].count()

pv_daily=pv_daily.reset_index().rename(columns={'user_id':'pv'})

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

pv_daily['pv_lastday']=pv_daily.shift(1)

pv_daily['tb']=100*(pv_daily['pv']-pv_daily['pv_lastday'])/pv_daily['pv_lastday']

formater="{0:.02f}".format

pv_daily['tb']=pv_daily['tb'].map(formater).astype('float')

pv_daily['pv_7days']=pv_daily.pv.shift(7)

pv_daily['hb']=100*(pv_daily['pv']-pv_daily['pv_7days'])/pv_daily['pv_7days']

formater="{0:.02f}".format

pv_daily['hb']=pv_daily['hb'].map(formater).astype('float')

pv_daily

(4)基于PV分析用户行为

由用户行为的日期折线图可以看出,用户行为也具有周期性特点,在11.21,11.28,12.5这三个周五都是一周内的最低值,12月10日至12月12日,用户点击量、收藏量、加购量都明显增长,在12月12日达到最大值,而购买量则在12月12日当日大幅度增加。

data=df

pv_detail=data.groupby(['behavior_type','time'])['user_id'].count()

pv_detail=pv_detail.reset_index().rename(columns={'user_id':'total_pv'})

pv_detail['time']=pv_detail['time'].dt.strftime('%Y-%m-%d')

pv_detail['behavior_type']=pv_detail['behavior_type'].map({1:'click',2:'collect',3:'add_to_cart',4:'payment'})

fig,axes=plt.subplots(2,1,sharex=True,figsi

网址:用Python分析淘宝用户行为 https://www.yuejiaxmz.com/news/view/239611

相关内容

深入浅出:使用Python构建一个简单的推荐系统—基于用户行为和内容过滤
【机器学习】推荐系统——基于用户行为分析的个性化推荐技术
利用Python进行数据分析——Pandas(2)
学了python究竟有什么用,实际应用场景有哪些?我整理了8个应用领域
Python中的生活数据分析与个人健康监测.pptx
Python数据分析实战
Python应用:让生活更智能
淘宝比价的方法是什么?有什么用?
淘宝真的不能买,深圳泽信电子买的芯片,翻新芯片,不能用啊!!
python excel数据分析师职业技能

随便看看