目录
前言
在对数据的掌握及分析变得愈加重要的当今时代,数据可视化作为提高用户对数据的理解程度,创新架构,增进体验的重要一环,一向富有表现力的Python语言应当可以发挥更大作用,优秀的pyechart第三方库即在这样的背景下诞生。
一、pyecharts是什么?
要了解pyecharts是什么?我们必须先了解Echares是什么。Echarts是一个由百度开源的商业级数据图表,它是一个纯JavaScript的图表库,可以为用户提供直观生动,可交互,可高度个性化定制的数据可视化图表,赋予了用户对数据进行挖掘整合的能力。
我们即可定义:pyecharts库是一个用于生成 Echarts 图表的类库。
二、堆积面积图使用步骤
1.引入所要用到的数据库
代码如下:
import pandas as pd
如果你运行不成功,那可是你没有安装这个数据库,只按住win+R输入cmd,打开命令提示符后输入“pip install pandas” ,点击回车。等待安装完后就可以正常使用了。当然不只是这个数据库,其他的数据库没有,你也可以使用“pip install”+数据库名称进行安装
2.读入数据
代码如下:
data_mpv_sale = pd.read_excel(r'E:\20210322022\数据可视化\MPV销量数据2012-2021(1).xlsx')
data_mpv_sale
3.数据预处理
(1).数据去重,并查看是否去重成功
data_mpv_sale2 = data_mpv_sale.drop_duplicates(subset=['采集时间','排名'],keep='last')
data_mpv_sale2 = data_mpv_sale2.sort_values(by=['采集时间','排名'])
data_mpv_sale2
可以看到去重成功了
(2).数据加工
时间条件筛选
'201721'>'20173'
data_mpv_sale3 = data_mpv_sale2[data_mpv_sale2['采集时间']>'2017']
data_mpv_sale3['车型']
data_mpv_sale3['厂商']
data_mpv_sale3['车型_厂商'] = data_mpv_sale3['车型'] + '_' + data_mpv_sale3['厂商']
data_mpv_sale3
时间数据加工
data_mpv_sale4 = data_mpv_sale3.copy() # 复制一个表格对象
data_mpv_sale4['年份'] = data_mpv_sale4['采集时间'].agg(lambda x:int(x[:4]))
data_mpv_sale4['月份'] = data_mpv_sale4['采集时间'].agg(lambda x:int(x[-2:]))
def jidu(month):
if month<=3:
return 1
elif month<=6:
return 2
elif month<=9:
return 3
else:
return 4
data_mpv_sale4['季度'] = data_mpv_sale4.loc[:,'月份'].agg(jidu)
data_mpv_sale4['年份_季度'] = data_mpv_sale4['年份'].agg(lambda x:str(x)+'年') + data_mpv_sale4['季度'].agg(lambda x:str(x)+'季度')
data_mpv_sale4
重新聚合车辆季度销量
sale_season = data_mpv_sale4.groupby(by=['车型_厂商','年份_季度'])['销量'].sum()
sale_season
定位销量头部车型
# 16年后前20名
sale_total20 = data_mpv_sale4.groupby(by=['车型_厂商'])['销量'].sum().sort_values(ascending=False)[:10].index.values
sale_total20
4.数据结构重组
# 定义时间列表
year = [2017,2018,2019,2020,2021]
season = [1,2,3,4]
list_time = []
for y in year:
for s in season:
if y==2021 and s>=3:
break
else:
list_time.append(f'{y}年{s}季度')
list_time
# 定义字典存储20辆车的季度销量信息
sale_dict = {}
for c in sale_total20:
sale_dict.setdefault(c,[]) # 创建键:c,值:[]
for t in list_time:
if t in sale_season[c].index:
sale_dict[c].append(int(sale_season[c][t]))
else:
sale_dict[c].append(0) # 没有销量记录的季度需要手动填入0
sale_dict
5.画图
import pyecharts.options as opts
from pyecharts.charts import Line
c = (
Line(init_opts=opts.InitOpts(width='800px',height='400px'))
.add_xaxis(xaxis_data=list_time)
.set_global_opts(
# title_opts=opts.TitleOpts(title="2017-2021年MPV销量前10名车型走势"),
tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), # 配置提示框
yaxis_opts=opts.AxisOpts(
type_="value",
axistick_opts=opts.AxisTickOpts(is_show=True),
splitline_opts=opts.SplitLineOpts(is_show=True),
),
xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
datazoom_opts=opts.DataZoomOpts(), # 配置滑动条
)
)
for name,sale_list in sale_dict.items():
c.add_yaxis(
series_name=name, # 序列名称,由车型名称定义
stack="总量", # 设置堆积图
y_axis=sale_list, # 销量数据
areastyle_opts=opts.AreaStyleOpts(opacity=0.5), # 设置面积图
label_opts=opts.LabelOpts(is_show=False),
is_smooth = True, # 显示平滑曲线
)
c.render_notebook()
# c.render('2017-2021年MPV销量前10名车型走势.html')
这样我们的堆积面积图就搞好了,让我们来看看成果吧
在最终的效果图中新增加了标题,设置了居中,颜色和大小
backgroundColor 背景色
默认无背景transparent;颜色可以使用 RGB 表示,比如 ‘rgb(128, 128, 128)’,如果想要加上 alpha 通道表示不透明度,可以使用 RGBA,比如 ‘rgba(128, 128, 128, 0.5)’,也可以使用十六进制格式。
三、三维散点图
1.引入数据库
import pandas as pd
2.导入数据
data = pd.read_excel(r'E:\20210322022\数据可视化\航空公司数据-剔除空年龄.xlsx')
data
3.剔除年龄缺失值
data.dropna(subset=['年龄'],inplace=True)
4.数据筛选
data_select = data.loc[:100,['年龄','飞行次数','最大乘机时间间隔']]
x = data_select['飞行次数'].tolist()
y = data_select['最大乘机时间间隔'].tolist()
z = data_select['年龄'].tolist()
z
5.画图
import pyecharts.options as opts
from pyecharts.charts import Scatter3D
c = (
Scatter3D()
.add(
'',
data = [[i,j,k] for i,j,k in zip(x,y,z)], # 数据:二维数组
xaxis3d_opts=opts.Axis3DOpts( # x轴配置
name='飞行次数',
type_="value",
),
yaxis3d_opts=opts.Axis3DOpts( # y轴配置
name='最大乘机时间间隔',
type_="value",
),
zaxis3d_opts=opts.Axis3DOpts( # z轴配置
name='年龄',
type_="value",
),
)
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
max_= max(z),
range_color=[
"#1710c0",
"#0b9df0",
"#00fea8",
"#00ff0d",
"#f5f811",
"#f09a09",
"#fe0300",
],
),
)
)
c.render_notebook()
颜色可以自己改
最后三维散点图也出来了
优点:
1.简洁的 API 设计,使用如丝滑般流畅,支持链式调用
2.囊括了 30+ 种常见图表,应有尽有
3.支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
4.可轻松集成至 Flask,Django 等主流 Web 框架
5.高度灵活的配置项,可轻松搭配出精美的图表
6.详细的文档和示例,帮助开发者更快的上手项目
7.多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持
四、总结
到这里,今天的推介内容已全部结束,总的来说,pyechart库作为优秀的python第三方库,为Echarts图表库与python建立了良好沟通。当然,python可实现的功能还有很多,期待大家的不断学习探索与python迸发出更大的火花吧!