大数据可视化 课件 项目6 Plotly实战_第1页
大数据可视化 课件 项目6 Plotly实战_第2页
大数据可视化 课件 项目6 Plotly实战_第3页
大数据可视化 课件 项目6 Plotly实战_第4页
大数据可视化 课件 项目6 Plotly实战_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

项目六:—Plotly实战(用户行为数据可视化)目录CONTENTS思考与练习项目概述学习目标用户画像数据清洗用户画像数据可视化1项目概述在步入大数据时代后,为了更加精准地挖掘市场需求,企业的关注点逐步聚焦在如何利用大数据技术实现精细化运营和精准营销,这就需要建立本企业的用户画像。项目概述本项目结合Plotly绘图基础,重点掌握建立企业用户画像的一般流程,掌握数据清洗的几种常用方法,掌握用户画像数据的分析方法,灵活利用Plotly可视化工具对分析结果进行展示。本项目主要掌握以下两个方面的技术:数据清洗的常用方法1Plotly数据可视化方法2项目概述2学习目标

学习目标通过本项目的学习,能够熟练掌握用户画像的相关思维方法,结合项目案例数据集特点,能够熟练应用Pandas工具包对数据集进行清洗操作,能够熟练利用Plotly可视化工具实现对分析结果的可视化。通过项目案例的实战操作,进一步拓宽用户画像的思维视野,提升使用Plotly可视化工具的可视化的能力,为做一个合格的大数据专业技术人才奠定坚实的基础。3用户画像数据清洗用户画像是根据用户社会属性、生活习惯和消费行为等信息抽象出的用户分析模型。构建用户画像的核心工作即是给用户贴“标签”,用数据来描述人的行为和特征。用户画像维度可以分为自然属性、社会属性、消费属性等,其中自然属性主要包括年龄、性别、属地、职业等;社会属性主要包括抖音(微博)粉丝数、关注数等,消费属性主要包括消费偏好、下单频率、消费金额等。任务描述本项目任务主要是对使用某品牌笔记本电脑的用户的自然属性、社会属性和消费属性的数据进行数据清洗和预处理,利用Pandas数据清洗工具包完成数据集的清洗。包括但不限于以下数据清洗方法:数据集加载、数据去重、缺失值判断、对缺失值处理、数字转换等,为后续数据统计分析和分析结果的可视化奠定基础。通过本任务的学习,掌握Pandas包中数据清洗和预处理的常用函数,如数据去重函数、缺失值处理函数等,并灵活运用Pandas工具包实现对数据的清洗操作。任务描述知识与技能——数据清洗应用方法很多数据集存在数据重复、数据缺失、数据格式不统一(畸形数据),或错误数据的情况,这就是所谓的“脏数据”,这种数据不仅影响数据的统计分析、也影响数据的可视化展示,还会给严重影响数据模型的训练。对“脏数据”的科学化、合理化的清洗也是大数据分析或者人工智能领域的重要技术环节。Pandas是Python中非常流行的数据分析库,使用它可以进行数据科学计算和数据处理和分析,并且可以联合其他数据科学计算工具一块儿使用,比如,SciPy,NumPy和Matplotlib等。但在实际业务中,Pandas工具包更多的是应用在数据清洗上,本任务主要针对Pandas在数据清洗上的应用做简单介绍。知识与技能——数据清洗应用方法1.DataFramehead()方法返回DataFrame或Series的前n行,其中n是用户输入值(默认为5行)。head()函数用于获取前n行,这对于快速测试对象中的数据类型是否正确非常有用。对于n的负值,head()函数返回除最后n行之外的所有行,等效于df[:-n]语法格式:Dataframe.head(n=5);参数说明:n为整数值,要返回的行数,python中的head()函数只是选择数据,而不对数据内容做任何改变。知识与技能——数据清洗应用方法2.info()函数用于获取DataFrame

