数据可视化-基于Pyecharts制作电商销售数据可视化图表

数据可视化

基于Pyecharts制作电商销售数据可视化图表

一、实验名称

基于Pyecharts制作电商销售数据可视化图表

二、实验目的

通过该实验的实践,要求学生能够使用pyecharts熟练绘制可视化图表。

三、实验原理

Pyecharts库的原理是利用Python调用Echarts的JavaScript代码,将Python中的数据传递给Echarts,然后由Echarts来绘制图表,并输出为交互式的HTML网页。这样使得在Python中绘制交互式基础图形变得更加简单、方便,同时又能利用Echarts丰富的功能和交互性,展示出更加美观和具有吸引力的数据可视化效果。

四、实验步骤

一、本实验使用“商家A和商家B的各类商品的销售数据”。数据如下图所示

二、环境搭建

1、下载数据到本地

(1)切换到E:\数据可视化\实验\代码1目录

(2)下载data.zip文件

2、解压数据

3、打开jupyter

在打开的浏览器中,新建python3文件

以下代码均在jupyter中编写

三、代码实现

1、读取“商家A和商家B的各类商品的销售数据.xlsx”文件,使用pyecharts绘制柱形图,可以直观展示商家A和商家B的销售情况,并便于对比同一类商品不同商家的销售差距。代码如下:
#导入整个实验所需的包
import pandas as pd
import numpy as np
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.globals import ThemeType
from pyecharts.charts import Scatter
from pyecharts.charts import Line
from pyecharts.charts import Boxplot
from pyecharts.charts import Scatter3D
from pyecharts.charts import Pie
#读取“商家A和商家B的各类商品的销售数据.xlsx”文件数据
data=pd.read_excel('E:\数据可视化\实验\代码1\商家A和商家B的各类商品的销售数据.xlsx',
                   index_col='商家',engine="openpyxl")
#设置了图表的初始选项,包括图表的宽度、高度以及主题(这里设置为亮色主题)
init_opts=opts.InitOpts(width='1000px',height='450px',theme=ThemeType.LIGHT)
#绘制两个商家的柱形图
bar = (
    Bar(init_opts)
    .add_xaxis(data.columns.tolist())
    .add_yaxis('商家A', data.loc['商家A'].tolist())
    .add_yaxis('商家B', data.loc['商家B'].tolist())
    .set_global_opts(title_opts=opts.TitleOpts
(title='商家A和商家B销售情况柱形图')))
#渲染图表
bar.render_notebook() 

图表如下所示:

2、如果条目较多时,使用柱形图展示数据会显得拥挤,可以通过翻转X轴和Y轴来使用条形图展示数据,从而更好地展示数据信息。我们只需要在绘制图表时调用reversal_axis()函数即可。下面是修改后的代码:
init_opts=opts.InitOpts(width='800px', height='600px')
bar=(
    Bar(init_opts)
          .add_xaxis(data.columns.tolist())
          .add_yaxis('商家A', data.loc['商家A'].tolist())
          .add_yaxis('商家B', data.loc['商家B'].tolist())
        .reversal_axis()
         .set_series_opts(label_opts=opts.LabelOpts(position='right'))
         .set_global_opts(title_opts=opts.TitleOpts
                          (title='商家A和商家B销售情况条形图'), 
                          legend_opts=opts.LegendOpts(pos_right='20%'))
     )
bar.render_notebook()

图表如下:

3、也可以将柱形图堆叠起来显示,即堆叠柱形图。堆叠柱形图是另一种有效的方式来展示多个类别的数据,并且可以更好地比较各类别之间的总体大小以及各类别内部的分布情况。下面是修改后的代码,使用堆叠柱形图展示数据:
init_opts=opts.InitOpts(width='800px', height='400px')
bar=(
    Bar(init_opts)
          .add_xaxis(data.columns.tolist())
          .add_yaxis('商家A', data.loc['商家A'].tolist(), stack='stack1', 
                     label_opts=opts.LabelOpts(position='insideTop'))
          .add_yaxis('商家B', data.loc['商家B'].tolist(), stack='stack1', 
                     label_opts=opts.LabelOpts(position='insideTop'))
         .set_global_opts(title_opts=opts.TitleOpts(
         title='商家A和商家B销售情况堆叠柱形图'))
     )
bar.render_notebook()

图表如下:

4、通过设置系列配置项,可以在柱形图上显示最大值、最小值以及平均值等标注。如使用前图的数据绘制标注最大值、最小值、平均值的柱形图。下面是修改后的代码:
init_opts=opts.InitOpts(width='800px', height='400px')
bar=(
    Bar(init_opts)
        .add_xaxis(data.columns.tolist())
        .add_yaxis('商家A', data.loc['商家A'].tolist())
        .add_yaxis('商家B', data.loc['商家B'].tolist())
        .set_global_opts(title_opts=opts.TitleOpts(title='指定标记点的柱形图'))
        .set_series_opts(
            label_opts=opts.LabelOpts(is_show=False),
            markpoint_opts=opts.MarkPointOpts(
                data=[
                    opts.MarkPointItem(type_='max', name='最大值'),
                    opts.MarkPointItem(type_='min', name='最小值'),
                ]
            )
        )
    )
bar.render_notebook()

效果如下:

