手把手教你用Pyecharts库对淘宝数据进行可视化展示
来源:Python爬虫与数据挖掘
作者:Python进阶者一、可视化
可视化部分,我们采用Pyecharts库来进行完成,这个库作图十分的炫酷,而且可以交互,十分带感,强烈推荐。关于这部分,小编以生成配料图表和生成保质期可视化图表为例来进行展开。
1、生成配料饼图
针对配料数据,我们使用一个饼图去进行展示,这样显得更加高大上一些,直接上代码。生成配料图表defgetingredientshtml(df):词表分词namesdf。配料表。apply(jieba。lcut)。explode()df1names〔names。apply(len)1〕。valuecounts()写入分词后的结果withpd。ExcelWriter(淘宝商品配料数据。xlsx)aswriter:df1。toexcel(writer,sheetname配料)fpathrC:UserspdcfiDesktop淘宝数据分析淘宝商品配料数据。xlsx读取数据提取列df1pd。readexcel(fpath,headerNone,skiprows1,sheetname配料,names〔sx,sl〕)adf1〔sx〕。tolist()〔:10〕bdf1〔sl〕。tolist()〔:10〕frompyecharts。chartsimportPiefrompyechartsimportoptionsasopts绘制可视化图表pie(Pie()。add(,〔list(z)forzinzip(a,b)〕,radius〔20,60〕,半径长度rosetyperadius扇区圆心角展现数据的百分比,半径展现数据的大小)。setglobalopts(titleoptsopts。TitleOpts(title淘宝商品数据配料统计,subtitle8。19))。setseriesopts(labeloptsopts。LabelOpts(formatter{b}:{d}))数字项名称和百分比)pie。render(淘宝商品数据配料统计。html)
在Pycharm里边运行代码之后,我们将会得到一个淘宝商品数据配料统计。html文件,双击打开该HTML文件,在浏览器里边可以看到效果图,如下图所示。
是不是感觉一下子就高大上了呢?而且动动鼠标,你还可以进行交互,是动态图来着,十分好玩。
2、生成保质期可视化饼图
针对保质期数据,我们也先使用一个饼图去进行展示,直接上代码,其实你会发现和上面那个配料图表大同小异。生成保质期可视化图表defgetdatehtml(df):词表分词namesdf。保质期。apply(jieba。lcut)。explode()df1names〔names。apply(len)1〕。valuecounts()写入分词后的结果withpd。ExcelWriter(淘宝商品保质期数据。xlsx)aswriter:df1。toexcel(writer,sheetname保质期)fpathrC:UserspdcfiDesktop淘宝数据分析淘宝商品保质期数据。xlsx读取数据提取列df1pd。readexcel(fpath,headerNone,skiprows1,names〔bzq,rq〕)adf1〔bzq〕。tolist()〔:10〕bdf1〔rq〕。tolist()〔:10〕frompyecharts。chartsimportPiefrompyechartsimportoptionsasopts绘制可视化图表pie(Pie()。add(,〔list(z)forzinzip(a,b)〕,radius〔20,60〕,半径长度rosetyperadius扇区圆心角展现数据的百分比,半径展现数据的大小)。setglobalopts(titleoptsopts。TitleOpts(title淘宝商品保质期可视化图表,subtitle8。19))。setseriesopts(labeloptsopts。LabelOpts(formatter{b}:{d}))数字项名称和百分比)pie。render(淘宝商品保质期统计。html)
在Pycharm里边运行代码之后,我们将会得到一个淘宝商品保质期统计。html文件,双击打开该HTML文件,在浏览器里边可以看到效果图,如下图所示。
相信有小伙伴肯定感觉哪里不对,一个保质期的可视化,做成这种饼图似乎太丑了吧?嗯,的确是丑爆了,所以程序大佬把保质期这个图转为了柱状图,这样看上去就高大上很多了。
3、生成保质期可视化柱状图
其实数据都是一样的,只不过呈现方式不同,直接上代码。生成保质期可视化图表defgetdatehtml(df):词表分词namesdf。保质期。apply(jieba。lcut)。explode()df1names〔names。apply(len)1〕。valuecounts()写入分词后的结果withpd。ExcelWriter(淘宝数据。xlsx)aswriter:df1。toexcel(writer,sheetname保质期)fpathrC:UsersdellDesktop崔佬数据分析综合实战淘宝数据。xlsx读取数据提取列df1pd。readexcel(fpath,headerNone,skiprows1,names〔bzq,rq〕)adf1〔bzq〕。tolist()〔:50〕bdf1〔rq〕。tolist()〔:50〕bar(Bar(initoptsopts。InitOpts(themeThemeType。CHALK))。addxaxis(a)。addyaxis(保质期(天数),b)。setglobalopts(titleoptsopts。TitleOpts(titleBarDataZoom(slider保质期)),datazoomoptsopts。DataZoomOpts(),))returnbar
这么处理之后,我们就会得到一个柱状图了,如下图所示。
这把看上去,是不是觉得清晰很多了呢?
不过呢,程序大佬还觉得不够,想把这两张图放到一起,这应该怎么办呢?
4、合并饼图和柱状图到一个HTML文件
其实这个也并不难,只需要将生成两个图的函数放到一个布局类里边就可以完成了,直接上代码。defpagedraggablelayout(df):pagePage(layoutPage。DraggablePageLayout)page。add(getingredientshtml(df),getdatehtml(df))page。render(pagedraggablelayout。html)
如果你想在一个HTML文件里边加入更多的图,只需要继续在add()函数里面进行添加生成可视化图的函数即可。话不多说,直接上效果图。
从上图我们可以看到配料饼图和保质期柱状图都同时在同一个HTML文件出现了,而且也是可以进行点击交互的噢!我们还可以收到拖拽,让图表移动,如下图所示,分为左右图进行展示。
你以为到这里就结束了?其实并没有,程序大佬还想玩点更加高大上的,他想把table表一并显示出来,这样显得更加饱满一些。那么table表又如何来进行显示呢?
5、table表加持
其实在这里,程序大佬卡了一下,他在群里问,基于他目前的数据,像下图这样的df数据如何进行展示出来。
而且,他自己在不断的尝试中,始终报错,一时间丈二和尚摸不着头脑,不知如何是好。
不过此时小小明大佬,又递来了橄榄枝,人狠话不多,直接丢了两行代码,让人拍手叫绝。
然后程序大佬,拿到Pycharm中一跑,啪,成了,真是拍案叫绝,小小明yyds!那么呈现的效果图是下面这样的。
这样看上去还稍微不太好看,拖拽下,调整下格式看看,如下图所示。
但是这样一看,确实高大上了一些,不过还是达不到程序大佬心里的预期,于是乎他继续折腾。
6、调整图像背景色
现在呢,程序大佬又想要加点背景色,这样显得高大上一些,代码如下。绘制可视化图表pie(Pie(initoptsopts。InitOpts(themeThemeType。CHALK))。add(,〔list(z)forzinzip(a,b)〕,radius〔20,60〕,半径长度rosetyperadius扇区圆心角展现数据的百分比,半径展现数据的大小)。setglobalopts(titleoptsopts。TitleOpts(title配料统计,subtitle8。19))。setseriesopts(labeloptsopts。LabelOpts(formatter{b}:{d}))数字项名称和百分比)returnpie
其实核心的那句代码下面这个,引入了一个主题:initoptsopts。InitOpts(themeThemeType。CHALK)
得到的效果图如上图所示了。
7、添加漏斗图
这里是以数据里边的食品添加列来做实例的,代码如下所示。defgetsptjdata(df):词表分词namesdf。食品添加剂。apply(jieba。lcut)。explode()df1names〔names。apply(len)1〕。valuecounts()写入分词后的结果withpd。ExcelWriter(淘宝数据。xlsx)aswriter:df1。toexcel(writer,sheetname食品添加剂)fpathrC:UsersdellDesktop崔佬数据分析综合实战淘宝数据。xlsx读取数据提取列df1pd。readexcel(fpath,headerNone,skiprows1,names〔sptj,sj〕)adf1〔sptj〕。tolist()〔:10〕bdf1〔sj〕。tolist()〔:10〕c(Funnel(initoptsopts。InitOpts(themeThemeType。CHALK))。add(商品,〔list(z)forzinzip(a,b)〕,labeloptsopts。LabelOpts(positioninside),)。setglobalopts(titleoptsopts。TitleOpts(titleFunnelLabel(foodadd))))returnc
得到的效果图如下图所示。
写到这里,基本上快接近尾声了,不过程序大佬为了感谢小小明大佬,后来又补充了一个极化装X图来赞扬小小明。
8、极化图
直接上代码,程序大佬取的这个zb函数,就是装X的意思,取的太没有水平了。defzbdata():data〔(i,random。randint(1,100))foriinrange(10)〕c(Polar()。add(,data,typeeffectScatter,effectoptsopts。EffectOpts(scale10,period5),labeloptsopts。LabelOpts(isshowFalse),)。setglobalopts(titleoptsopts。TitleOpts(titlePolar没啥用,用来装逼,小小明yyds)))returnc
看上去确实很高大上呢。二、总结
大家好,我是Python进阶者。本文基于一份杂乱的淘宝原始数据,利用正则表达式re库和Pandas数据处理对数据进行清洗,然后通过stopword停用词对得到的文本进行分词处理,得到较为干净的数据,之后利用传统方法和Pandas优化处理两种方式对数据进行词频统计,针对得到的数据,利用Pyecharts库,进行多重可视化处理,包括但不限于饼图、柱状图、Table表、漏斗图、极化图等,通过一系列的改进和优化,一步步达到想要的效果,可以说是干货满满,实操性强,亲测有效。