403-数据可视化
什么是数据可视化
数据可视化:顾名思义就是让数据看的到, 他的作用也很明显, 让人们不用再去阅读枯燥无味的数据, 一眼看去就可以明白数据是什么, 数据间的关系是什么, 更好的让我们通过数据发现潜在的规律进而进行商业决策。
pyecharts模块
Echarts 是个由百度捐给Apache开源基金会的开源的数据可视化工具,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可. 而 Python 是门富有表达力的语言,很适合用于数据处理. 当数据分析遇上数据可视化时pyecharts 诞生了.
特性
:
- 简洁的API设计,使用如丝滑般流畅,支持链式调用
- 囊括了30+种常见图表
- 支持主流Notebook 环境,Jupyter Notebook 和JupyterLab
- 可轻松集成至Flask, Django等主流Web框架
- 高度灵活的配置项,可轻松搭配出精美的图表
- 详细的文档和示例,帮助开发者更快的上手项目
- 多达400+地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持
初学就去官网看文档、看官方的案例,官方文档是最全的
每种图像都有base版,是最简单的,先看这个,例如bar_base,就是柱状图里最简单的
pyecharts的缺点是网页数据都是实时从官网获取,所以需要联网并能连通pyecharts官网
创建柱状图(新)
# 导入柱状图模块
from pyecharts.charts import Bar
import pyecharts.options as opts
# 创建图标对象并添加数据,这里是链式操作的设置方法
c = (
Bar()
.add_xaxis(['A', 'B', 'C', 'D', 'E', 'F', 'G']) # 添加x轴数据
.add_yaxis('category', [10, 20, 30, 40, 50, 60, 70]) # 添加y轴数据
.add_yaxis('category2', [10, 20, 30, 40, 50, 60, 70]) # 添加y轴数据
.add_yaxis('category3', [10, 20, 30, 40, 50, 60, 70]) # 添加y轴数据
.set_global_opts(title_opts=opts.TitleOpts(title='柱状图示例')) # 设置全局配置项:标题
.render('bar.html') # 保存为html文件
)
Faker类
Faker 是一个 Python 库,用于生成虚假数据。它可以帮助你创建随机数据,比如姓名、地址、电话号码、电子邮件地址等。
返回的结果是一个列表
from faker import Faker
fake = Faker()
print(fake.name()) # 生成随机姓名
print(fake.address()) # 生成随机地址
print(fake.phone_number()) # 生成随机电话号码
print(fake.email()) # 生成随机电子邮件地址
按住ctrl+鼠标左键,可以跳转到faker的定义,可以看到所有可以生成随机数据的方法和数据
通过faker类固定选择一组元素
from faker import Faker
print(Faker.phones)
opts配置项
创建柱状图代码中的:.set_global_opts(title_opts=opts.TitleOpts(title='柱状图示例'))
就是设置全局配置项,效果是设置标题
# 导入柱状图模块
from pyecharts.charts import Bar
import pyecharts.options as opts # 导入配置选项模块
from pyecharts.globals import ThemeType # 导入主题类型
c = (
Bar(init_opts=opts.InitOpts(width='1400px', height='800px', theme=ThemeType.LIGHT)) # 设置图表的宽度和高度和主题
.add_xaxis(['A', 'B', 'C', 'D', 'E', 'F', 'G'])
.add_yaxis('category', [10, 20, 30, 40, 50, 60, 70])
.set_global_opts(title_opts=opts.TitleOpts(title='柱状图示例'), # 设置全局配置项:标题
legend_opts=opts.LegendOpts(is_show=False)) # 设置全局配置项:图例
.render('bar.html')
)
通过pyecharts模块创建饼状图(老)
前提:自己搭建好了本地gdp数据的html网页用来爬取
这里用饼状图爬取并展示排名前10的数据
导入模块
# 导入饼图模块
from pyecharts.charts import Pie
# 导入配置选项模块
import pyecharts.options as opts
初始化饼状图:
Pie()函数: 创建饼图
opts.InitOpts参数: Pie(init_opts=opts.InitOpts(width="1400px", height="800px"))
init_opts: 指定参数名
opts.InitOpts: 配置选项
**width="1400px" height="800px" :**界面的宽度和高度
# 创建饼图并设置这个界面的长和高
# px:像素单位
pie = Pie(init_opts=opts.InitOpts(width="1400px", height="800px"))
给饼图添加数据:
add()函数:
参数1: 名称
参数2: 具体数据, 数据类型为==>[(a,b),(a,b),(a,b)]==>a为数据名称,b为数据大小
参数3: 标签设置 label_opts=opts.LabelOpts(formatter='{b}:{d}%') 符合百分比的形式
# 给饼图添加数据
pie.add(
"GDP",
data,
label_opts=opts.LabelOpts(formatter='{b}:{d}%')
)
给饼图添设置标题:
set_global_opts()函数 :
title_opts=opts.TitleOpts : 设置标题
title="2020年世界GDP排名", subtitle="美元" : 设置主标题和副标题
# 给饼图设置标题
pie.set_global_opts(title_opts=opts.TitleOpts(title="2020年世界GDP排名", subtitle="美元"))
保存数据:
# 保存结果
pie.render()
完整代码
import requests
import re
# 导入饼图模块
from pyecharts.charts import Pie
# 导入配置选项模块
import pyecharts.options as opts
# 存储爬取到的国家的名字
country_list = []
# 春初爬取到的国家gdp的数据
gdp_list = []
def get_gdp_data():
global country_list
global gdp_list
# 获取gdp的html数据
data = requests.get("http://localhost:8000/gdp.html")
# 对获取数据进行解码
data = data.content.decode("utf8")
# 对gdp的html数据进行按行分割
data_list = data.split("\n")
for i in data_list:
# 对html进行解析获取<国家名字>
country_result = re.match('.*<a href=""><font>(.*)</font></a>', i)
# 匹配成功就存放到列表中
if country_result is not None:
country_list.append(country_result.group(1))
# 对html进行解析获取<gdp数据>
gdp_result = re.match(".*¥(.*)亿元", i) # 匹配规则
# 匹配成功就存储到列表中
if gdp_result is not None:
gdp_list.append(gdp_result.group(1))
# 创建一个饼状图显示GDP前十的国家
def data_view_pie():
# 获取前十的过的GDP数据, 同时让数据符合[(),()...]的形式
data = list(zip(country_list[:10], gdp_list[:10])) # 切片
# 创建饼图
pie = (
Pie(init_opts=opts.InitOpts(width="1400px", height="800px"))
# 给饼图添加数据
.add("GDP", data, label_opts=opts.LabelOpts(formatter='{b}:{d}%'))
# 给饼图设置标题
.set_global_opts(title_opts=opts.TitleOpts(title="排名", subtitle="美元"))
# 保存结果
.render('pie.html')
)
if __name__ == '__main__':
# 获取GDP数据
get_gdp_data()
# 生成可视化饼图
data_view_pie()