5、使用“商家A和商家B的各类商品的销售数据.xlsx”数据绘制商家A和商家B销售情况折线图,商家A的曲线设置了参数is_smooth=True,在显示时为光滑的折线,而商家B的曲线没有进行设置,在显示时为不光滑的折线。
line = (Line()
   .add_xaxis(data.columns.tolist())
   .add_yaxis('商家A', data.loc['商家A'].tolist(), is_smooth=True)  # 设置曲线光滑
   .add_yaxis('商家B', data.loc['商家B'].tolist())
  .set_global_opts(title_opts=opts.TitleOpts(title='商家A和商家B销售情况折线图'))
# 设置全局选项
    )
line.render_notebook()

效果如下:

6、 使用“商家A和商家B的各类商品的销售数据.xlsx”数据绘制商家A和商家B销售情况面积图。代码如下所示:
line=(Line()
   .add_xaxis(data.columns.tolist())
   .add_yaxis('商家A', data.loc['商家A'].tolist(), 
              areastyle_opts=opts.AreaStyleOpts(opacity=0.5, color='red'))
# 设置曲线光滑
   .add_yaxis('商家B', data.loc['商家B'].tolist(), 
              areastyle_opts=opts.AreaStyleOpts(opacity=0.6, color='blue'))
  .set_global_opts(title_opts=opts.TitleOpts(title='商家A和商家B销售情况面积图'))
# 设置全局选项
    )
line.render_notebook()

效果如下所示:

7、利用绘制折线图中的数据,绘制商家B销售数据的饼图。由饼图可知,商家B的各类商品销量中风衣的数量占比最多,占到为20.46%,而袜子只占了6.91%。代码如下所示:
pie=(Pie()
     .add('', [list(z) for z in zip(data.columns.tolist(),data.loc['商家B'].tolist())])
     .set_global_opts(title_opts=opts.TitleOpts(title='商家B销售情况饼图'))
     .set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{c} ({d}%)'))
)
pie.render_notebook()

效果如下:

8、绘制”商家B销售情况环形图“,环形图(Circular Sector Graph)与饼图类似,但又有区别。环形图中间有一个空洞,每个样本用一个环来表示,样本中的每一部分数据用环中的一段表示。可以通过add函数中增加radius参数设置绘制环形图。
pie=(Pie(init_opts=opts.InitOpts(width='810px', height='400px'))
     .add('', [list(z) for z in zip(data.columns.tolist(),
                                    data.loc['商家B'].tolist())], radius=[20,100])
     .set_global_opts(title_opts=opts.TitleOpts(title='商家B销售情况环形图'))
     .set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{c} ({d}%)'))
)
pie.render_notebook()

效果如下:

9、绘制”商家B销售情况玫瑰图“,虽然玫瑰图反映的比例关系与饼图、环形饼图是一致的,但通过扇区圆心角展现数据的百分比的直观显示,可以一目了然的看出各组成部分所占的比例关系。
pie=(Pie(init_opts=opts.InitOpts(width='810px', height='400px'))
     .add('', [list(z) for z in zip(data.columns.tolist(),
                                    data.loc['商家B'].tolist())], 
          rosetype='radius', radius=[20, 100])
     .set_global_opts(title_opts=opts.TitleOpts(title='商家B销售情况玫瑰图'))
     .set_series_opts(label_opts=opts.LabelOpts(formatter='{b}:{c} ({d}%)'))
)
pie.render_notebook()

效果如下:

五、实验总结

本实验通过使用Pyecharts库绘制交互式基础图形,包括柱状图、条形图、散点图、折线图和饼图,并对它们的绘制方法、特点以及配置方法进行讲解。

1、柱状图和条形图:

柱状图和条形图都用于显示分类数据的大小或数量之间的比较。柱状图的x轴通常表示不同的类别,而y轴表示数值,柱形的高度对应于数值的大小。条形图与柱状图类似,只是x轴和y轴的角色颠倒,横向展示。可以通过设置堆叠、簇状等方式,使图表更加直观地展示多组数据之间的对比。

2、散点图

散点图用于表示两个数值型变量之间的关系。每个散点代表一个数据点,其中x轴表示一个变量的值,y轴表示另一个变量的值。散点图可以用来发现两个变量之间的趋势、相关性或者异常值。

3、折线图

折线图用于展示随着时间或顺序变化的数据趋势。数据点通过直线段连接,形成一条折线。折线图适用于显示时间序列数据或有序数据的演变过程,可以很好地揭示数据的趋势和周期性。

4、饼图

饼图用于显示各类别在总体中的占比情况。饼图的圆心表示总体,每个扇形表示一个类别,并用角度大小来表示其占比。饼图适用于表现数据的相对份额,但不适用于展示大量分类或具有较小占比的数据。

在代码中,我们使用Pyecharts库绘制了这些图形,并根据实验数据进行展示。对于每个图表,我们设置了不同的样式、标签、标题等,以增加图表的可读性和视觉效果。Pyecharts库提供了丰富的配置选项,可以根据需求进行图表样式和交互配置的个性化调整。使用.render_notebook()函数将图表渲染在Jupyter Notebook中,以便直接在Notebook中查看和交互。通过这些图形的绘制和配置,可以更直观地展示数据的分布和关系,从而帮助我们更好地理解和分析数据。

  • 49
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值