2024年最全实战案例!Python+SQL京东用户行为分析(1)(1)


dau3\_df = behavior.groupby([‘date’,‘user\_id’])[‘type’].count().reset\_index()  
 dau3\_df = dau3\_df[dau3\_df[‘type’] >= 3]




# 每日高活跃用户数(每日操作数大于3次)  
 dau3\_num = dau3\_df.groupby(‘date’)[‘user\_id’].nunique()




# SQL  
 SELECT date, COUNT(DISTINCT user\_id)  
 FROM  
 (SELECT date, user\_id, COUNT(type)  
 FROM behavior\_sql  
 GROUP BY date, user\_id  
 HAVING COUNT(type) >= 3) dau3  
 GROUP BY date;  
 fig, ax = plt.subplots(figsize=[16,6])  
 sns.pointplot(dau3\_num.index, dau3\_num.values, markers=‘D’, linestyles=‘–’,color=‘teal’)  
 x=list(range(0,16))  
 for a,b in zip(x,dau3\_num.values):  
     plt.text(a+0.1, b + 300 , ‘%i’ % b, ha=‘center’, va= ‘bottom’,fontsize=14)  
 plt.title(‘每日高活跃用户数’)



output

图片

每日高活跃用户数在大部分4万以上,2018-04-04之前数量比较平稳,之后数量一直攀升,8号9号达到最高,随后下降,推测数据波动应为营销活动产生的。


# 高活跃用户累计活跃天数分布  
 dau3\_cumsum = dau3\_df.groupby(‘user\_id’)[‘date’].count()




# SQL  
 SELECT user\_id, COUNT(date)  
 FROM  
 (SELECT date, user\_id, COUNT(type)  
 FROM behavior\_sql  
 GROUP BY date, user\_id  
 HAVING COUNT(type) >= 3) dau3  
 GROUP BY user\_id;




fig, ax = plt.subplots(figsize=[16,6])  
 ax.set\_yscale(“log”)  
 sns.countplot(dau3\_cumsum.values,palette=‘Set1’)  
 for p in ax.patches:  
         ax.annotate(‘{:.2f}%’.format(100\*p.get\_height()/len(dau3\_cumsum.values)), (p.get\_x() + 0.2, p.get\_height() + 100))  
 plt.title(‘高活跃用户累计活跃天数分布’)



output

图片

统计周期内,大部分高活跃用户累计活跃天数在六天以下,但也存在高达十六天的超级活跃用户数量,对累计天数较高的用户要推出连续登录奖励等继续维持其对平台的黏性,对累计天数较低的用户要适当进行推送活动消息等对其进行召回。


#每日浏览量  
 pv\_daily = behavior[behavior[‘type’] == ‘pv’].groupby(‘date’)[‘user\_id’].count()  
 #每日访客数  
 uv\_daily = behavior.groupby(‘date’)[‘user\_id’].nunique()




# SQL  
 #每日浏览量  
 SELECT date, COUNT(type) pv\_daily FROM behavior\_sql  
 WHERE type = ‘pv’  
 GROUP BY date;  
 #每日访客数  
 SELECT date, COUNT(DISTINCT user\_id) uv\_daily FROM behavior\_sql  
 GROUP BY date;




# 每日浏览量可视化  
 fig, ax = plt.subplots(figsize=[16,6])  
 sns.pointplot(pv\_daily.index, pv\_daily.values,markers=‘D’, linestyles=‘–’,color=‘dodgerblue’)  
 x=list(range(0,16))  
 for a,b in zip(x,pv\_daily.values):  
     plt.text(a+0.1, b + 2000 , ‘%i’ % b, ha=‘center’, va= ‘bottom’,fontsize=14)  
 plt.title(‘每日浏览量’)



output

图片


