色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

完整案例!Python+SQL京東用戶行為分析

數據分析與開發 ? 來源:數據分析與開發 ? 2023-01-05 15:33 ? 次閱讀

1、項目背景

項目對京東電商運營數據集進行指標分析以了解用戶購物行為特征,為運營決策提供支持建議。本文采用了MySQL和Python兩種代碼進行指標計算以適應不同的數據分析開發環境。

2、數據集介紹

本數據集為京東競賽數據集,數據已上傳后臺,回復關鍵字:京東電商,即可獲的。詳細介紹請訪問鏈接:https://jdata.jd.com/html/detail.html?id=8 數據集共有五個文件,包含了'2018-02-01'至'2018-04-15'之間的用戶數據,數據已進行了脫敏處理,本文使用了其中的行為數據表,表中共有五個字段,各字段含義如下圖所示:

529be348-8cc9-11ed-bfe3-dac502259ad0.png

3、數據清洗


		

#導入python相關模塊 importnumpyasnp importpandasaspd importseabornassns importmatplotlib.pyplotasplt fromdatetimeimportdatetime plt.style.use('ggplot') %matplotlibinline #設置中文編碼和負號的正常顯示 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False


		#讀取數據,數據集較大,如果計算機讀取內存不夠用,可以嘗試kaggle比賽 #中的reduce_mem_usage函數,附在文末,主要原理是把int64/float64 #類型的數值用更小的int(float)32/16/8來搞定 user_action=pd.read_csv('jdata_action.csv')

		#因數據集過大,本文截取'2018-03-30'至'2018-04-15'之間的數據完成本次分析 #注:僅4月份的數據包含加購物車行為,即type == 5 user_data=user_action[(user_action['action_time']>'2018-03-30')&(user_action['action_time']'2018-04-15')]

		#存至本地備用 user_data.to_csv('user_data.csv',sep=',')

		#查看原始數據各字段類型 behavior=pd.read_csv('user_data.csv',index_col=0) behavior[:10]
			output

		
			user_idsku_idaction_timemodule_idtype 1714552982084412018-04-11154361906591 1814552983343182018-04-11155461906591 1914552982377552018-04-11151361906591 20145529864222018-04-11152561906591 2114552982685662018-04-11152661906591 2214552981159152018-04-11153561906591 2314552982082542018-04-11151661906591 2414552981772092018-04-14145966282541 251455298717932018-04-14142966282541 2614552981419502018-04-121553102072581

		
			behavior.info()
			output

		

'pandas.core.frame.DataFrame'> Int64Index:7540394entries,17to37214234 Datacolumns(total5columns): user_idint64 sku_idint64 action_timeobject module_idint64 typeint64 dtypes:int64(4),object(1) memoryusage:345.2+MB


		#查看缺失值 behavior.isnull().sum()
			output

		
			user_id0 sku_id0 action_time0 module_id0 type0 dtype:int64
			數據各列無缺失值。

		#原始數據中時間列action_time,時間和日期是在一起的,不方便分析,對action_time列進行處理,拆分出日期和時間列,并添加星期字段求出每天對應 #的星期,方便后續按時間緯度對數據進行分析 behavior['date']=pd.to_datetime(behavior['action_time']).dt.date#日期 behavior['hour']=pd.to_datetime(behavior['action_time']).dt.hour#時間 behavior['weekday']=pd.to_datetime(behavior['action_time']).dt.weekday_name#周

		#去除與分析無關的列 behavior=behavior.drop('module_id',axis=1)

		#將用戶行為標簽由數字類型改為用字符表示 behavior_type={1:'pv',2:'pay',3:'fav',4:'comm',5:'cart'} behavior['type']=behavior['type'].apply(lambdax:behavior_type[x]) behavior.reset_index(drop=True,inplace=True)

		#查看處理好的數據 behavior[:10]
			output

		

user_idsku_idaction_timetypedatehourweekday 014552982084412018-04-111543pv2018-04-1115Wednesday 114552983343182018-04-111554pv2018-04-1115Wednesday 214552982377552018-04-111513pv2018-04-1115Wednesday 3145529864222018-04-111525pv2018-04-1115Wednesday 414552982685662018-04-111526pv2018-04-1115Wednesday 514552981159152018-04-111535pv2018-04-1115Wednesday 614552982082542018-04-111516pv2018-04-1115Wednesday 714552981772092018-04-141459pv2018-04-1414Saturday 81455298717932018-04-141429pv2018-04-1414Saturday 914552981419502018-04-121553pv2018-04-1215Thursday

4、分析模型構建指標

1.流量指標分析

pvuv、消費用戶數占比、消費用戶總訪問量占比、消費用戶人均訪問量、跳失率。

