大數(shù)據(jù)技術(shù)基礎(chǔ)教程 課件 第10章 基于大數(shù)據(jù)的電商精準營銷_第1頁
大數(shù)據(jù)技術(shù)基礎(chǔ)教程 課件 第10章 基于大數(shù)據(jù)的電商精準營銷_第2頁
大數(shù)據(jù)技術(shù)基礎(chǔ)教程 課件 第10章 基于大數(shù)據(jù)的電商精準營銷_第3頁
大數(shù)據(jù)技術(shù)基礎(chǔ)教程 課件 第10章 基于大數(shù)據(jù)的電商精準營銷_第4頁
大數(shù)據(jù)技術(shù)基礎(chǔ)教程 課件 第10章 基于大數(shù)據(jù)的電商精準營銷_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第10章基于大數(shù)據(jù)的電商精準營銷《大數(shù)據(jù)技術(shù)基礎(chǔ)教程》學(xué)習(xí)目標(biāo)/Target掌握數(shù)據(jù)的預(yù)處理方法掌握數(shù)據(jù)分析與可視化方法章節(jié)概述/

Summary隨著互聯(lián)網(wǎng)+的快速推進,電商已經(jīng)深入了我們生活的方方面面。電商的快速興起,舊的行銷模式和營銷理論不能滿足新的經(jīng)濟模式。網(wǎng)絡(luò)化的電商,不受地域限制,數(shù)據(jù)收集方便等特點,使精準化營銷成為了可能。精準化營銷有效率高、成本低等特點,被廣泛的應(yīng)用于大數(shù)據(jù)時代的電商營銷中。本章主要介紹基于電商精準營銷案例的數(shù)據(jù)預(yù)處理概述和數(shù)據(jù)探索與可視化。目錄/Contents0102數(shù)據(jù)預(yù)處理概述數(shù)據(jù)探索與可視化數(shù)據(jù)預(yù)處理概述10.110.1數(shù)據(jù)預(yù)處理概述10.1.1數(shù)據(jù)清洗數(shù)據(jù)清洗(Datacleaning)–對數(shù)據(jù)進行重新審查和校驗的過程,目的在于刪除重復(fù)信息、糾正存在的錯誤,并提供數(shù)據(jù)一致性。在大數(shù)據(jù)時代,數(shù)據(jù)量眾多,數(shù)據(jù)信息質(zhì)量不同,只有圍繞這分析目的才能快速選擇出有用的數(shù)據(jù)。電商一般數(shù)據(jù)資源比較豐富,所以數(shù)據(jù)處理是重中之重。所謂的數(shù)據(jù)處理就是選取目標(biāo)數(shù)據(jù),對數(shù)據(jù)進行清洗、集成、變換和規(guī)約。10.1數(shù)據(jù)預(yù)處理概述10.1.1數(shù)據(jù)清洗(1)數(shù)據(jù)選擇在實際數(shù)據(jù)分析中,數(shù)據(jù)多雜亂,分析需要花費精力、資源和成本,因此我們選擇數(shù)據(jù)需要有針對性,能正確反映業(yè)務(wù)需求。從業(yè)務(wù)和分析目的入手確定樣本大小10.1數(shù)據(jù)預(yù)處理概述10.1.1數(shù)據(jù)清洗(2)數(shù)據(jù)清洗缺失值處理異常值判斷10.1數(shù)據(jù)預(yù)處理概述10.1.1數(shù)據(jù)清洗(3)Python數(shù)據(jù)處理實例數(shù)據(jù)選擇列變量處理要求:選取data數(shù)據(jù)中'user_id','time','model_id','type','cate','brand'列的變量;行變量處理要求:選取time在2016-02-01及以后的數(shù)據(jù)(包含2016-02-01)且type=6。10.1數(shù)據(jù)預(yù)處理概述10.1.1數(shù)據(jù)清洗(3)Python數(shù)據(jù)處理實例#coding:utf8importpandasaspd#導(dǎo)入pandas庫importnumpyasnp#導(dǎo)入numpy庫defchoose_data(data):#選擇變量'user_id','time','model_id','type','cate','brand',選取time在2016-02-01及以后的數(shù)據(jù)(包含2016-02-01)且type=6,數(shù)據(jù)類型如下:#user_idsku_idtimemodel_idtypecatebrand#02660791387782016-01-3123:59:02NaN18403#12660791387782016-01-3123:59:030.068403#2200719612262016-01-3123:59:07NaN1830#3200719612262016-01-3123:59:080.06830#4263587723482016-01-3123:59:08NaN15159##########Begin##########data=data[['user_id','time','model_id','type','cate','brand']].copy()data=data[(data['type']==6)&(pd.to_datetime(data['time'])>=pd.to_datetime('2016-02-01'))]##########End##########returndata數(shù)據(jù)選擇10.1數(shù)據(jù)預(yù)處理概述10.1.1數(shù)據(jù)清洗②使用抽樣方法抽取樣本以及缺失值的處理defsample_data(data):