# 每日访客数可视化  
 fig, ax = plt.subplots(figsize=[16,6])  
 sns.pointplot(uv\_daily.index, uv\_daily.values, markers=‘H’, linestyles=‘–’,color=‘m’)  
 x=list(range(0,16))  
 for a,b in zip(x,uv\_daily.values):  
     plt.text(a+0.1, b + 500 , ‘%i’ % b, ha=‘center’, va= ‘bottom’,fontsize=14)  
 plt.title(‘每日访客数’)



output

图片

浏览量和访客数每日变化趋势大致相同,2018-04-04日前后用户数量变化波动较大,4月4日为清明节假日前一天,各数据量在当天均有明显下降,但之后逐步回升,推测应为节假日营销活动或推广拉新活动带来的影响。


#每时浏览量  
 pv\_hourly = behavior[behavior[‘type’] == ‘pv’].groupby(‘hour’)[‘user\_id’].count()  
 #每时访客数  
 uv\_hourly = behavior.groupby(‘hour’)[‘user\_id’].nunique()




# SQL  
 # 每时浏览量  
 SELECT date, COUNT(type) pv\_daily FROM behavior\_sql  
 WHERE type = ‘pv’  
 GROUP BY hour;  
 # 每时访客数  
 SELECT date, COUNT(DISTINCT user\_id) uv\_daily FROM behavior\_sql  
 GROUP BY hour;  
 # 浏览量随小时变化可视化  
 fig, ax = plt.subplots(figsize=[16,6])  
 sns.pointplot(pv\_hourly.index, pv\_hourly.values, markers=‘H’, linestyles=‘–’,color=‘dodgerblue’)  
 for a,b in zip(pv\_hourly.index,pv\_hourly.values):  
     plt.text(a, b + 10000 , ‘%i’ % b, ha=‘center’, va= ‘bottom’,fontsize=12)  
 plt.title(‘浏览量随小时变化’)



output

图片


# 访客数随小时变化可视化  
 fig, ax = plt.subplots(figsize=[16,6])  
 sns.pointplot(uv\_hourly.index, uv\_hourly.values, markers=‘H’, linestyles=‘–’,color=‘m’)


for a,b in zip(uv\_hourly.index,uv\_hourly.values):  
     plt.text(a, b + 1000 , ‘%i’ % b, ha=‘center’, va= ‘bottom’,fontsize=12)  
 plt.title(‘访客数随小时变化’)



output

图片

浏览量及访客数随小时变化趋势一致,在凌晨1点到凌晨5点之间,大部分用户正在休息,整体活跃度较低。凌晨5点到10点用户开始起床工作,活跃度逐渐增加,之后趋于平稳,下午6点之后大部分人恢复空闲,浏览量及访客数迎来了第二波攀升,在晚上8点中到达高峰,随后逐渐下降。可以考虑在上午9点及晚上8点增大商品推广力度,加大营销活动投入,可取的较好的收益,1点到5点之间适合做系统维护。


# 用户各操作随小时变化  
 type\_detail\_hour = pd.pivot\_table(columns = ‘type’,index = ‘hour’, data = behavior,aggfunc=np.size,values = ‘user\_id’)  
 # 用户各操作随星期变化  
 type\_detail\_weekday = pd.pivot\_table(columns = ‘type’,index = ‘weekday’, data = behavior,aggfunc=np.size,values = ‘user\_id’)  
 type\_detail\_weekday = type\_detail\_weekday.reindex([‘Monday’,‘Tuesday’,‘Wednesday’,‘Thursday’,‘Friday’,‘Saturday’,‘Sunday’])




# SQL  
 # 用户各操作随小时变化  
 SELECT hour,  
 SUM(CASE WHEN behavior=‘pv’ THEN 1 ELSE 0 END)AS ‘pv’,  
 SUM(CASE WHEN behavior=‘fav’ THEN 1 ELSE 0 END)AS ‘fav’,  
 SUM(CASE WHEN behavior=‘cart’ THEN 1 ELSE 0 END)AS ‘cart’,  
 SUM(CASE WHEN behavior=‘pay’ THEN 1 ELSE 0 END)AS ‘pay’  
 FROM behavior\_sql  
 GROUP BY hour  
 ORDER BY hour