的简要摘要。在对数据进行探索性分析时,为了快速浏览数据集,我们使用()函数。语法格式:DataF(verbose=None,buf=None,max_cols=None,memory_usage=None,null_counts=None)参数说明:Verbose:是否打印完整的摘要;Buf:可写缓冲区;max_cols:确定是打印完整摘要还是简短摘要;memory_usage:指定是否应显示DataFrame元素(包括索引)的总内存使用情况;null_counts:是否显示非空计数。如果为None,则仅显示框架是否小于max_info_rows和max_info_columns。如果为True,则始终显示计数。如果为False,则从不显示计数。知识与技能——数据清洗应用方法3.drop_duplicates()函数根据指定的字段对数据集进行去重处理。语法格式:DataFrame.drop_duplicates(subset=None,keep=‘first’,inplace=False)参数说明:Subset:根据指定的列名进行去重,默认整个数据集;Keep:可选{‘first’,‘last’,False},默认first,即默认保留第一次出现的重复值,并删去其他重复的数据,False是指删去所有重复数据;Inplace:是否对数据集本身进行修改,默认False。知识与技能——数据清洗应用方法4.dropna()函数用来删除含有空值的行。函数格式:dropna(axis=0,how=‘any’,thresh=None,subset=None,inplace=False)参数说明:axis:0或’index’,表示按行删除;1或’columns’,表示按列删除;how:‘any’,表示该行/列只要有一个以上的空值,就删除该行/列;‘all’,表示该行/列全部都为空值,就删除该行/列;thresh:int型,默认为None。如果该行/列中,非空元素数量小于这个值,就删除该行/列;subset:子集。列表,按columns所在的列(或index所在的行)删除;inplace:是否原地替换调原来的dataframe。布尔值,默认为False。本数据集共包含样本21480条,样本共有20列,其中user_id为用户ID,每列均有字段说明,如表所示。序号字段名称字段说明1user_id用户ID2product_name产品名称和规格3product_price产品价格4age年龄5sex性别6membership_level会员等级7marriage婚姻状况8city城市9occupation职业10edu_level教育程度11platform_value平台价值12loyalty忠诚度13brand_prefer品牌偏好14prefer_third_level三级品类下单偏好15bro_prefer_third_level三级品类浏览偏好16purchasingpower购买力17promotion_sensitivity促销敏感度18comment_sensitivity评论敏感度19activity活跃度20city_level城市级别知识与技能——数据集介绍第一步:导入相关包第二步:读取数据第三步:查看数据的摘要信息任务实施——查看数据摘要importnumpyasnpimportpandasaspddf=pd.read_excel('data.xlsx',index_col=0)()任务实施——查看数据摘要根据以上结果能够看出:数据样本总共21480条,product_name和product_price字段无缺失值,其它字段均有数据缺失。我们打开源数据也能看到数据的缺失情况,如下图所示。任务实施——空值处理因样本有的特征缺失过多,并且本教材内容重点关注的是数据的可视化,所以我们这里直接删除含有缺失特征的样本,不再涉及缺失值填充的相关知识,对缺失数据填充的相关知识大家可以参考其他资料进行学习。#删除缺失数据df=df.dropna()#显示数据基本信息()删除缺失数值数据后,得到上图所示的结果任务实施——处理重复值这里我们使用drop_duplicates()函数对数据集进行去重处理。df.drop_duplicates()#查看数据的摘要信息()去除重复值后,样本个数未3640,去除了三条重复值任务实施——处理重复值数据倒数第二列activity其值只有两种类别:“一周内非常活跃”与“一周内活跃”,此列中“一周内非常活跃”更能表达用户的购买倾向与购买意愿,为了便于后续的统计分析与可视化呈现,我们这里约定一个转变规则,就是将“一周内非常活跃”转变为数字“1”,一周内活跃”转变为数字“0”。#activity类别数字化df["activity"].replace("一周内非常活跃",1,inplace=True)df["activity"].replace("一周内活跃",0,inplace=True)#输出activity替换结果和统计值replace_counts=df['activity'].value_counts()通过对Pandas工具包的学习,掌握了常用的数据清洗函数的使用,如数据的去重、数据的缺失值处理等方法,为后续的数据分析与可视化任务奠定了基础。数据清洗作为数据可视化的前端技术,在企业中有着重要的应用,因本任务所涉及的数据处理方法有限,有兴趣的小伙伴多查阅相关资料来进一步提升数据清洗的相关知识和技能。任务总结4用户画像数据可视化任务描述本项目任务针对数据集的特征,区分出用户的自然属性、社会属性以及消费属性,探索用户特征与三级品类浏览偏好、三级品类下单偏好、以及活跃度之间的关系。从用户年龄分布、会员等级、性别、教育程度等属性探索用户的偏好,并对分析结果可视化,为企业挖掘市场需求,实现精准营销提供技术支持。本任务首先需要将用户数据特征中的年龄、性别、职业、教育程度划分为自然属性,把城市、城市级别、忠诚度、购买力、促销敏感度、评论敏感度划分为社会属性,三级品类浏览偏好、三级品类下单偏好、活跃度、品牌偏好划分为消费属性。然后探索自然属性对消费属性的影响,探索社会属性对消费属性的影响,因篇幅关系,我们这里选取部分的自然属性和社会属性做探索,其他未涉及到的属性,有兴趣的小伙伴可以自行研究。通过本任务的学习,掌握用户画像的一般方法和步骤,灵活结合数据分析思想和Plotly数据可视化工具实现对分析结果的可视化呈现,巩固理论知识、提升大数据分析与可视化技能水平,为做一个合格的大数据领域的人才打下基础。用户画像是指通过收集用户的自然属性、社会属性、消费习惯、兴趣偏好等各个维度的数据,进一步统计并挖掘潜在的价值信息,进而对用户的信息全貌进行刻画的过程。用户画像的核心是将用户的具体信息抽象为标签,利用这些标签将用户形象具体化,每一个标签都描述了一个维度,各个维度相互联系,共同构成对用户的一个整体描述。知识与技能——用户画像介绍在上面的描述中,标签是个抽象的词汇,标签有不同的分类,常见的有统计类标签、规则类标签等。下面我们对统计类标签和规则类标签做简单介绍。知识与技能——用户画像介绍0102如姓名、性别、年龄、地市、活跃时长等。这类标签一般描述用户的基本属性,也称为自然属性。统计类标签像金牌会员、银牌会员和铜牌会员等,这类标签一般时按照某种约定的规则制定,如“每周消费大于1000元”称为金牌会员。规则类标签知识与技能——构建用户画像步骤本任务项目案例已经准备好了数据集,下一步就是探索用户属性对用户行为的关系,这里,我们分为以下二个步骤实现用户画像。序号字段名称字段说明1user_id用户ID2age年龄3sex性别4city城市5occupation职业6edu_level教育程度7city_level城市级别8marriage婚姻状况9product_name产品名称和规格10product_price产品价格1.确定用户的属性分类我们把用户数据集中的属性分为自然属性、社会属性和消费属性,分别对应下面的表6-2、表6-3和表6-4。表6-2知识与技能——构建用户画像步骤序号字段名称字段说明1membership_level会员等级2platform_value平台价值3loyalty忠诚度4purchasingpower购买力5promotion_sensitivity促销敏感度6comment_sensitivity评论敏感度序号字段名称字段说明1prefer_third_level三级品类下单偏好2bro_prefer_third_level三级品类浏览偏好3activity活跃度4brand_prefer品牌偏好表6-3表6-4知识与技能——构建用户画像步骤2.