PV UV


		#總訪問量 pv=behavior[behavior['type']=='pv']['user_id'].count() #總訪客數 uv=behavior['user_id'].nunique() #消費用戶數 user_pay=behavior[behavior['type']=='pay']['user_id'].unique() #日均訪問量 pv_per_day=pv/behavior['date'].nunique() #人均訪問量 pv_per_user=pv/uv #消費用戶訪問量 pv_pay=behavior[behavior['user_id'].isin(user_pay)]['type'].value_counts().pv #消費用戶數占比 user_pay_rate=len(user_pay)/uv #消費用戶訪問量占比 pv_pay_rate=pv_pay/pv #消費用戶人均訪問量 pv_per_buy_user=pv_pay/len(user_pay)

		#SQL SELECTcount(DISTINCTuser_id)UV, (SELECTcount(*)PVfrombehavior_sqlWHEREtype='pv')PV FROMbehavior_sql; SELECTcount(DISTINCTuser_id) FROMbehavior_sql WHERE WHEREtype='pay'; SELECTtype,COUNT(*)FROMbehavior_sql WHERE user_idIN (SELECTDISTINCTuser_id FROMbehavior_sql WHEREtype='pay') ANDtype='pv' GROUPBYtype;

		print('總訪問量為%i'%pv) print('總訪客數為%i'%uv) print('消費用戶數為%i'%len(user_pay)) print('消費用戶訪問量為%i'%pv_pay) print('日均訪問量為%.3f'%pv_per_day) print('人均訪問量為%.3f'%pv_per_user) print('消費用戶人均訪問量為%.3f'%pv_per_buy_user) print('消費用戶數占比為%.3f%%'%(user_pay_rate*100)) print('消費用戶訪問量占比為%.3f%%'%(pv_pay_rate*100))
			output

		

總訪問量為6229177 總訪客數為728959 消費用戶數為395874 消費用戶訪問量為3918000 日均訪問量為389323.562 人均訪問量為8.545 消費用戶人均訪問量為9.897 消費用戶數占比為54.307% 消費用戶訪問量占比為62.898%

消費用戶人均訪問量和總訪問量占比都在平均值以上,有過消費記錄的用戶更愿意在網站上花費更多時間,說明網站的購物體驗尚可,老用戶對網站有一定依賴性,對沒有過消費記錄的用戶要讓快速了解產品的使用方法和價值,加強用戶和平臺的黏連

跳失率


		#跳失率:只進行了一次操作就離開的用戶數/總用戶數 attrition_rates=sum(behavior.groupby('user_id')['type'].count()==1)/(behavior['user_id'].nunique())

		#SQL SELECT (SELECTCOUNT(*) FROM(SELECTuser_id FROMbehavior_sqlGROUPBYuser_id HAVINGCOUNT(type)=1)A)/ (SELECTCOUNT(DISTINCTuser_id)UVFROMbehavior_sql)attrition_rates;

		print('跳失率為%.3f%%'%(attrition_rates*100))
			output

		
			跳失率為22.585%
			整個計算周期內跳失率為22.585%,還是有較多的用戶僅做了單次操作就離開了頁面,需要從首頁頁面布局以及產品用戶體驗等方面加以改善,提高產品吸引力。

2、用戶消費頻次分析


		#單個用戶消費總次數 total_buy_count=(behavior[behavior['type']=='pay'].groupby(['user_id'])['type'].count() .to_frame().rename(columns={'type':'total'})) #消費次數前10客戶 topbuyer10=total_buy_count.sort_values(by='total',ascending=False)[:10] #復購率 re_buy_rate=total_buy_count[total_buy_count>=2].count()/total_buy_count.count()

		#SQL #消費次數前10客戶 SELECTuser_id,COUNT(type)total_buy_count FROMbehavior_sql WHEREtype='pay' GROUPBYuser_id ORDERBYCOUNT(type)DESC LIMIT10 #復購率 CREATVIEWv_buy_count ASSELECTuser_id,COUNT(type)total_buy_count FROMbehavior_sql WHEREtype='pay' GROUPBYuser_id; SELECTCONCAT(ROUND((SUM(CASEWHENtotal_buy_count>=2THEN1ELSE0END)/ SUM(CASEWHENtotal_buy_count>0THEN1ELSE0END))*100,2),'%')ASre_buy_rate FROMv_buy_count;

		
			topbuyer10.reset_index().style.bar(color='skyblue',subset=['total'])
			output

52aee010-8cc9-11ed-bfe3-dac502259ad0.png


		#單個用戶消費總次數可視化 tbc_box=total_buy_count.reset_index() fig,ax=plt.subplots(figsize=[16,6]) ax.set_yscale("log") sns.countplot(x=tbc_box['total'],data=tbc_box,palette='Set1') forpinax.patches: ax.annotate('{:.2f}%'.format(100*p.get_height()/len(tbc_box['total'])),(p.get_x()-0.1,p.get_height())) plt.title('用戶消費總次數')
			output

52be949c-8cc9-11ed-bfe3-dac502259ad0.png