# 用户各操作随星期变化  
 SELECT weekday,  
 SUM(CASE WHEN behavior=‘pv’ THEN 1 ELSE 0 END)AS ‘pv’,  
 SUM(CASE WHEN behavior=‘fav’ THEN 1 ELSE 0 END)AS ‘fav’,  
 SUM(CASE WHEN behavior=‘cart’ THEN 1 ELSE 0 END)AS ‘cart’,  
 SUM(CASE WHEN behavior=‘pay’ THEN 1 ELSE 0 END)AS ‘pay’  
 FROM behavior\_sql  
 GROUP BY weekday  
 ORDER BY weekday




tdh\_line = type\_detail\_hour.stack().reset\_index().rename(columns={0: ‘Value’})  
 tdw\_line = type\_detail\_weekday.stack().reset\_index().rename(columns={0: ‘Value’})  
 tdh\_line= tdh\_line[~(tdh\_line[‘type’] == ‘pv’)]  
 tdw\_line= tdw\_line[~(tdw\_line[‘type’] == ‘pv’)]




# 用户操作随小时变化可视化  
 fig, ax = plt.subplots(figsize=[16,6])  
 sns.pointplot(x=‘hour’, y=‘Value’, hue=‘type’, data=tdh\_line, linestyles=‘–’)  
 plt.title(‘用户操作随小时变化’)



output

图片

用户操作随小时变化规律与PV、UV随小时规律相似,与用户作息规律相关,加入购物车和付款两条曲线贴合比比较紧密,说明大部分用户习惯加入购物车后直接购买。

关注数相对较少,可以根据用户购物车内商品进行精准推送。评论数也相对较少,说明大部分用户不是很热衷对购物体验进行反馈,可以设置一些奖励制度提高用户评论数,增大用用户粘性。


# 用户操作随星期变化可视化  
 fig, ax = plt.subplots(figsize=[16,6])  
 sns.pointplot(x=‘weekday’, y=‘Value’, hue=‘type’, data=tdw\_line[~(tdw\_line[‘type’] == ‘pv’)], linestyles=‘–’)  
 plt.title(‘用户操作随星期变化’)



output

图片

周一到周四工作日期间,用户操作随星期变化比较平稳,周五至周六进入休息日,用户操作明显增多,周日又恢复正常。

4、用户行为转化漏斗


# 导入相关包  
 from pyecharts import options as opts  
 from pyecharts.charts import Funnel  
 import math




behavior[‘action\_time’] = pd.to\_datetime(behavior[‘action\_time’],format =‘%Y-%m-%d %H:%M:%S’)




# 用户整体行为分布  
 type\_dis = behavior[‘type’].value\_counts().reset\_index()  
 type\_dis[‘rate’] = round((type\_dis[‘type’] / type\_dis[‘type’].sum()),3)  
 type\_dis.style.bar(color=‘skyblue’,subset=[‘rate’])



output

图片

用户整体行为中,有82.6%行为为浏览,实际支付操作仅占6.4,除此之外,用户评论及收藏的行为占比也较低,应当增强网站有用户之间的互动,提高评论数量和收藏率。


df\_con = behavior[[‘user\_id’, ‘sku\_id’, ‘action\_time’, ‘type’]]  
 df\_pv = df\_con[df\_con[‘type’] == ‘pv’]  
 df\_fav = df\_con[df\_con[‘type’] == ‘fav’]  
 df\_cart = df\_con[df\_con[‘type’] == ‘cart’]  
 df\_pay = df\_con[df\_con[‘type’] == ‘pay’]