#使用pd.DataFrame.sample函數(shù)進行隨機抽樣,不放回的隨機抽取5000個樣本,數(shù)據(jù)結(jié)構(gòu)如下:

#user_idsku_idtimemodel_idtypecatebrand

#02660791387782016-01-3123:59:02NaN18403

#12660791387782016-01-3123:59:030.068403

#2200719612262016-01-3123:59:07NaN1830

#3200719612262016-01-3123:59:080.06830

#4263587723482016-01-3123:59:08NaN15159

##########Begin##########data=data.sample(5000)

##########End##########

returndatadefclear_data(df):

#根據(jù)提示完成下列操作,案例數(shù)據(jù)結(jié)構(gòu)如下:

#col1col2col3col4

#0-1.055712-0.196175-0.813023-0.806857

#10.972878NaN-1.722135-0.638893

#20.444641-0.189607-0.1993073.496211

#30.273065-1.9708870.9541700.823823

#40.729248-1.0366441.398436NaN

#5-0.3234390.208351-0.429920-0.175628

##########Begin##########

#直接刪除缺失值樣本,直接在下面補全代碼實現(xiàn)要求的功能,例如nan_result_pd1=df.dropna()nan_result_pd1=df.dropna()

#用后面的值替換缺失值

nan_result_pd2=df.fillna(method='backfill')

#用前面的值替換缺失值

nan_result_pd3=df.fillna(method='pad')

#用0替換缺失值

nan_result_pd4=df.fillna(0)

#用不同值替換不同列的缺失值,col2的確實值使用1填充,col4的確實值使用2來填充

nan_result_pd5=df.fillna({'col2':

1,

'col4':

2})

#用平均數(shù)代替,選擇各自列的均值替換缺失值

nan_result_pd6=df.fillna(df.mean()['col2':'col4'])##########End##########return10.1數(shù)據(jù)預(yù)處理概述10.1.1數(shù)據(jù)清洗③重復(fù)值的處理在實際業(yè)務(wù)中數(shù)據(jù)復(fù)雜多樣,有些重復(fù)數(shù)據(jù)可以反應(yīng)實際的業(yè)務(wù)情況。但是大部分重復(fù)數(shù)據(jù)會影響對結(jié)果的分析,所以數(shù)據(jù)清洗中需要刪除不能反應(yīng)業(yè)務(wù)的重復(fù)數(shù)據(jù)。Python的pandas包中提供一個DataFrame.drop_duplicates

函數(shù),可以方便的處理重復(fù)值。#coding:utf8importpandasaspd#請完善drop_duplicate_value函數(shù),實現(xiàn)對data數(shù)據(jù)樣本去重,

defdrop_duplicate_value(data):#實現(xiàn)樣本去重##########Begin##########data=data.drop_duplicates()#使用pandas中去重函數(shù),函數(shù)默認保留重復(fù)樣本的第一條