整個計算周期內,最高購物次數為133次,最低為1次,大部分用戶的購物次數在6次以下,可適當增加推廣,完善購物體驗,提高用戶消費次數。購物次數前10用戶為1187177、502169等,應提高其滿意度,增大留存率

		print('復購率為%.3f%%'%(re_buy_rate*100))
			output

		
			復購率為13.419%復購率較低,應加強老用戶召回機制,提升購物體驗,也可能因數據量較少,統計周期之內的數據 無法解釋完整的購物周期,從而得出結論有誤。

3、用戶行為在時間緯度的分布

日消費次數、日活躍人數、日消費人數、日消費人數占比、消費用戶日人均消費次數

		#日活躍人數(有一次操作即視為活躍) daily_active_user=behavior.groupby('date')['user_id'].nunique() #日消費人數 daily_buy_user=behavior[behavior['type']=='pay'].groupby('date')['user_id'].nunique() #日消費人數占比 proportion_of_buyer=daily_buy_user/daily_active_user #日消費總次數 daily_buy_count=behavior[behavior['type']=='pay'].groupby('date')['type'].count() #消費用戶日人均消費次數 consumption_per_buyer=daily_buy_count/daily_buy_user

		#SQL #日消費總次數 SELECTdate,COUNT(type)pay_dailyFROMbehavior_sql WHEREtype='pay' GROUPBYdate; #日活躍人數 SELECTdate,COUNT(DISTINCTuser_id)uv_dailyFROMbehavior_sql GROUPBYdate; #日消費人數 SELECTdate,COUNT(DISTINCTuser_id)user_pay_dailyFROMbehavior_sql WHEREtype='pay' GROUPBYdate; #日消費人數占比 SELECT (SELECTdate,COUNT(DISTINCTuser_id)user_pay_dailyFROMbehavior_sql WHEREtype='pay' GROUPBYdate)/ (SELECTdate,COUNT(DISTINCTuser_id)uv_dailyFROMbehavior_sql GROUPBYdate) #日人均消費次數 SELECT (SELECTdate,COUNT(type)pay_dailyFROMbehavior_sql WHEREtype='pay' GROUPBYdate)/ (SELECTdate,COUNT(DISTINCTuser_id)uv_dailyFROMbehavior_sql GROUPBYdate)

		#日消費人數占比可視化 #柱狀圖數據 pob_bar=(pd.merge(daily_active_user,daily_buy_user,on='date').reset_index() .rename(columns={'user_id_x':'日活躍人數','user_id_y':'日消費人數'}) .set_index('date').stack().reset_index().rename(columns={'level_1':'Variable',0:'Value'})) #線圖數據 pob_line=proportion_of_buyer.reset_index().rename(columns={'user_id':'Rate'}) fig1=plt.figure(figsize=[16,6]) ax1=fig1.add_subplot(111) ax2=ax1.twinx() sns.barplot(x='date',y='Value',hue='Variable',data=pob_bar,ax=ax1,alpha=0.8,palette='husl') ax1.legend().set_title('') ax1.legend().remove() sns.pointplot(pob_line['date'],pob_line['Rate'],ax=ax2,markers='D',linestyles='--',color='teal') x=list(range(0,16)) fora,binzip(x,pob_line['Rate']): plt.text(a+0.1,b+0.001,'%.2f%%'%(b*100),ha='center',va='bottom',fontsize=12) fig1.legend(loc='uppercenter',ncol=2) plt.title('日消費人數占比')
			output

52ce7308-8cc9-11ed-bfe3-dac502259ad0.png

日活躍人數與日消費人數無明顯波動,日消費人數占比均在20%以上。

		#消費用戶日人均消費次數可視化 #柱狀圖數據 cpb_bar=(daily_buy_count.reset_index().rename(columns={'type':'Num'})) #線圖數據 cpb_line=(consumption_per_buyer.reset_index().rename(columns={0:'Frequency'})) fig2=plt.figure(figsize=[16,6]) ax3=fig2.add_subplot(111) ax4=ax3.twinx() sns.barplot(x='date',y='Num',data=cpb_bar,ax=ax3,alpha=0.8,palette='pastel') sns.pointplot(cpb_line['date'],cpb_line['Frequency'],ax=ax4,markers='D',linestyles='--',color='teal') x=list(range(0,16)) fora,binzip(x,cpb_line['Frequency']): plt.text(a+0.1,b+0.001,'%.2f'%b,ha='center',va='bottom',fontsize=12) plt.title('消費用戶日人均消費次數')
			output

52dbd46c-8cc9-11ed-bfe3-dac502259ad0.png

日消費人數在25000以上,日人均消費次數大于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 SELECTdate,COUNT(DISTINCTuser_id) FROM (SELECTdate,user_id,COUNT(type) FROMbehavior_sql GROUPBYdate,user_id HAVINGCOUNT(type)>=3)dau3 GROUPBYdate;

		
			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)) fora,binzip(x,dau3_num.values): plt.text(a+0.1,b+300,'%i'%b,ha='center',va='bottom',fontsize=14) plt.title('每日高活躍用戶數')
			output

52eb5e5a-8cc9-11ed-bfe3-dac502259ad0.png