数据分析与可视化本项目案例,我们探索部分属性与消费属性的关系,主要从以下几个方面进行分析与可视化呈现:01用户数据的年龄分布02不同会员等级一周内非常活跃的用户分布03不同性别不同会员等级一周内非常活跃的用户数04不同购买力下,一周内非常活跃用户分布占比05不同忠诚度下,一周内非常活跃用户占比06不同年龄段一周内非常活跃的用户占比07不同会员等级对三级品类下单偏好分布任务实施——用户年龄分布针对所有用户,观察用户的年龄分布情况,这里我们选择通过绘制柱状图来展示,代码如下:importnumpyasnpimportpandasaspd%matplotlibinlineimportplotlyimportplotly.graph_objsasgo#fromplotly.offlineimportinit_notebook_mode,iplot#init_notebook_mode(connected=True)#importplotly.ioaspio#当浏览器不支持渲染当前图时,可以用下列代码选择支持浏览器版本importplotly.ioaspiopio.renderers.default='browser'df=pd.read_excel('data.xlsx',index_col=0)df=df.dropna()df=df.drop_duplicates()df["activity"].replace("一周内非常活跃",1,inplace=True)df["activity"].replace("一周内活跃",0,inplace=True)trace=[go.Histogram(x=df.age)]第一步:导包加载数据数据预处理引入直方图函数任务实施——用户年龄分布第二步:设置布局并显示图形layout=go.Layout(font={'size':22})fig=go.Figure(data=trace,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.4,

