正文:
前言
本博客记录这学期关于数据可视化的一些学习,由于我是一个菜鸟,编程能力很弱,希望路过的大佬多多海涵。
一、为什么要数据可视化?
引用知乎的一段话来展开:
(1)我们利用视觉获取的信息量,远远比别的感官要多的多。
(2)它能够帮助分析的人对数据有更全面的认识。
(3)人类大脑在记忆能力的限制。
数据可视化的根本目的就是教会我们如何去分析一段数据,并让非专业的人士也能了解到这段数据所要表达的意思,且可以从数据中挖掘出更多有用的信息。
二、python可视化神器——pyecharts库
2.1 pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图。
2.1 .1先做准备工作,导入自己后续需要用到的库;如果你是一名新手,没有pandas、pyecharts这两个模块;就需要在cmd命令窗口或Anaconda Prompt窗口输入以下命令:
pip install pandas
pip install pyecharts
安装成功之后运行以下代码,就能显示成功。
opts:用于设置图表的各种属性和配置项。opts对象是pyecharts中非常重要的一个概念,可以用于设置图表的样式、数据、标签、坐标轴、背景等各种属性,从而使得图表能够更加地符合用户的需求。
Grid:是一个用于布局多个图表的容器。Grid 可以将多个图表排列在一起,使它们在同一个页面上展示,并具有良好的视觉效果。
pandas:是一个数据处理库,提供了丰富的数据结构和函数,用于处理和分析结构化数据。pandas 可以读取和写入各种数据格式,如 CSV、Excel、SQL 数据库、HTML、JSON 等,并提供了数据清洗、数据转换、数据分组、数据透视、数据聚合等常用操作。
部分代码代码示例:
from pyecharts import options as opts
from pyecharts.charts import Bar, Line,Grid,Tab
import pandas as pd
from pyecharts.faker import Faker
三、获取数据
利用pandas库中的方法获取指定文件指定工作表中的全部数据,其数据是一个列表形式。
注意: 这里的 ’MPV销量数据.xlsx‘ 文件使用的是相对路径,因此要与当前写的代码文件是在同一路径下,才能获取到数据;当然也可以使用绝对路径来获取表格数据文件,这里我就不做演示了。
data=pd.read_excel('MPV销量数据.xlsx')
data
在画图时,我们需要根据采集时间绘制图形,所以需要按时间筛选后,构造成新的表格。使用tolist() 方法筛选日期后构造并进行测试。如图所示。
将时间对象转换成字符串,并提取片段:
# x轴数据
x = data['采集时间'].agg(lambda x:str(x)[5:10]).tolist()
x
提取“销量”转换成字符串,作为我们的数据展示:
data1=data['销量'].tolist()
data1
四、overlap组件展示销量和增长率的对比图表
构造增长率数据:
对于公司来说,业绩是天大的事,定期都会对业绩进行统计,同时也需要分析业绩的变化情况,这时图表的展现就要以销量和增长率为中心点。
# 构造增长率数据
rate_of_rise = []
for i in range(len(data1)):
if i==0:
rate_of_rise.append(0)
else:
rate = data1[i]/data1[i-1]-1 # 计算增长率
rate_of_rise.append((round(rate,3))) # 保留小数点后3位,添加到列表中
rate_of_rise
五、可视化
我们所需要的数据都整理好后,就可以开始制作对比图表,使之更清晰明了的呈现在我们面前。
5.1编写可视化函数
部分代码示例:
bar = (
Bar()
.add_xaxis(x)
.add_yaxis("销量", data1)
.extend_axis( # 添加副坐标轴
yaxis=opts.AxisOpts(name='增长率',min_=-3) # 配置副坐标轴
)
.set_global_opts(
title_opts=opts.TitleOpts(title="数据增长率柱形、折线复合图"),
yaxis_opts=opts.AxisOpts( # 配置主坐标轴
name='数值',
max_=33333
),
)
)
line = (
Line()
.add_xaxis(x)
.add_yaxis("增长率",
rate_of_rise,
is_smooth = True,
yaxis_index=1,
linestyle_opts = opts.LineStyleOpts(color='pink',
width=3,
type_ = 'dashed'
),
)
.set_series_opts(
markline_opts=opts.MarkLineOpts( # 标记副y轴0刻度线,突出增长率的正负属性
data=[
{"yAxis": 0},
],
label_opts=opts.LabelOpts(is_show=True),
linestyle_opts = opts.LineStyleOpts(color='pink',
width=3,
type_ = 'dotted',
),
)
)
)
bar.overlap(line) # 调用overlap组件(方法)实现层叠
bar.render_notebook()
六、附:完整代码
代码示例
#导入库
from pyecharts import options as opts
from pyecharts.charts import Bar, Line,Grid,Tab
import pandas as pd
from pyecharts.faker import Faker
#导入数据
data=pd.read_excel('MPV销量数据.xlsx')
data
#提取数据
# x轴数据
x = data['采集时间'].agg(lambda x:str(x)[5:10]).tolist()
data1=data['销量'].tolist()
# 构造增长率数据
rate_of_rise = []
for i in range(len(data1)):
if i==0:
rate_of_rise.append(0)
else:
rate = data1[i]/data1[i-1]-1 # 计算增长率
rate_of_rise.append((round(rate,3))) # 保留小数点后3位,添加到列表中
rate_of_rise
#overlap组件图形展示
bar = (
Bar()
.add_xaxis(x)
.add_yaxis("销量", data1)
.extend_axis( # 添加副坐标轴
yaxis=opts.AxisOpts(name='增长率',min_=-3) # 配置副坐标轴
)
.set_global_opts(
title_opts=opts.TitleOpts(title="数据增长率柱形、折线复合图"),
yaxis_opts=opts.AxisOpts( # 配置主坐标轴
name='数值',
max_=33333
),
)
)
line = (
Line()
.add_xaxis(x)
.add_yaxis("增长率",
rate_of_rise,
is_smooth = True,
yaxis_index=1,
linestyle_opts = opts.LineStyleOpts(color='pink',
width=3,
type_ = 'dashed'
),
)
.set_series_opts(
markline_opts=opts.MarkLineOpts( # 标记副y轴0刻度线,突出增长率的正负属性
data=[
{"yAxis": 0},
],
label_opts=opts.LabelOpts(is_show=True),
linestyle_opts = opts.LineStyleOpts(color='pink',
width=3,
type_ = 'dotted',
),
)
)
)
bar.overlap(line) # 调用overlap组件(方法)实现层叠
bar.render_notebook()
七、重点!!敲黑板了
配置项,pyecharts的配置项分为,全局配置项,系列配置项
全局配置项:
都是一些大体上的配置,比如图标的大小,工具栏显示等等。
全部写在这里set_global_opts类里面,参数一般是x_opts = opts.XOpts():
系列配置项:
这个配置项主要是针对文字样式、图标样式这些小一点的细节的改变
这些类方法需要写在这里set_series_opts()方法里;
具体教程参考:官网
组合组件(Grid)是 Pyecharts 中非常实用的组件,它可以帮助我们更好地展示多个图表的组合。通过上述示例代码,我们可以快速上手使用overlap,并实现各种不同的数据可视化效果。
以上就是我本人对pyecharts及overlap组件的理解和使用;如有更好的想法和思路,可私信我一起探讨!
八、总结
数据爬取下来后,我们一定希望把它展示出来,本学期系统学习了pyecharts,pyecharts 是一个用于生成 Echarts 图表的类库;能使繁杂的数据变成图表美观、直观的呈现在我们面前。
还有更多类型的图形,这里就不作过多的展示了。感兴趣的小伙伴们可以自己找官网浅学一下,话不多说,快快行动起来吧!