每日高活躍用戶數在大部分4萬以上,2018-04-04之前數量比較平穩,之后數量一直攀升,8號9號達到最高,隨后下降,推測數據波動應為營銷活動產生的

		#高活躍用戶累計活躍天數分布 dau3_cumsum=dau3_df.groupby('user_id')['date'].count()

		#SQL SELECTuser_id,COUNT(date) FROM (SELECTdate,user_id,COUNT(type) FROMbehavior_sql GROUPBYdate,user_id HAVINGCOUNT(type)>=3)dau3 GROUPBYuser_id;

		
			fig,ax=plt.subplots(figsize=[16,6]) ax.set_yscale("log") sns.countplot(dau3_cumsum.values,palette='Set1') forpinax.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

52f9f91a-8cc9-11ed-bfe3-dac502259ad0.png

統計周期內,大部分高活躍用戶累計活躍天數在六天以下,但也存在高達十六天的超級活躍用戶數量,對累計天數較高的用戶要推出連續登錄獎勵等繼續維持其對平臺的黏性,對累計天數較低的用戶要適當進行推送活動消息等對其進行召回。

		#每日瀏覽量 pv_daily=behavior[behavior['type']=='pv'].groupby('date')['user_id'].count() #每日訪客數 uv_daily=behavior.groupby('date')['user_id'].nunique()

		#SQL #每日瀏覽量 SELECTdate,COUNT(type)pv_dailyFROMbehavior_sql WHEREtype='pv' GROUPBYdate; #每日訪客數 SELECTdate,COUNT(DISTINCTuser_id)uv_dailyFROMbehavior_sql GROUPBYdate;

		#每日瀏覽量可視化 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)) fora,binzip(x,pv_daily.values): plt.text(a+0.1,b+2000,'%i'%b,ha='center',va='bottom',fontsize=14) plt.title('每日瀏覽量')
			output

5308bad6-8cc9-11ed-bfe3-dac502259ad0.png


		#每日訪客數可視化 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)) fora,binzip(x,uv_daily.values): plt.text(a+0.1,b+500,'%i'%b,ha='center',va='bottom',fontsize=14) plt.title('每日訪客數')
			output

5315fb1a-8cc9-11ed-bfe3-dac502259ad0.png

瀏覽量和訪客數每日變化趨勢大致相同,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 #每時瀏覽量 SELECTdate,COUNT(type)pv_dailyFROMbehavior_sql WHEREtype='pv' GROUPBYhour; #每時訪客數 SELECTdate,COUNT(DISTINCTuser_id)uv_dailyFROMbehavior_sql GROUPBYhour;

		#瀏覽量隨小時變化可視化 fig,ax=plt.subplots(figsize=[16,6]) sns.pointplot(pv_hourly.index,pv_hourly.values,markers='H',linestyles='--',color='dodgerblue') fora,binzip(pv_hourly.index,pv_hourly.values): plt.text(a,b+10000,'%i'%b,ha='center',va='bottom',fontsize=12) plt.title('瀏覽量隨小時變化')
			output

53293770-8cc9-11ed-bfe3-dac502259ad0.png


		#訪客數隨小時變化可視化 fig,ax=plt.subplots(figsize=[16,6]) sns.pointplot(uv_hourly.index,uv_hourly.values,markers='H',linestyles='--',color='m') fora,binzip(uv_hourly.index,uv_hourly.values): plt.text(a,b+1000,'%i'%b,ha='center',va='bottom',fontsize=12) plt.title('訪客數隨小時變化')
			output

5336b134-8cc9-11ed-bfe3-dac502259ad0.png

瀏覽量及訪客數隨小時變化趨勢一致,在凌晨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 #用戶各操作隨小時變化 SELECThour, SUM(CASEWHENbehavior='pv'THEN1ELSE0END)AS'pv', SUM(CASEWHENbehavior='fav'THEN1ELSE0END)AS'fav', SUM(CASEWHENbehavior='cart'THEN1ELSE0END)AS'cart', SUM(CASEWHENbehavior='pay'THEN1ELSE0END)AS'pay' FROMbehavior_sql GROUPBYhour ORDERBYhour #用戶各操作隨星期變化 SELECTweekday, SUM(CASEWHENbehavior='pv'THEN1ELSE0END)AS'pv', SUM(CASEWHENbehavior='fav'THEN1ELSE0END)AS'fav', SUM(CASEWHENbehavior='cart'THEN1ELSE0END)AS'cart', SUM(CASEWHENbehavior='pay'THEN1ELSE0END)AS'pay' FROMbehavior_sql GROUPBYweekday ORDERBYweekday


		
			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

534cdc3e-8cc9-11ed-bfe3-dac502259ad0.png

用戶操作隨小時變化規律與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

535dcd96-8cc9-11ed-bfe3-dac502259ad0.png

周一到周四工作日期間,用戶操作隨星期變化比較平穩,周五至周六進入休息日,用戶操作明顯增多,周日又恢復正常。