##########End##########returndata10.1數(shù)據(jù)預(yù)處理概述10.1.1數(shù)據(jù)清洗④異常值處理待處理的數(shù)據(jù)如下:col1col201121200172331355342225123261343defclear_unnormal_data(df):#異常值處理,我們這里認為當(dāng)連續(xù)的變量值在2.2個標(biāo)準差外算作異常值,并刪除異常值####################數(shù)據(jù)###########col1col2#0112#120017#2331#3553#4222#51232#61343############################################Begin##########df_zscore=df.copy()#復(fù)制一個用來存儲Z-score得分的數(shù)據(jù)框cols=df.columns#獲得數(shù)據(jù)框的列名forcolincols:#循環(huán)讀取每列df_col=df[col]#得到每列的值z_score=(df_col-df_col.mean())/df_col.std()#計算每列的Z-score得分df_zscore[col]=z_score.abs()>2.2#判斷Z-score得分是否大于2.2,如果是則是True,否則為Falsedf=df[df_zscore.sum(axis=1)==0]#刪除異常數(shù)據(jù)樣本##########End##########returndf

Python實現(xiàn)代碼如下:10.1數(shù)據(jù)預(yù)處理概述10.1.1數(shù)據(jù)清洗(4)數(shù)據(jù)轉(zhuǎn)換變量類型轉(zhuǎn)換改善變量分布的轉(zhuǎn)換區(qū)間型變量的分箱轉(zhuǎn)換變量進行標(biāo)準化操作10.1數(shù)據(jù)預(yù)處理概述10.1.1數(shù)據(jù)清洗(4)數(shù)據(jù)轉(zhuǎn)換實現(xiàn)對下列數(shù)據(jù)sex和level的轉(zhuǎn)換和標(biāo)準化操作。idsexlevelscoremark03566841malehigh1316541227Femalelow2323512441Femalemiddle3233566842malehigh4143566843Femalelow5253566844Femalemiddle6563566845malehigh3673566846Femalelow5783566847Femalemiddle6910.1數(shù)據(jù)預(yù)處理概述10.1.1數(shù)據(jù)清洗(4)數(shù)據(jù)轉(zhuǎn)換#coding:utf8importpandasaspd#導(dǎo)入pandas庫fromsklearn.preprocessingimportOneHotEncoder,LabelEncoder#導(dǎo)入庫importnumpyasnpfromsklearnimportpreprocessing#df數(shù)據(jù)框的數(shù)據(jù)結(jié)構(gòu)如下:#idsexlevelscoremark#03566841malehigh13#16541227Femalelow23#23512441Femalemiddle32#33566842malehigh41#43566843Femalelow52#53566844Femalemiddle65#63566845malehigh36#73566846Femalelow57#83566847Femalemiddle69#類型變量數(shù)據(jù)轉(zhuǎn)換defto_normal(df,cols=['sex','level']):"""把上面數(shù)據(jù)中df['sex','level']的類型數(shù)據(jù)轉(zhuǎn)換成0-1編碼,編碼數(shù)據(jù)命名規(guī)則要求,"原始變量名"+"_"+類型變量,例如sex_Famle"""id_data=df.drop(cols,axis=1)#獲取未轉(zhuǎn)化的列raw_convert_data=df[cols]#指定要轉(zhuǎn)換的列df_new3=pd.get_dummies(raw_convert_data)#進行熱編碼df=pd.concat((id_data,pd.DataFrame(df_new3)),axis=1)#重新組合為數(shù)據(jù)框returndf

10.1數(shù)據(jù)預(yù)處理概述10.1.1數(shù)據(jù)清洗(4)數(shù)據(jù)轉(zhuǎn)換defcut_bins(df,col='score'):#對score變量進行等頻分箱(每箱的樣本量相同),分成3箱,箱從小到大使用1,2,3作為箱標(biāo)簽,在df數(shù)據(jù)上新增一列'cut_bins_1'來存儲數(shù)據(jù)df['cut_bins_1']=pd.qcut(df[col],3,labels=[1,2,3])