xanchor="center",

x=0.5,

title_text=''))fig.update_xaxes(

side='bottom',

title={'text':''})fig.update_yaxes(

side='left',

title={'text':''})fig.update_layout(

title={

'text':"用户年龄分布",

'y':0.9,

'x':0.5

})#iplot(fig)fig.show()输出效果图如下所示:任务实施——不同会员等级的用户分布查看不同会员等级下一周内非常活跃用户分布,我们使用图柱状来进行可视化展示,示例代码如下:importnumpyasnpimportpandasaspd#%matplotlibinlineimportplotlyimportplotly.graph_objsasgoimportplotly.ioaspiopio.renderers.default='browser'df=pd.read_excel('data.xlsx',index_col=0)df=df.dropna()df=df.drop_duplicates()df["activity"].replace("一周内非常活跃",1,inplace=True)df["activity"].replace("一周内活跃",0,inplace=True)data

=df.groupby(by='membership_level')['activity'].sum()x=data.indexy=data.values第一步:导包数据预处理任务实施——不同会员等级的用户分布trace=[go.Bar(x=list(x),y=y)]layout=go.Layout(font={'size':22})fig=go.Figure(data=trace,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.4,

xanchor="center",

x=0.5,

title_text=''))fig.update_layout(

title={

'text':"不同会员等级下一周内非常活跃用户分布图",

'y':0.9,

'x':0.5})fig.show()第二步:设置布局并显示图形输出效果图如下所示:任务实施——不同性别和不同会员等级的用户分布我们使用并列柱状图来展示不同性别和不同会员等级的用户分布,示例代码如下:importnumpyasnpimportpandasaspd#%matplotlibinlineimportplotlyimportplotly.graph_objsasgoimportplotly.ioaspiopio.renderers.default='browser'df=pd.read_excel('data.xlsx',index_col=0)df=df.dropna()df=df.drop_duplicates()df["activity"].replace("一周内非常活跃",1,inplace=True)df["activity"].replace("一周内活跃",0,inplace=True)data_female

=df[df["sex"]=="女"].groupby(by='membership_level')['activity'].sum()data_male

=df[df["sex"]=="男"].groupby(by='membership_level')['activity'].sum()第一步:导包数据预处理统计计算任务实施——不同性别和不同会员等级的用户分布第二步:设置布局并显示图形trace0=go.Bar(

x=list(data_female.index),

y=data_female.values,

name='男')trace1=go.Bar(

x=list(data_male.index),

y=data_male.values,

name='女')trace=[trace0,trace1]layout=go.Layout(font={'size':22})fig=go.Figure(data=trace,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.4,

xanchor="center",

x=0.5,

title_text=''))fig.update_layout(

title={

'text':"不同性别不同会员等级下一周内非常活跃用户分布图",

'y':0.9,

'x':0.5})fig.show()任务实施——不同性别和不同会员等级的用户分布输出效果图如下所示:任务实施——不同购买力活跃的用户分布我们使用饼图来展示不同购买力一周之内非常活跃的用户分布情况,示例代码如下importnumpyasnpimportpandasaspd#%matplotlibinlineimportplotlyimportplotly.graph_objsasgoimportplotly.ioaspiopio.renderers.default='browser'df=pd.read_excel('data.xlsx',index_col=0)df=df.dropna()df=df.drop_duplicates()df["activity"].replace("一周内非常活跃",1,inplace=True)df["activity"].replace("一周内活跃",0,inplace=True)