4、用戶行為轉化漏斗


		#導入相關包 frompyechartsimportoptionsasopts frompyecharts.chartsimportFunnel importmath

		
			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

536ccac6-8cc9-11ed-bfe3-dac502259ad0.png

用戶整體行為中,有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']'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]]foriinrange(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

53826f2a-8cc9-11ed-bfe3-dac502259ad0.png

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']'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']'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]]foriinrange(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

539de8c2-8cc9-11ed-bfe3-dac502259ad0.png

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']'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']'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]]foriinrange(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

53b36d6e-8cc9-11ed-bfe3-dac502259ad0.png

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']'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']'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']'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]]foriinrange(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

53c12ac6-8cc9-11ed-bfe3-dac502259ad0.png

不同路徑用戶消費時間間隔分析:

pv - cart - pay


		
			pcp_interval=pv_cart_pay_df.groupby(['user_id','sku_id']).apply(lambdax:(x.action_time.min()-x.action_time_cart.min())).reset_index() pcp_interval['interval']=pcp_interval[0].apply(lambdax:x.seconds)/3600 pcp_interval['interval']=pcp_interval['interval'].apply(lambdax:math.ceil(x))

		
			fig,ax=plt.subplots(figsize=[16,6]) sns.countplot(pcp_interval['interval'],palette='Set1') forpinax.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

53d05d70-8cc9-11ed-bfe3-dac502259ad0.png

pv - fav - pay


		
			pfp_interval=pv_fav_pay_df.groupby(['user_id','sku_id']).apply(lambdax:(x.action_time.min()-x.action_time_fav.min())).reset_index() pfp_interval['interval']=pfp_interval[0].apply(lambdax:x.seconds)/3600 pfp_interval['interval']=pfp_interval['interval'].apply(lambdax:math.ceil(x))

		
			fig,ax=plt.subplots(figsize=[16,6]) sns.countplot(pfp_interval['interval'],palette='Set1') forpinax.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

53e2fb42-8cc9-11ed-bfe3-dac502259ad0.png

兩種路徑下大部分用戶均在4小時內完成了支付,大部分用戶的購物意向很明確,也側面說明了網站的商品分類布局和購物結算方式比較合理

		#SQL #漏斗圖 SELECTtype,COUNT(DISTINCTuser_id)user_num FROMbehavior_sql GROUPBYtype ORDERBYCOUNT(DISTINCTuser_id)DESC SELECTCOUNT(DISTINCTb.user_id)ASpv_fav_num,COUNT(DISTINCTc.user_id)ASpv_fav_pay_num FROM ((SELECTDISTINCTuser_id,sku_id,action_timeFROMusersWHEREtype='pv')ASa LEFTJOIN (SELECTDISTINCTuser_id,sku_id,action_timeFROMusersWHEREtype='fav' ANDuser_idNOTIN (SELECTDISTINCTuser_id FROMbehavior_sql WHEREtype='cart'))ASb ONa.user_id=b.user_idANDa.sku_id=b.sku_idANDa.action_time<=?b.action_time LEFT?JOIN (SELECT?DISTINCT?user_id,sku_id,item_category,times_new?FROM?users?WHERE?behavior_type='pay')ASc ONb.user_id=c.user_idANDb.sku_id=c.sku_idANDANDb.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

		#留存率可視化 fig,ax=plt.subplots(figsize=[16,6]) sns.barplot(x='n日后留存率',y='Rate',data=retention_rate, palette='Set1') x=list(range(0,3)) fora,binzip(x,retention_rate['Rate']): plt.text(a,b+0.001,'%.2f%%'%(b*100),ha='center',va='bottom',fontsize=12) plt.title('用戶留存率')
			output

53f924d0-8cc9-11ed-bfe3-dac502259ad0.png

留存率反應了產品質量和保留用戶的能力,按照Facebook平臺流傳出留存率“40–20–10”規則(規則中的數字表示的是次日留存率、第7日留存率和第30日留存率),統計周期內第五日留存率為22.81%,第15日留存率為17.44%。 反映出平臺的用戶依賴性較高,也因平臺發展已經到達穩定階段,用戶保留率不會發生較大波動,數據量足夠的情況下可以以年為單位,計算按月的留存率。要合理安排消息推送,推出簽到有獎等機制提高用戶粘性,進一步提高留存率。

		#SQL #n日后留存率=(注冊后的n日后還登錄的用戶數)/第一天新增總用戶數 createtableretention_rateasselectcount(distinctuser_id)asuser_num_firstfrombehavior_sql wheredate='2018-03-30'; altertableretention_rateaddcolumnuser_num_fifthINTEGER; updateretention_ratesetuser_num_fifth= (selectcount(distinctuser_id)frombehavior_sql wheredate='2018-04-03'anduser_idin(SELECTuser_idFROMbehavior_sql WHEREdate='2018-03-30')); altertableretention_rateaddcolumnuser_num_tenthINTEGER; updateretention_ratesetuser_num_tenth= (selectcount(distinctuser_id)frombehavior_sql wheredate='2018-04-08'anduser_idin(SELECTuser_idFROMbehavior_sql WHEREdate='2018-03-30')); altertableretention_rateaddcolumnuser_num_fifteenthINTEGER; updateretention_ratesetuser_num_fifteenth= (selectcount(distinctuser_id)frombehavior_sql wheredate='2018-04-13'anduser_idin(SELECTuser_idFROMbehavior_sql WHEREdate='2018-03-30')); SELECTCONCAT(ROUND(100*user_num_fifth/user_num_first,2),'%')ASfifth_day_retention_rate, CONCAT(ROUND(100*user_num_tenth/user_num_first,2),'%')AStenth_day_retention_rate, CONCAT(ROUND(100*user_num_fifteenth/user_num_first,2),'%')ASfifteenth_day_retention_rate fromretention_rate;

6、商品銷量分析


		#商品總數 behavior['sku_id'].nunique()
			output

		
			239007

		#商品被購前產生平均操作次數 sku_df=behavior[behavior['sku_id'].isin(behavior[behavior['type']=='pay']['sku_id'].unique())].groupby('sku_id')['type'].value_counts().unstack(fill_value=0) sku_df['total']=sku_df.sum(axis=1) sku_df['avg_beha']=round((sku_df['total']/sku_df['pay']),2) fig,ax=plt.subplots(figsize=[8,6]) sns.scatterplot(x='avg_beha',y='pay',data=sku_df,palette='Set1') ax.set_xscale("log") ax.set_yscale("log") plt.xlabel('平均操作次數') plt.ylabel('銷量')
			output

541285a6-8cc9-11ed-bfe3-dac502259ad0.png

  • 左下角操作少購買少,屬于冷門購買頻率較低的產品。
  • 左上角操作少購買多,屬于快消類產品,可選擇品牌少,少數品牌壟斷的行業。
  • 右下角操作多購買少,品牌多,但是購買頻率低,應為貴重物品類。
  • 右上角操作多購買多,大眾品牌,可選多,被購買頻次高。

		#商品銷量排行 sku_num=(behavior[behavior['type']=='pay'].groupby('sku_id')['type'].count().to_frame() .rename(columns={'type':'total'}).reset_index()) #銷量大于1000的商品 topsku=sku_num[sku_num['total']>1000].sort_values(by='total',ascending=False) #單個用戶共購買商品種數 sku_num_per_user=(behavior[behavior['type']=='pay']).groupby(['user_id'])['sku_id'].nunique() topsku.set_index('sku_id').style.bar(color='skyblue',subset=['total'])
			output

545e53a0-8cc9-11ed-bfe3-dac502259ad0.png

在計算周期內訂單數均突破1000以上的共有13款產品,其中152092這款產品訂單數最高為1736. 推出商品組合有優惠等,提高單個用戶購買產品種數

		#SQL #sku銷量排行 SELECTsku_id,COUNT(type)sku_numFROMbehavior_sql WHEREtype='pay' GROUPBYsku_id HAVINGsku_num>1000 ORDERBYsku_numDESC;

7、RFM用戶分層


		#RFM #由于缺少M(金額)列,僅通過R(最近一次購買時間)和F(消費頻率)對用戶進行價值分析 buy_group=behavior[behavior['type']=='pay'].groupby('user_id')['date'] #將2018-04-13作為每個用戶最后一次購買時間來處理 final_day=datetime.date(datetime.strptime('2018-04-14','%Y-%m-%d')) #最近一次購物時間 recent_buy_time=buy_group.apply(lambdax:final_day-x.max()) recent_buy_time=recent_buy_time.reset_index().rename(columns={'date':'recent'}) recent_buy_time['recent']=recent_buy_time['recent'].map(lambdax:x.days) #近十五天內購物頻率 buy_freq=buy_group.count().reset_index().rename(columns={'date':'freq'}) RFM=pd.merge(recent_buy_time,buy_freq,on='user_id')

		
			RFM['R']=pd.qcut(RFM.recent,2,labels=['1','0']) #天數小標簽為1天數大標簽為0 RFM['F']=pd.qcut(RFM.freq.rank(method='first'),2,labels=['0','1']) #頻率大標簽為1頻率小標簽為0 RFM['RFM']=RFM['R'].astype(int).map(str)+RFM['F'].astype(int).map(str) dict_n={'01':'重要保持客戶', '11':'重要價值客戶', '10':'重要挽留客戶', '00':'一般發展客戶'} #用戶標簽 RFM['用戶等級']=RFM['RFM'].map(dict_n) RFM_pie=RFM['用戶等級'].value_counts().reset_index() RFM_pie['Rate']=RFM_pie['用戶等級']/RFM_pie['用戶等級'].sum() fig,ax=plt.subplots(figsize=[16,6]) plt.pie(RFM_pie['Rate'],labels=RFM_pie['index'],startangle=90,autopct="%1.2f%%", counterclock=False,colors=['yellowgreen','gold','lightskyblue','lightcoral']) plt.axis('square') plt.title('RFM用戶分層')
			output

546d6f52-8cc9-11ed-bfe3-dac502259ad0.png

不同類型用戶占比差異較小,應提升重要價值各戶的占比,減小一般發展客戶的占比。 通過RFM模型對用戶價值進行分類,對不同價值用戶應采取不同的運營策略:
  • 對于重要價值客戶來說,要提高該部分用戶的滿意度,服務升級,發放特別福利,增大該部分用戶留存率,在做運營推廣時也要給與特別關注,避免引起用戶反感。
  • 對于重要保持客戶,他們購物頻次較高,但最近一段時間沒有消費,可以推送相關其他商品,發放優惠卷、贈品和促銷信息等,喚回該部分用戶。
  • 對于重要挽留客戶,他們最近消費過,但購物頻次較低,可以通過問卷有禮的方式找出其對平臺的不滿,提升購物體驗,增大用戶粘性。
  • 對于一般發展客戶,做到定期發送郵件或短信喚回,努力將其轉化為重要保持客戶或重要挽留客戶。

		#SQL #RFM CREATEVIEWRF_tableAS SELECTuser_id,DATEDIFF('2018-04-14',MAX(date))ASR_days, COUNT(*)ASF_count FROMbehavior_sqlWHEREtype='pay'GROUPBYuser_id; SELECTAVG(R_days),AVG(F_count) FROMRF_table createviewRF_layeras SELECTuser_id,(CASEWHENR_days"重要價值客戶" WHENR=1andF=0THEN"重要挽留客戶" WHENR=0andF=1THEN"重要保持客戶" WHENR=0andF=0THEN"一般發展客戶"ELSE0END)as用戶價值 FROMRF_layer; SELECT*FROMcustomer_value;

5、總結

1.可以增加渠道推廣投入,進行精準人群推廣,推出新用戶福利,吸引新用戶,推出團購、分享有禮等活動促進老帶新,推出促銷活動刺激老用戶,提高訪客數和瀏覽量。提高產品質量,提高商品詳情頁對用戶的吸引力,降低跳失率。 2.根據用戶操作隨時間變化規律來開展營銷活動,使活動更容易觸達用戶,在用戶訪問高峰期多推送用戶感興趣商品。 3.復購率較低,說明用戶對平臺購物體驗不滿,需要找出用戶槽點,提高用戶購物滿意度,優化商品推送機制,對老用戶給予特別福利,提高他們所享受權益。轉化率也偏低,需要改善平臺搜索機制降低提高搜索效率,優化購物路徑降低購物復雜度,改善商品詳情信息展示方式便于信息的獲取。 4.留存率相對穩定,為進一步提高留存率,可以定期推出秒殺活動,推出專享優惠券,推出簽到有禮環節,增加用戶瀏覽時長和深度,提高用戶粘性。分析用戶對產品的真實使用感受與評價,提高用戶忠誠度。 5.通過RFM對用戶進行分層,將用戶從一個整體拆分成特征明顯的群體,有針對性的采取不同的營銷方法進行精準化營銷,用有限的公司資源優先服務于公司最重要的客戶。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    767

    瀏覽量

    44173
  • python
    +關注

    關注

    56

    文章

    4798

    瀏覽量

    84802
  • 數據集
    +關注

    關注

    4

    文章

    1208

    瀏覽量

    24731

原文標題:完整案例!Python + SQL 京東用戶行為分析

文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    淺談SQL優化小技巧

    作者:京東零售 王軍 回顧:MySQL的執行過程回顧 MySQL的執行過程,幫助 介紹 如何進行sql優化。 (1)客戶端發送一條查詢語句到服務器; (2)服務器先查詢緩存,如果命中緩存,則立即返回
    的頭像 發表于 12-25 09:59 ?492次閱讀

    如何使用SQL進行數據分析

    使用SQL進行數據分析是一個強大且靈活的過程,它涉及從數據庫中提取、清洗、轉換和聚合數據,以便進行進一步的分析和洞察。 1. 數據提取(Data Extraction) 選擇數據源 :確定你要
    的頭像 發表于 11-19 10:26 ?320次閱讀

    SQL與NoSQL的區別

    在信息技術領域,數據庫是存儲和管理數據的核心組件。隨著互聯網的發展和大數據時代的到來,對數據庫的需求也在不斷變化。SQL和NoSQL作為兩種主流的數據庫管理系統,各自有著獨特的優勢和應用場
    的頭像 發表于 11-19 10:15 ?186次閱讀

    大數據從業者必知必會的Hive SQL調優技巧

    大數據從業者必知必會的Hive SQL調優技巧 摘要 :在大數據領域中,Hive SQL被廣泛應用于數據倉庫的數據查詢和分析。然而,由于數據量龐大和復雜的查詢需求,Hive SQL查詢
    的頭像 發表于 09-24 13:30 ?280次閱讀

    高速PCB信號完整分析及應用

    電子發燒友網站提供《高速PCB信號完整分析及應用.pdf》資料免費下載
    發表于 09-21 14:14 ?1次下載

    高速PCB信號完整性設計與分析

    高速PCB信號完整性設計與分析
    發表于 09-21 11:51 ?0次下載

    行為分析智能監測攝像機

    行為分析智能監測攝像機是一種結合了人工智能和機器學習技術的智能設備,能夠實時監測目標區域內的行為動態,并通過分析和識別行為特征來提供安全監控
    的頭像 發表于 08-21 10:14 ?316次閱讀
    <b class='flag-5'>行為</b><b class='flag-5'>分析</b>智能監測攝像機

    信號完整性與電源完整性-電源完整分析

    電子發燒友網站提供《信號完整性與電源完整性-電源完整分析.pdf》資料免費下載
    發表于 08-12 14:31 ?43次下載

    IP 地址在 SQL 注入攻擊中的作用及防范策略

    SQL 注入是通過將惡意的 SQL 代碼插入到輸入參數中,欺騙應用程序執行這些惡意代碼,從而實現對數據庫的非法操作。例如,在一個登錄表單中,如果輸入的用戶名被直接拼接到 SQL 查詢
    的頭像 發表于 08-05 17:36 ?330次閱讀

    如何在SQL中創建觸發器

    SQL中,觸發器(Trigger)是一種特殊類型的存儲過程,它自動執行或激活響應表上的數據修改事件(如INSERT、UPDATE、DELETE等)。觸發器可以用于維護數據庫的完整性、自動化復雜
    的頭像 發表于 07-18 16:01 ?1971次閱讀

    恒訊科技分析sql數據庫怎么用?

    SQL數據庫的使用通常包括以下幾個基本步驟: 1、選擇數據庫系統: 選擇適合您需求的SQL數據庫系統,如MySQL、PostgreSQL、Microsoft SQL Server、SQLite等
    的頭像 發表于 07-15 14:40 ?373次閱讀

    網絡爬蟲,Python和數據分析

    電子發燒友網站提供《網絡爬蟲,Python和數據分析.pdf》資料免費下載
    發表于 07-13 09:27 ?1次下載

    什么是 Flink SQL 解決不了的問題?

    簡介 在實時數據開發過程中,大家經常會用 Flink SQL 或者 Flink DataStream API 來做數據加工。通常情況下選用2者都能加工出想要的數據,但是總會有 Flink SQL
    的頭像 發表于 07-09 20:50 ?333次閱讀

    AI行為識別視頻監控系統 Python

    AI行為識別視頻監控系統來自機器視覺技術的革新。機器視覺技術應用是人工智能技術分析的一個支系。它可以在圖形和圖象具體內容敘述中間創建投射關聯,使電腦可以根據圖像處理和剖析比較,進而熟悉視頻圖象中
    的頭像 發表于 07-06 10:36 ?557次閱讀
    AI<b class='flag-5'>行為</b>識別視頻監控系統 <b class='flag-5'>Python</b>

    SQL全外連接剖析

    SQL中的全外連接是什么? 在SQL中,FULLOUTERJOIN組合左外連接和右外連接的結果,并返回連接子句兩側表中的所有(匹配或不匹配)行。接下面sojson給大家詳細講解。 ? 圖解:SQL
    的頭像 發表于 03-19 18:28 ?2253次閱讀
    <b class='flag-5'>SQL</b>全外連接剖析
    主站蜘蛛池模板: 色偷偷888欧美精品久久久| 国产精亚洲视频综合区| 欧美夜夜噜2017最新| 国产看午夜精品理论片| 中文在线免费看视频| 同时和两老师双飞| 嫩草影院成人| 久久精品WWW人人爽人人| 国产成人久久精品AV| 99久久精品久久久| 亚洲欧洲日本天天堂在线观看| 日本久久精品视频| 免费A级毛片无码鲁大师| 黑人娇小BBW| 国产成人免费全部网站| CHINESE老阿姨免费视频| 与子敌伦刺激对白亂輪亂性| 小柔的性放荡羞辱日记| 日本女人下面毛茸茸| 免费国产足恋网站| 久久成人免费观看全部免费| 国产亚洲精品A久久777777| 公开超碰在线视频| YELLOW视频在线观看免费版高清| 中国大陆一级毛片免费| 一本色道久久综合亚洲AV蜜桃 | 大陆老熟女60岁| BLACKED太粗太长| 97视频免费上传播放| 在线一本码道高清| 亚洲永久免费视频| 亚洲精品美女久久久久99| 亚洲 欧美 国产 综合 在线| 日韩欧美一区二区中文字幕 | 精品一区二区三区AV天堂| 国产亚洲精品视频亚洲香蕉视| 国产精品成人免费视频99| 国产成人亚洲综合无| 国产爱豆果冻传媒在线观看| 穿白丝袜边走边尿白丝袜| 成人精品视频99在线观看免费|