大数据技术基础教程 课件 第10章 基于大数据的电商精准营销_第1页
大数据技术基础教程 课件 第10章 基于大数据的电商精准营销_第2页
大数据技术基础教程 课件 第10章 基于大数据的电商精准营销_第3页
大数据技术基础教程 课件 第10章 基于大数据的电商精准营销_第4页
大数据技术基础教程 课件 第10章 基于大数据的电商精准营销_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章基于大数据的电商精准营销《大数据技术基础教程》学习目标/Target掌握数据的预处理方法掌握数据分析与可视化方法章节概述/

Summary随着互联网+的快速推进,电商已经深入了我们生活的方方面面。电商的快速兴起,旧的行销模式和营销理论不能满足新的经济模式。网络化的电商,不受地域限制,数据收集方便等特点,使精准化营销成为了可能。精准化营销有效率高、成本低等特点,被广泛的应用于大数据时代的电商营销中。本章主要介绍基于电商精准营销案例的数据预处理概述和数据探索与可视化。目录/Contents0102数据预处理概述数据探索与可视化数据预处理概述10.110.1数据预处理概述10.1.1数据清洗数据清洗(Datacleaning)–对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并提供数据一致性。在大数据时代,数据量众多,数据信息质量不同,只有围绕这分析目的才能快速选择出有用的数据。电商一般数据资源比较丰富,所以数据处理是重中之重。所谓的数据处理就是选取目标数据,对数据进行清洗、集成、变换和规约。10.1数据预处理概述10.1.1数据清洗(1)数据选择在实际数据分析中,数据多杂乱,分析需要花费精力、资源和成本,因此我们选择数据需要有针对性,能正确反映业务需求。从业务和分析目的入手确定样本大小10.1数据预处理概述10.1.1数据清洗(2)数据清洗缺失值处理异常值判断10.1数据预处理概述10.1.1数据清洗(3)Python数据处理实例数据选择列变量处理要求:选取data数据中'user_id','time','model_id','type','cate','brand'列的变量;行变量处理要求:选取time在2016-02-01及以后的数据(包含2016-02-01)且type=6。10.1数据预处理概述10.1.1数据清洗(3)Python数据处理实例#coding:utf8importpandasaspd#导入pandas库importnumpyasnp#导入numpy库defchoose_data(data):#选择变量'user_id','time','model_id','type','cate','brand',选取time在2016-02-01及以后的数据(包含2016-02-01)且type=6,数据类型如下:#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数据选择10.1数据预处理概述10.1.1数据清洗②使用抽样方法抽取样本以及缺失值的处理defsample_data(data):

#使用pd.DataFrame.sample函数进行随机抽样,不放回的随机抽取5000个样本,数据结构如下:

#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):

#根据提示完成下列操作,案例数据结构如下:

#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##########

#直接删除缺失值样本,直接在下面补全代码实现要求的功能,例如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})

#用平均数代替,选择各自列的均值替换缺失值

nan_result_pd6=df.fillna(df.mean()['col2':'col4'])##########End##########return10.1数据预处理概述10.1.1数据清洗③重复值的处理在实际业务中数据复杂多样,有些重复数据可以反应实际的业务情况。但是大部分重复数据会影响对结果的分析,所以数据清洗中需要删除不能反应业务的重复数据。Python的pandas包中提供一个DataFrame.drop_duplicates

函数,可以方便的处理重复值。#coding:utf8importpandasaspd#请完善drop_duplicate_value函数,实现对data数据样本去重,

defdrop_duplicate_value(data):#实现样本去重##########Begin##########data=data.drop_duplicates()#使用pandas中去重函数,函数默认保留重复样本的第一条

##########End##########returndata10.1数据预处理概述10.1.1数据清洗④异常值处理待处理的数据如下:col1col201121200172331355342225123261343defclear_unnormal_data(df):#异常值处理,我们这里认为当连续的变量值在2.2个标准差外算作异常值,并删除异常值####################数据###########col1col2#0112#120017#2331#3553#4222#51232#61343############################################Begin##########df_zscore=df.copy()#复制一个用来存储Z-score得分的数据框cols=df.columns#获得数据框的列名forcolincols:#循环读取每列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]#删除异常数据样本##########End##########returndf