df\_pv\_uid = df\_con[df\_con[‘type’] == ‘pv’][‘user\_id’].unique()  
 df\_fav\_uid = df\_con[df\_con[‘type’] == ‘fav’][‘user\_id’].unique()  
 df\_cart\_uid = df\_con[df\_con[‘type’] == ‘cart’][‘user\_id’].unique()  
 df\_pay\_uid = df\_con[df\_con[‘type’] == ‘pay’][‘user\_id’].unique()



pv - buy


fav\_cart\_list = set(df\_fav\_uid) | set(df\_cart\_uid)  
 pv\_pay\_df = pd.merge(left=df\_pv, right=df\_pay, how=‘inner’, on=[‘user\_id’, ‘sku\_id’], suffixes=(‘\_pv’, ‘\_pay’))  
 pv\_pay\_df = pv\_pay\_df[(~pv\_pay\_df[‘user\_id’].isin(fav\_cart\_list)) & (pv\_pay\_df[‘action\_time\_pv’] < pv\_pay\_df[‘action\_time\_pay’])]  
 uv = behavior[‘user\_id’].nunique()  
 pv\_pay\_num = pv\_pay\_df[‘user\_id’].nunique()  
 pv\_pay\_data = pd.DataFrame({‘type’:[‘浏览’,‘付款’],‘num’:[uv,pv\_pay\_num]})  
 pv\_pay\_data[‘conversion\_rates’] = (round((pv\_pay\_data[‘num’] / pv\_pay\_data[‘num’][0]),4) \* 100)  
 attr1 = list(pv\_pay\_data.type)  
 values1 = list(pv\_pay\_data.conversion\_rates)  
 data1 = [[attr1[i], values1[i]] for i in range(len(attr1))]  
 # 用户行为转化漏斗可视化  
 pv\_pay=(Funnel(opts.InitOpts(width=“600px”, height=“300px”))  
             .add(  
             series\_name=“”,  
             data\_pair=data1,  
             gap=2,  
             tooltip\_opts=opts.TooltipOpts(trigger=“item”, formatter=“{b} : {c}%”),  
             label\_opts=opts.LabelOpts(is\_show=True, position=“inside”),  
             itemstyle\_opts=opts.ItemStyleOpts(border\_color=“#fff”, border\_width=1)  
         )  
         .set\_global\_opts(title\_opts=opts.TitleOpts(title=“用户行为转化漏斗图”))  
         )  
 pv\_pay.render\_notebook()



output

图片


pv - cart - pay  
 pv\_cart\_df = pd.merge(left=df\_pv, right=df\_cart, how=‘inner’, on=[‘user\_id’, ‘sku\_id’], suffixes=(‘\_pv’, ‘\_cart’))  
 pv\_cart\_df = pv\_cart\_df[pv\_cart\_df[‘action\_time\_pv’] < pv\_cart\_df[‘action\_time\_cart’]]  
 pv\_cart\_df = pv\_cart\_df[~pv\_cart\_df[‘user\_id’].isin(df\_fav\_uid)]  
 pv\_cart\_pay\_df = pd.merge(left=pv\_cart\_df, right=df\_pay, how=‘inner’, on=[‘user\_id’, ‘sku\_id’])  
 pv\_cart\_pay\_df = pv\_cart\_pay\_df[pv\_cart\_pay\_df[‘action\_time\_cart’] < pv\_cart\_pay\_df[‘action\_time’]]  
 uv = behavior[‘user\_id’].nunique()  
 pv\_cart\_num = pv\_cart\_df[‘user\_id’].nunique()  
 pv\_cart\_pay\_num = pv\_cart\_pay\_df[‘user\_id’].nunique()  
 pv\_cart\_pay\_data = pd.DataFrame({‘type’:[‘浏览’,‘加购’,‘付款’],‘num’:[uv,pv\_cart\_num,pv\_cart\_pay\_num]})  
 pv\_cart\_pay\_data[‘conversion\_rates’] = (round((pv\_cart\_pay\_data[‘num’] / pv\_cart\_pay\_data[‘num’][0]),4) \* 100)  
 attr2 = list(pv\_cart\_pay\_data.type)  
 values2 = list(pv\_cart\_pay\_data.conversion\_rates)  
 data2 = [[attr2[i], values2[i]] for i in range(len(attr2))]  
 # 用户行为转化漏斗可视化  
 pv\_cart\_buy=(Funnel(opts.InitOpts(width=“600px”, height=“300px”))  
             .add(  
             series\_name=“”,  
             data\_pair=data2,  
             gap=2,  
             tooltip\_opts=opts.TooltipOpts(trigger=“item”, formatter=“{b} : {c}%”),  
             label\_opts=opts.LabelOpts(is\_show=True, position=“inside”),  
             itemstyle\_opts=opts.ItemStyleOpts(border\_color=“#fff”, border\_width=1)  
         )  
         .set\_global\_opts(title\_opts=opts.TitleOpts(title=“用户行为转化漏斗图”))  
         )  
 pv\_cart\_buy.render\_notebook()



output

图片

pv - fav - pay


pv\_fav\_df = pd.merge(left=df\_pv, right=df\_fav, how=‘inner’, on=[‘user\_id’, ‘sku\_id’], suffixes=(‘\_pv’, ‘\_fav’))  
 pv\_fav\_df = pv\_fav\_df[pv\_fav\_df[‘action\_time\_pv’] < pv\_fav\_df[‘action\_time\_fav’]]  
 pv\_fav\_df = pv\_fav\_df[~pv\_fav\_df[‘user\_id’].isin(df\_cart\_uid)]  
 pv\_fav\_pay\_df = pd.merge(left=pv\_fav\_df, right=df\_pay, how=‘inner’, on=[‘user\_id’, ‘sku\_id’])  
 pv\_fav\_pay\_df = pv\_fav\_pay\_df[pv\_fav\_pay\_df[‘action\_time\_fav’] < pv\_fav\_pay\_df[‘action\_time’]]  
 uv = behavior[‘user\_id’].nunique()  
 pv\_fav\_num = pv\_fav\_df[‘user\_id’].nunique()  
 pv\_fav\_pay\_num = pv\_fav\_pay\_df[‘user\_id’].nunique()  
 pv\_fav\_pay\_data = pd.DataFrame({‘type’:[‘浏览’,‘收藏’,‘付款’],‘num’:[uv,pv\_fav\_num,pv\_fav\_pay\_num]})  
 pv\_fav\_pay\_data[‘conversion\_rates’] = (round((pv\_fav\_pay\_data[‘num’] / pv\_fav\_pay\_data[‘num’][0]),4) \* 100)  
 attr3 = list(pv\_fav\_pay\_data.type)  
 values3 = list(pv\_fav\_pay\_data.conversion\_rates)  
 data3 = [[attr3[i], values3[i]] for i in range(len(attr3))]  
 # 用户行为转化漏斗可视化  
 pv\_fav\_buy=(Funnel(opts.InitOpts(width=“600px”, height=“300px”))  
             .add(  
             series\_name=“”,  
             data\_pair=data3,  
             gap=2,  
             tooltip\_opts=opts.TooltipOpts(trigger=“item”, formatter=“{b} : {c}%”),  
             label\_opts=opts.LabelOpts(is\_show=True, position=“inside”),  
             itemstyle\_opts=opts.ItemStyleOpts(border\_color=“#fff”, border\_width=1)  
         )  
         .set\_global\_opts(title\_opts=opts.TitleOpts(title=“用户行为转化漏斗图”))  
         )  
 pv\_fav\_buy.render\_notebook()



output

图片

pv - fav - cart - pay


pv\_fav = pd.merge(left=df\_pv, right=df\_fav, how=‘inner’, on=[‘user\_id’, ‘sku\_id’],suffixes=(‘\_pv’, ‘\_fav’))  
 pv\_fav = pv\_fav[pv\_fav[‘action\_time\_pv’] < pv\_fav[‘action\_time\_fav’]]  
 pv\_fav\_cart = pd.merge(left=pv\_fav, right=df\_cart, how=‘inner’, on=[‘user\_id’, ‘sku\_id’])  
 pv\_fav\_cart = pv\_fav\_cart[pv\_fav\_cart[‘action\_time\_fav’]<pv\_fav\_cart[‘action\_time’]]  
 pv\_fav\_cart\_pay = pd.merge(left=pv\_fav\_cart, right=df\_pay, how=‘inner’, on=[‘user\_id’, ‘sku\_id’],suffixes=(‘\_cart’, ‘\_pay’))  
 pv\_fav\_cart\_pay = pv\_fav\_cart\_pay[pv\_fav\_cart\_pay[‘action\_time\_cart’]<pv\_fav\_cart\_pay[‘action\_time\_pay’]]  
 uv = behavior[‘user\_id’].nunique()  
 pv\_fav\_n = pv\_fav[‘user\_id’].nunique()  
 pv\_fav\_cart\_n = pv\_fav\_cart[‘user\_id’].nunique()  
 pv\_fav\_cart\_pay\_n = pv\_fav\_cart\_pay[‘user\_id’].nunique()  
 pv\_fav\_cart\_pay\_data = pd.DataFrame({‘type’:[‘浏览’,‘收藏’,‘加购’,‘付款’],‘num’:[uv,pv\_fav\_n,pv\_fav\_cart\_n,pv\_fav\_cart\_pay\_n]})  
 pv\_fav\_cart\_pay\_data[‘conversion\_rates’] = (round((pv\_fav\_cart\_pay\_data[‘num’] / pv\_fav\_cart\_pay\_data[‘num’][0]),4) \* 100)  
 attr4 = list(pv\_fav\_cart\_pay\_data.type)  
 values4 = list(pv\_fav\_cart\_pay\_data.conversion\_rates)  
 data4 = [[attr4[i], values4[i]] for i in range(len(attr4))]  
 # 用户行为转化漏斗可视化  
 pv\_fav\_buy=(Funnel(opts.InitOpts(width=“600px”, height=“300px”))  
             .add(  
             series\_name=“”,  
             data\_pair=data4,  
             gap=2,  
             tooltip\_opts=opts.TooltipOpts(trigger=“item”, formatter=“{b} : {c}%”),  
             label\_opts=opts.LabelOpts(is\_show=True, position=“inside”),  
             itemstyle\_opts=opts.ItemStyleOpts(border\_color=“#fff”, border\_width=1)  
         )  
         .set\_global\_opts(title\_opts=opts.TitleOpts(title=“用户行为转化漏斗图”))  
         )  
 pv\_fav\_buy.render\_notebook()



output

图片

不同路径用户消费时间间隔分析:

pv - cart - pay


pcp\_interval = pv\_cart\_pay\_df.groupby([‘user\_id’, ‘sku\_id’]).apply(lambda x: (x.action\_time.min() - x.action\_time\_cart.min())).reset\_index()  
 pcp\_interval[‘interval’] = pcp\_interval[0].apply(lambda x: x.seconds) / 3600  
 pcp\_interval[‘interval’] = pcp\_interval[‘interval’].apply(lambda x: math.ceil(x))  
 fig, ax = plt.subplots(figsize=[16,6])  
 sns.countplot(pcp\_interval[‘interval’],palette=‘Set1’)  
 for p in ax.patches:  
         ax.annotate(‘{:.2f}%’.format(100\*p.get\_height()/len(pcp\_interval[‘interval’])), (p.get\_x() + 0.1, p.get\_height() + 100))  
 ax.set\_yscale(“log”)  
 plt.title(‘pv-cart-pay路径用户消费时间间隔’)



output

图片

pv - fav - pay


pfp\_interval = pv\_fav\_pay\_df.groupby([‘user\_id’, ‘sku\_id’]).apply(lambda x: (x.action\_time.min() - x.action\_time\_fav.min())).reset\_index()  
 pfp\_interval[‘interval’] = pfp\_interval[0].apply(lambda x: x.seconds) / 3600  
 pfp\_interval[‘interval’] = pfp\_interval[‘interval’].apply(lambda x: math.ceil(x))  
 fig, ax = plt.subplots(figsize=[16,6])  
 sns.countplot(pfp\_interval[‘interval’],palette=‘Set1’)  
 for p in ax.patches:  
         ax.annotate(‘{:.2f}%’.format(100\*p.get\_height()/len(pfp\_interval[‘interval’])), (p.get\_x() + 0.1, p.get\_height() + 10))  
 ax.set\_yscale(“log”)  
 plt.title(‘pv-fav-pay路径用户消费时间间隔’)



output

图片

两种路径下大部分用户均在4小时内完成了支付,大部分用户的购物意向很明确,也侧面说明了网站的商品分类布局和购物结算方式比较合理。


# SQL  
 # 漏斗图  
 SELECT type, COUNT(DISTINCT user\_id) user\_num  
 FROM behavior\_sql  
 GROUP BY type  
 ORDER BY COUNT(DISTINCT user\_id) DESC


SELECT COUNT(DISTINCT b.user\_id) AS pv\_fav\_num,COUNT(DISTINCT c.user\_id) AS pv\_fav\_pay\_num  
 FROM  
 ((SELECT DISTINCT user\_id, sku\_id, action\_time FROM users WHERE type=‘pv’ ) AS a  
 LEFT JOIN  
 (SELECT DISTINCT user\_id, sku\_id, action\_time FROM users WHERE type=‘fav’  
 AND user\_id NOT IN  
 (SELECT DISTINCT user\_id  
 FROM behavior\_sql  
 WHERE type = ‘cart’)) AS b  
 ON a.user\_id = b.user\_id AND a.sku\_id = b.sku\_id AND a.action\_time <= b.action\_time  
 LEFT JOIN  
 (SELECT DISTINCT user\_id,sku\_id,item\_category,times\_new FROM users WHERE behavior\_type=‘pay’) AS c  
 ON b.user\_id = c.user\_id AND b.sku\_id = c.sku\_id AND AND b.action\_time <= c.action\_time);



比较四种不同的转化方式,最有效的转化路径为浏览直接付款转化率为21.46%,其次为浏览加购付款,转化率为12.47%,可以发现随着结算方式越来越复杂转化率越来越低。

加购的方式比收藏购买的方式转化率要高,推其原因为购物车接口进入方便且可以做不同商家比价用,而收藏则需要更繁琐的操作才可以查看到商品,因此转化率较低。

可以优化商品搜索功能,提高商品搜索准确度、易用性,减少用户搜索时间。

根据用户喜好在首页进行商品推荐,优化重排商品详情展示页,提高顾客下单欲望,提供一键购物等简化购物步骤的功能。

客服也可以留意加购及关注用户,适时推出优惠福利及时解答用户问题,引导用户购买以进一步提高转化率。

对于用户消费时间间隔,可以通过限时领券购买、限时特惠价格等进一步缩短用户付款时间,提高订单量。

5、用户留存率分析


#留存率  
 first\_day = datetime.date(datetime.strptime(‘2018-03-30’, ‘%Y-%m-%d’))  
 fifth\_day = datetime.date(datetime.strptime(‘2018-04-03’, ‘%Y-%m-%d’))  
 tenth\_day = datetime.date(datetime.strptime(‘2018-04-08’, ‘%Y-%m-%d’))  
 fifteenth\_day = datetime.date(datetime.strptime(‘2018-04-13’, ‘%Y-%m-%d’))


#第一天新用户数  
 user\_num\_first = behavior[behavior[‘date’] == first\_day][‘user\_id’].to\_frame()  
 #第五天留存用户数  
 user\_num\_fifth = behavior[behavior[‘date’] == fifth\_day ][‘user\_id’].to\_frame()  
 #第十留存用户数  
 user\_num\_tenth = behavior[behavior[‘date’] == tenth\_day][‘user\_id’].to\_frame()  
 #第十五天留存用户数  
 user\_num\_fifteenth = behavior[behavior[‘date’] == fifteenth\_day][‘user\_id’].to\_frame()  
 #第五天留存率  
 fifth\_day\_retention\_rate = round((pd.merge(user\_num\_first, user\_num\_fifth).nunique())  
                                  / (user\_num\_first.nunique()),4).user\_id  
 #第十天留存率  
 tenth\_day\_retention\_rate = round((pd.merge(user\_num\_first, user\_num\_tenth ).nunique())  
                                  / (user\_num\_first.nunique()),4).user\_id  
 #第十五天留存率  
 fifteenth\_day\_retention\_rate = round((pd.merge(user\_num\_first, user\_num\_fifteenth).nunique())  
                                      / (user\_num\_first.nunique()),4).user\_id  
## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**

![img](https://img-blog.csdnimg.cn/img_convert/a2f622fd18116f729af52ba7cb849ffd.png)

![img](https://img-blog.csdnimg.cn/img_convert/d353d3d0f1f057f323b353e76ef901d2.png)

![img](https://img-blog.csdnimg.cn/img_convert/ff2b9c287b33891e8d8442b574a7238c.png)

![img](https://img-blog.csdnimg.cn/img_convert/70dabbd6856714fc99151397eb9fb109.png)

![img](https://img-blog.csdnimg.cn/img_convert/a0a63de1a0763512ec80641cc52d3493.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

que())  
                                      / (user\_num\_first.nunique()),4).user\_id  
## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**

[外链图片转存中...(img-mIOEDI77-1715798282909)]

[外链图片转存中...(img-WabD5pVd-1715798282909)]

[外链图片转存中...(img-PnGWLm29-1715798282909)]

[外链图片转存中...(img-1ijDN1Rr-1715798282910)]

[外链图片转存中...(img-cXQDvMUK-1715798282910)]

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
京东是中国最大的综合性电子商务网站之一,拥有庞大的用户数量和丰富的用户行为数据。为了更好地理解和分析用户行为模式,可以使用Python结合SQL来进行京东用户行为分析。 首先,我们需要从京东的数据库中提取所需的数据。使用Python中的SQL库(如pymysqlsqlite3),连接到数据库,并编写SQL查询语句来获取有关用户行为的数据。查询可以包括用户ID、浏览商品、下单、购买、评价等各种行为信息。通过执行SQL查询,可以将数据结果存储在Python中的数据结构中,如列表或Pandas数据框,以供后续分析使用。 接下来,可以使用Python中的数据分析和可视化库,如Pandas、Matplotlib和Seaborn,对用户行为数据进行分析和可视化。可以统计每个用户不同行为的次数、频率和占比,探索用户行为的变化趋势和规律。通过绘制柱状图、折线图、饼图等图表,可以更直观地展示数据分析结果。 此外,还可以使用Python中的机器学习和数据挖掘技术,如聚类分析、关联规则挖掘等,对用户行为数据进行更深入的挖掘。可以利用聚类分析用户划分为不同的群体,了解不同用户群体的行为特征和偏好,从而为个性化推荐和营销策略提供依据。可以使用关联规则挖掘来发现不同用户行为之间的关联性,如哪些商品经常一起被浏览或购买。 最后,将分析结果进行总结和应用。通过对京东用户行为分析,可以洞察用户的购物习惯、兴趣爱好和需求,为京东提供个性化的推荐服务和精准的营销策略。同时,还可以帮助京东改进产品和服务,提高用户的满意度和忠诚度。 总之,PythonSQL结合可以对京东用户行为进行面、深入的分析,为京东提供有力的数据支持和决策参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值