data_pie=df.groupby(by='purchasingpower')['activity'].sum()pie=go.Pie(labels=list(data_pie.index),

values=data_pie.values,textfont=dict(size=22))

第一步:导包处理数据任务实施——不同购买力活跃的用户分布第二步:设置布局并显示图形trace=[pie]layout=go.Layout(

font={'size':22})fig=go.Figure(data=trace,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.1,

xanchor="center",

x=0.5,

title_text=''))fig.update_layout(

title={

'text':"不同购买力一周内非常活跃的用户分布",

'y':0.9,

'x':0.5})#iplot(fig)fig.show()任务实施——不同购买力活跃的用户分布输出效果如下图所示:任务实施——不同年龄段活跃的用户分布第一步:导包处理数据我们使用饼图来展示不同年龄段一周之内非常活跃的用户分布情况,示例代码如下importnumpyasnpimportpandasaspd#importmatplotlib.pyplotasplt#%matplotlibinlineimportplotlyimportplotly.graph_objsasgoimportplotly.ioaspiopio.renderers.default='browser'df=pd.read_excel('data.xlsx',index_col=0)df=df.dropna()df=df.drop_duplicates()df["activity"].replace("一周内非常活跃",1,inplace=True)df["activity"].replace("一周内活跃",0,inplace=True)data_pie=df.groupby(by='age')['activity'].sum()pie=go.Pie(labels=list(data_pie.index),

values=data_pie.values,textfont=dict(size=22),pull=[0.3,0.1,0,0])

任务实施——不同年龄段活跃的用户分布第二步:设置布局并显示图形trace=[pie]layout=go.Layout(font={'size':22})fig=go.Figure(data=trace,layout=layout)fig.update_layout(font_size=22,legend=dict(

orientation="h",

yanchor="bottom",

y=-0.1,

xanchor="center",

x=0.5,

title_text=''))fig.update_layout(

title={

'text':"不同年龄段一周内非常活跃的用户分布",

'y':0.9,

'x':0.5})#iplot(fig)fig.show()任务实施——不同年龄段活跃的用户分布输出效果图如下所示:任务实施——不同会员等级三级品类下单偏好我们使用箱线图来展示不同不同会员等级对三级品类下单偏好分布,示例代码如下importnumpyasnpimportpandasaspd#importmatplotlib.pyplotasplt#%matplotlibinlineimportplotlyimportplotly.graph_objsasgoimportplotly.ioaspiopio.renderers.default='browser'df=pd.read_excel('data.xlsx',index_col=0)df=df.dropna()df=df.drop_duplicates()df["activity"].replace("一周内非常活跃",1,inplace=True)df["activity"].replace("一周内活跃",0,inplace=True)第一步:导包数据预处理任务实施——不同会员等级三级品类下单偏好第二步:创建trace#builddatabox1=go.Box(

y=df[df['membership_level']=='金牌会员']['prefer_third_level'].dropna(),

name='金牌会员')box2=go.Box(

y=df[df['membership_level']=='钻石会员']['prefer_third_level'].dropna(),

name='钻石会员')box3=go.Box(

y=df[df['membership_level']=='铜牌会员']['prefer_third_level'].dropna(),

name='铜牌会员')box4=go.Box(

y=df

温馨提示

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

最新文档

评论

0/150

提交评论