#對score變量進行等距分箱(每箱的組距相同),分成3箱,箱從小到大使用1,2,3作為箱標(biāo)簽,在df數(shù)據(jù)上新增一列'cut_bins_2'來存儲數(shù)據(jù)df['cut_bins_2']=pd.cut(df[col],3,labels=[1,2,3])

returndf

#數(shù)據(jù)標(biāo)準化defStandardScaler(df,col=['score','mark']):#對df['score','mark']進行zscore_scaler標(biāo)準化后,得到data1zscore_scaler=preprocessing.StandardScaler()#建立StandardScaler對象data1=zscore_scaler.fit_transform(df[col])#StandardScaler標(biāo)準化處理

#對df['score','mark']進行minmax_scaler標(biāo)準化,得到data2minmax_scaler=preprocessing.MinMaxScaler()#建立MinMaxScaler模型對象ata2=minmax_scaler.fit_transform(df[col])#MinMaxScaler標(biāo)準化處理

returndata1,data2#對標(biāo)準化后的數(shù)據(jù)輸出,例如returndata1,data2

if__name__=='__main__':print('sucess')數(shù)據(jù)探索與可視化10.210.2數(shù)據(jù)探索與可視化10.2.1變量特征分布分析數(shù)據(jù)之前,需要自己先對數(shù)據(jù)進行深入的了解(這些數(shù)據(jù)是什么類型,總共有多少數(shù)據(jù),有沒有缺失值,均值是多少之類的),只有自己對數(shù)據(jù)足夠了解了,才能夠更好地分析數(shù)據(jù)。單邊量數(shù)據(jù)是指數(shù)據(jù)集中只有一個變量,也可以是多列中的某一列(可以理解成是某一個指標(biāo))。比如一個班的體測成績表是一個數(shù)據(jù)集(包含身高、體重、1000米用時之類的各種指標(biāo)),那么該數(shù)據(jù)集里面的某一個指標(biāo)就可以看作是一個單變量數(shù)據(jù)。拿到一批/列數(shù)據(jù)時,第一件事就是看一下這批數(shù)據(jù)的一個整體分布情況,而要看分布情況最好的方法就是繪制該批數(shù)據(jù)的餅圖和密度圖。10.2數(shù)據(jù)探索與可視化10.2.1變量特征分布(1)餅圖餅圖適用于一個維度各項指標(biāo)占總體的占比情況,分布情況。能直觀顯示各項目和總體的占比、分布,強調(diào)整體和個體間的比較。適合比較簡單的占比關(guān)系,不要求精度的場景。在變量探索中對類型變量種類較少時,餅圖比較實用。matplotlib中畫餅圖比較簡單,使用語法如下:pie(x,explode=None,labels=None,colors=None,autopct=None,pctdistance=0.6,shadow=False,labeldistance=1.1,startangle=None,radius=None,counterclock=True,wedgeprops=None,textprops=None,center=(0,0),frame=False,rotatelabels=False,*,data=None)10.2數(shù)據(jù)探索與可視化10.2.1變量特征分布(2)密度圖對于連續(xù)變量探索,密度分布圖能夠很好的幫助我們發(fā)現(xiàn)變量的分布特點及是否有異常情況。可以使用seaborn包簡單的實現(xiàn)。使用語法如下:distplot(a,bins=None,hist=True,kde=True,rug=False,fit=None,hist_kws=None,kde_kws=None,rug_kws=None,fit_kws=None,color=None,vertical=False,norm_hist=False,axlabel=None,label=None,ax=None)10.2數(shù)據(jù)探索與可視化10.2.1變量特征分布(3)matplotlib畫含有多個子圖的圖使用plt.s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論