手把手教你用Pyecharts库对淘宝数据进行可视化展示

大数据 数据可视化
本文基于一份杂乱的淘宝原始数据,利用正则表达式re库和Pandas数据处理对数据进行清洗,然后通过stop_word停用词对得到的文本进行分词处理,得到较为”干净“的数据。

[[419561]]

大家好,我是Python进阶者。

一、前言

大家好,我是Python进阶者。上一篇文章给大家讲到了淘宝数据的预处理和词频处理,没有来得及看的小伙伴,记得去学习了下了,详情戳这里:手把手教你用Pandas库对淘宝原始数据进行数据处理和分词处理。这篇文章紧接着上一篇文章处理得到的数据进行可视化处理,一起来看看吧!

二、可视化

可视化部分,我们采用Pyecharts库来进行完成,这个库作图十分的炫酷,而且可以交互,十分带感,强烈推荐。关于这部分,小编以生成配料图表和生成保质期可视化图表为例来进行展开。

1、生成配料饼图

针对配料数据,我们使用一个饼图去进行展示,这样显得更加高大上一些,直接上代码。

  1. # 生成配料图表 
  2. def get_ingredients_html(df): 
  3.     # 词表分词 
  4.     names = df.配料表.apply(jieba.lcut).explode() 
  5.     df1 = names[names.apply(len)>1].value_counts() 
  6.     # 写入分词后的结果 
  7.     with pd.ExcelWriter("淘宝商品配料数据.xlsx"as writer: 
  8.         df1.to_excel(writer, sheet_name="配料"
  9.     fpath = r'C:\Users\pdcfi\Desktop\淘宝数据分析\淘宝商品配料数据.xlsx' 
  10.     # 读取数据 提取列 
  11.     df1 = pd.read_excel(fpath, header=None, skiprows=1, sheet_name='配料', names=['sx''sl']) 
  12.     a = df1['sx'].to_list()[:10] 
  13.     b = df1['sl'].to_list()[:10] 
  14.  
  15.     from pyecharts.charts import Pie 
  16.     from pyecharts import options as opts 
  17.     # 绘制可视化图表 
  18.     pie = ( 
  19.         Pie().add('', [list(z) for z in zip(a, b)], 
  20.                  radius=["20%""60%"],  # 半径长度 
  21.                  rosetype="radius"  # 扇区圆心角展现数据的百分比,半径展现数据的大小 
  22.                  ) 
  23.             .set_global_opts(title_opts=opts.TitleOpts(title="淘宝商品数据配料统计", subtitle="8.19")) 
  24.             .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))  # 数字项名称和百分比 
  25.  
  26.     ) 
  27.     pie.render('淘宝商品数据配料统计.html'

在Pycharm里边运行代码之后,我们将会得到一个淘宝商品数据配料统计.html文件,双击打开该HTML文件,在浏览器里边可以看到效果图,如下图所示。

是不是感觉一下子就高大上了呢?而且动动鼠标,你还可以进行交互,是动态图来着,十分好玩。

2、生成保质期可视化饼图

针对保质期数据,我们也先使用一个饼图去进行展示,直接上代码,其实你会发现和上面那个配料图表大同小异。

  1. """生成保质期可视化图表""" 
  2. def get_date_html(df): 
  3.     # 词表分词 
  4.     names = df.保质期.apply(jieba.lcut).explode() 
  5.     df1 = names[names.apply(len) > 1].value_counts() 
  6.     # 写入分词后的结果 
  7.     with pd.ExcelWriter("淘宝商品保质期数据.xlsx"as writer: 
  8.         df1.to_excel(writer, sheet_name="保质期"
  9.     fpath = r'C:\Users\pdcfi\Desktop\淘宝数据分析\淘宝商品保质期数据.xlsx' 
  10.     # 读取数据 提取列 
  11.     df1 = pd.read_excel(fpath, header=None, skiprows=1, names=['bzq''rq']) 
  12.     a = df1['bzq'].to_list()[:10] 
  13.     b = df1['rq'].to_list()[:10] 
  14.     from pyecharts.charts import Pie 
  15.     from pyecharts import options as opts 
  16.     # 绘制可视化图表 
  17.     pie = ( 
  18.         Pie() 
  19.             .add('', [list(z) for z in zip(a, b)], 
  20.                  radius=["20%""60%"],  # 半径长度 
  21.                  rosetype="radius"  # 扇区圆心角展现数据的百分比,半径展现数据的大小 
  22.                  ) 
  23.             .set_global_opts(title_opts=opts.TitleOpts(title="淘宝商品保质期可视化图表", subtitle="8.19")) 
  24.             .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))  # 数字项名称和百分比 
  25.  
  26.     ) 
  27.     pie.render('淘宝商品保质期统计.html'

在Pycharm里边运行代码之后,我们将会得到一个淘宝商品保质期统计.html文件,双击打开该HTML文件,在浏览器里边可以看到效果图,如下图所示。

相信有小伙伴肯定感觉哪里不对,一个保质期的可视化,做成这种饼图似乎太丑了吧?嗯,的确是丑爆了,所以程序大佬把保质期这个图转为了柱状图,这样看上去就高大上很多了。

3、生成保质期可视化柱状图

其实数据都是一样的,只不过呈现方式不同,直接上代码。

  1. """生成保质期可视化图表""" 
  2. def get_date_html(df): 
  3.     # 词表分词 
  4.     names = df.保质期.apply(jieba.lcut).explode() 
  5.     df1 = names[names.apply(len) > 1].value_counts() 
  6.     # 写入分词后的结果 
  7.     with pd.ExcelWriter("淘宝数据.xlsx"as writer: 
  8.         df1.to_excel(writer, sheet_name="保质期"
  9.     fpath = r'C:\Users\dell\Desktop\崔佬\数据分析综合实战\淘宝数据.xlsx' 
  10.     # 读取数据 提取列 
  11.     df1 = pd.read_excel(fpath, header=None, skiprows=1, names=['bzq''rq']) 
  12.     a = df1['bzq'].to_list()[:50] 
  13.     b = df1['rq'].to_list()[:50] 
  14.  
  15.     bar = ( 
  16.         Bar(init_opts=opts.InitOpts(theme=ThemeType.CHALK)) 
  17.             .add_xaxis(a) 
  18.             .add_yaxis("保质期(天数)",b) 
  19.             .set_global_opts( 
  20.                 title_opts=opts.TitleOpts(title="Bar-DataZoom(slider-保质期)"), 
  21.             datazoom_opts=opts.DataZoomOpts(), 
  22.         ) 
  23.  
  24.     ) 
  25.     return bar 

这么处理之后,我们就会得到一个柱状图了,如下图所示。

这把看上去,是不是觉得清晰很多了呢?

不过呢,程序大佬还觉得不够,想把这两张图放到一起,这应该怎么办呢?

4、合并饼图和柱状图到一个HTML文件

其实这个也并不难,只需要将生成两个图的函数放到一个布局类里边就可以完成了,直接上代码。

  1. def page_draggable_layout(df): 
  2.     page = Page(layout=Page.DraggablePageLayout) 
  3.     page.add
  4.         get_ingredients_html(df), 
  5.         get_date_html(df) 
  6.     ) 
  7.     page.render("page_draggable_layout.html"

如果你想在一个HTML文件里边加入更多的图,只需要继续在add()函数里面进行添加生成可视化图的函数即可。话不多说,直接上效果图。

从上图我们可以看到配料饼图和保质期柱状图都同时在同一个HTML文件出现了,而且也是可以进行点击交互的噢!我们还可以收到拖拽,让图表移动,如下图所示,分为左右图进行展示。

你以为到这里就结束了?其实并没有,程序大佬还想玩点更加高大上的,他想把table表一并显示出来,这样显得更加饱满一些。那么table表又如何来进行显示呢?

5、table表加持

其实在这里,程序大佬卡了一下,他在群里问,基于他目前的数据,像下图这样的df数据如何进行展示出来。

而且,他自己在不断的尝试中,始终报错,一时间丈二和尚摸不着头脑,不知如何是好。

不过此时小小明大佬,又递来了橄榄枝,人狠话不多,直接丢了两行代码,让人拍手叫绝。

然后程序大佬,拿到Pycharm中一跑,啪,成了,真是拍案叫绝,小小明yyds!那么呈现的效果图是下面这样的。

这样看上去还稍微不太好看,拖拽下,调整下格式看看,如下图所示。

但是这样一看,确实高大上了一些,不过还是达不到程序大佬心里的预期,于是乎他继续折腾。

6、调整图像背景色

现在呢,程序大佬又想要加点背景色,这样显得高大上一些,代码如下。

  1. # 绘制可视化图表 
  2. pie = ( 
  3.     Pie(init_opts=opts.InitOpts(theme=ThemeType.CHALK)) 
  4.         .add('', [list(z) for z in zip(a, b)], 
  5.              radius=["20%""60%"],  # 半径长度 
  6.              rosetype="radius"  # 扇区圆心角展现数据的百分比,半径展现数据的大小 
  7.              ) 
  8.         .set_global_opts(title_opts=opts.TitleOpts(title="配料统计", subtitle="8.19")) 
  9.         .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))  # 数字项名称和百分比 
  10.  
  11. return pie 

其实核心的那句代码下面这个,引入了一个主题:

  1. init_opts=opts.InitOpts(theme=ThemeType.CHALK) 

得到的效果图如上图所示了。

7、添加漏斗图

这里是以数据里边的”食品添加“列来做实例的,代码如下所示。

  1. def get_sptj_data(df): 
  2.     # 词表分词 
  3.     names = df.食品添加剂.apply(jieba.lcut).explode() 
  4.     df1 = names[names.apply(len) > 1].value_counts() 
  5.     # 写入分词后的结果 
  6.     with pd.ExcelWriter("淘宝数据.xlsx"as writer: 
  7.         df1.to_excel(writer, sheet_name="食品添加剂"
  8.     fpath = r'C:\Users\dell\Desktop\崔佬\数据分析综合实战\淘宝数据.xlsx' 
  9.     # 读取数据 提取列 
  10.     df1 = pd.read_excel(fpath, header=None, skiprows=1, names=['sptj''sj']) 
  11.     a = df1['sptj'].to_list()[:10] 
  12.     b = df1['sj'].to_list()[:10] 
  13.     c = ( 
  14.         Funnel(init_opts=opts.InitOpts(theme=ThemeType.CHALK)) 
  15.             .add
  16.             "商品"
  17.             [list(z) for z in zip(a, b)], 
  18.             label_opts=opts.LabelOpts(position="inside"), 
  19.         ) 
  20.             .set_global_opts(title_opts=opts.TitleOpts(title="Funnel-Label(food_add)")) 
  21.     ) 
  22.     return c 

得到的效果图如下图所示。

写到这里,基本上快接近尾声了,不过程序大佬为了感谢小小明大佬,后来又补充了一个极化装逼图来赞扬小小明。

8、极化图

直接上代码,程序大佬取的这个zb函数,就是装13的意思,取的太没有水平了。

  1. def zb_data(): 
  2.     data = [(i, random.randint(1, 100)) for i in range(10)] 
  3.     c = ( 
  4.         Polar() 
  5.         .add
  6.             ""
  7.             data, 
  8.             type_="effectScatter"
  9.             effect_opts=opts.EffectOpts(scale=10, period=5), 
  10.             label_opts=opts.LabelOpts(is_show=False), 
  11.         ) 
  12.         .set_global_opts(title_opts=opts.TitleOpts(title="Polar-没啥用,用来装逼,小小明yyds")) 
  13.  
  14.     ) 
  15.     return c 

看上去确实很高大上呢。

三、总结

大家好,我是Python进阶者。本文基于一份杂乱的淘宝原始数据,利用正则表达式re库和Pandas数据处理对数据进行清洗,然后通过stop_word停用词对得到的文本进行分词处理,得到较为”干净“的数据,之后利用传统方法和Pandas优化处理两种方式对数据进行词频统计,针对得到的数据,利用Pyecharts库,进行多重可视化处理,包括但不限于饼图、柱状图、Table表、漏斗图、极化图等,通过一系列的改进和优化,一步步达到想要的效果,可以说是干货满满,实操性强,亲测有效。

【编辑推荐】

责任编辑:姜华 来源: Python爬虫与数据挖掘
相关推荐

2020-12-17 09:40:01

Matplotlib数据可视化命令

2021-07-14 09:00:36

Python数据Python基础

2022-07-24 21:43:48

数据可视化大数据

2021-08-09 13:31:25

PythonExcel代码

2022-10-19 14:30:59

2021-05-10 06:48:11

Python腾讯招聘

2020-03-08 22:06:16

Python数据IP

2023-02-01 10:16:50

Python可视化

2021-02-04 09:00:57

SQLDjango原生

2011-03-28 16:14:38

jQuery

2021-02-06 14:55:05

大数据pandas数据分析

2022-08-04 10:39:23

Jenkins集成CD

2009-04-22 09:17:19

LINQSQL基础

2020-11-08 14:13:31

Python帕累托分析开发

2021-01-21 09:10:29

ECharts柱状图大数据

2021-01-08 10:32:24

Charts折线图数据可视化

2018-06-16 23:34:09

可视化地图R

2012-01-11 13:40:35

移动应用云服务

2021-12-11 20:20:19

Python算法线性

2021-08-02 23:15:20

Pandas数据采集
点赞
收藏

51CTO技术栈公众号