Python实现代码如下:10.1数据预处理概述10.1.1数据清洗(4)数据转换变量类型转换改善变量分布的转换区间型变量的分箱转换变量进行标准化操作10.1数据预处理概述10.1.1数据清洗(4)数据转换实现对下列数据sex和level的转换和标准化操作。idsexlevelscoremark03566841malehigh1316541227Femalelow2323512441Femalemiddle3233566842malehigh4143566843Femalelow5253566844Femalemiddle6563566845malehigh3673566846Femalelow5783566847Femalemiddle6910.1数据预处理概述10.1.1数据清洗(4)数据转换#coding:utf8importpandasaspd#导入pandas库fromsklearn.preprocessingimportOneHotEncoder,LabelEncoder#导入库importnumpyasnpfromsklearnimportpreprocessing#df数据框的数据结构如下:#idsexlevelscoremark#03566841malehigh13#16541227Femalelow23#23512441Femalemiddle32#33566842malehigh41#43566843Femalelow52#53566844Femalemiddle65#63566845malehigh36#73566846Femalelow57#83566847Femalemiddle69#类型变量数据转换defto_normal(df,cols=['sex','level']):"""把上面数据中df['sex','level']的类型数据转换成0-1编码,编码数据命名规则要求,"原始变量名"+"_"+类型变量,例如sex_Famle"""id_data=df.drop(cols,axis=1)#获取未转化的列raw_convert_data=df[cols]#指定要转换的列df_new3=pd.get_dummies(raw_convert_data)#进行热编码df=pd.concat((id_data,pd.DataFrame(df_new3)),axis=1)#重新组合为数据框returndf

10.1数据预处理概述10.1.1数据清洗(4)数据转换defcut_bins(df,col='score'):#对score变量进行等频分箱(每箱的样本量相同),分成3箱,箱从小到大使用1,2,3作为箱标签,在df数据上新增一列'cut_bins_1'来存储数据df['cut_bins_1']=pd.qcut(df[col],3,labels=[1,2,3])

#对score变量进行等距分箱(每箱的组距相同),分成3箱,箱从小到大使用1,2,3作为箱标签,在df数据上新增一列'cut_bins_2'来存储数据df['cut_bins_2']=pd.cut(df[col],3,labels=[1,2,3])

returndf

#数据标准化defStandardScaler(df,col=['score','mark']):#对df['score','mark']进行zscore_scaler标准化后,得到data1zscore_scaler=preprocessing.StandardScaler()#建立StandardScaler对象data1=zscore_scaler.fit_transform(df[col])#StandardScaler标准化处理

#对df['score','mark']进行minmax_scaler标准化,得到data2minmax_scaler=preprocessing.MinMaxScaler()#建立MinMaxScaler模型对象ata2=minmax_scaler.fit_transform(df[col])#MinMaxScaler标准化处理

returndata1,data2#对标准化后的数据输出,例如returndata1,data2

if__name__=='__main__':print('sucess')数据探索与可视化10.210.2数据探索与可视化10.2.1变量特征分布分析数据之前,需要自己先对数据进行深入的了解(这些数据是什么类型,总共有多少数据,有没有缺失值,均值是多少之类的),只有自己对数据足够了解了,才能够更好地分析数据。单边量数据是指数据集中只有一个变量,也可以是多列中的某一列(可以理解成是某一个指标)。比如一个班的体测成绩表是一个数据集(包含身高、体重、1000米用时之类的各种指标),那么该数据集里面的某一个指标就可以看作是一个单变量数据。拿到一批/列数据时,第一件事就是看一下这批数据的一个整体分布情况,而要看分布情况最好的方法就是绘制该批数据的饼图和密度图。10.2数据探索与可视化10.2.1变量特征分布(1)饼图饼图适用于一个维度各项指标占总体的占比情况,分布情况。能直观显示各项目和总体的占比、分布,强调整体和个体间的比较。适合比较简单的占比关系,不要求精度的场景。在变量探索中对类型变量种类较少时,饼图比较实用。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数据探索与可视化10.2.1变量特征分布(2)密度图对于连续变量探索,密度分布图能够很好的帮助我们发现变量的分布特点及是否有异常情况。可以使用seaborn包简单的实现。使用语法如下: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数据探索与可视化10.2.1变量特征分布(3)matplotlib画含有多个子图的图使用plt.s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论