《PySpark大数据分析实战》-27.数据可视化图表Pyecharts介绍

📋 博主简介

  • 💖 作者简介:大家好,我是wux_labs。😜
    热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。
    通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP)、TiDB数据库认证SQL开发专家(PCSD)认证。
    通过了微软Azure开发人员、Azure数据工程师、Azure解决方案架构师专家认证。
    对大数据技术栈Hadoop、Hive、Spark、Kafka等有深入研究,对Databricks的使用有丰富的经验。
  • 📝 个人主页:wux_labs,如果您对我还算满意,请关注一下吧~🔥
  • 📝 个人社区:数据科学社区,如果您是数据科学爱好者,一起来交流吧~🔥
  • 🎉 请支持我:欢迎大家 点赞👍+收藏⭐️+吐槽📝,您的支持是我持续创作的动力~🔥

《PySpark大数据分析实战》-27.数据可视化图表Pyecharts介绍

《PySpark大数据分析实战》-27.数据可视化图表Pyecharts介绍

前言

大家好!今天为大家分享的是《PySpark大数据分析实战》第3章第4节的内容:数据可视化图表Pyecharts介绍。

图书在:当当、京东、机械工业出版社以及各大书店有售!

Python数据可视化工具介绍

数据可视化是一种提取有价值数据的有效方法,是数据分析和机器学习中非常重要的一环。它有助于提高分析效率,为机器学习模型提供可靠的数据基础。它可以帮助人们更直观地理解数据,更好地理解数据的趋势和变化,发现潜在的联系,从而帮助人们更好地构建机器学习模型,提高模型的准确性。此外,数据可视化可以帮助人们更好地发现数据中的噪声和异常。通过可视化,可以更容易地发现噪声数据和异常情况,从而减少机器学习模型的误差。常用的Python数据可视化工具包括Matplotlib、Seaborn、Pyecharts等。

Pyecharts介绍

Echarts是一个由百度开源的流行的JavaScript可视化库,它提供了各种图表类型,例如柱状图、折线图、散点图、饼图、地图和热力图等,凭借着良好的交互性,得到了众多开发者的认可。Pyecharts是一个基于Python的可视化工具,它是Echarts的Python版本,用于创建各种交互式图表。Pyecharts提供了一个简单的API,使得人们可以轻松地创建高质量的交互式图表。它支持多种输出格式,包括HTML、PNG、PDF等。与其他Python可视化工具相比,Pyecharts的优点在于强大的交互性和精美的外观效果。可以通过移动鼠标、缩放、拖动等方式与图表进行交互,可以自定义图表的颜色、样式、字体等各种细节。

要在项目中使用Pyecharts,需要在Python环境中安装Pyecharts,命令如下:

bash 复制代码
$ pip install pyecharts

在使用时需要在Python脚本中导入具体的图形,代码如下:

python 复制代码
from pyecharts.charts import xxx

其中,xxx代表具体的图形,例如折线图(Line)、柱状图(Bar)、饼图(Pie)等。

绘制柱状图

Pyecharts柱状图的类定义如下:

python 复制代码
class Bar(
    # 初始化配置项,参考 `global_options.InitOpts`
    init_opts: opts.InitOpts = opts.InitOpts()
)

柱状图Bar提供了两个方法,add_xaxis()方法用来为柱状图添加x轴,该方法接收一个参数,用来指定x轴的数据项,方法定义如下:

python 复制代码
def add_xaxis(
    # x轴数据项
    xaxis_data: Sequence
)

add_yaxis()方法用来为柱状图添加y轴,该方法至少需要两个参数,第1个参数用于指定图例名称,第2个参数用来指定y轴的数据项,其余参数可以保持默认值,方法定义如下:

python 复制代码
def add_yaxis(
    # 系列名称,用于 tooltip 的显示,legend 的图例筛选。
    series_name: str,
    # 系列数据
    y_axis: Sequence[Numeric, opts.BarItem, dict]
)

在下面的案例中,以星期作为分类并添加3组随机数绘制了柱状图,代码如下:

python 复制代码
from pyecharts.charts import Bar
import numpy as np

bar = (
    Bar(init_opts=opts.InitOpts(width="500px", height="300px"))
    .add_xaxis(["周一", "周二", "周三", "周四", "周五", "周六", "周日"])
    .add_yaxis("第1组", [np.random.randint(5, 15) for _ in range(7)])
    .add_yaxis("第2组", [np.random.randint(5, 15) for _ in range(7)])
    .add_yaxis("第3组", [np.random.randint(5, 15) for _ in range(7)])
)
bar.render()

执行代码,绘制的图形如图所示。

绘制饼图

Pyecharts饼图的类定义如下:

python 复制代码
class Pie(
    # 初始化配置项,参考 `global_options.InitOpts`
    init_opts: opts.InitOpts = opts.InitOpts()
)

饼图Pie提供了一个方法,add()方法用来为饼图添加数据项,该方法至少需要两个参数,第1个参数用于指定图例名称,第2个参数用于指定饼图的数据项,方法定义如下:

python 复制代码
def add(
    # 系列名称,用于 tooltip 的显示,legend 的图例筛选。
    series_name: str,
    # 系列数据项,格式为 [(key1, value1), (key2, value2)]
    data_pair: types.Sequence[types.Union[types.Sequence, opts.PieItem, dict]]
)

在下面的案例中,使用Pyecharts的样例数据绘制饼图,代码如下:

python 复制代码
from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker

pie = (
    Pie(init_opts=opts.InitOpts(width="500px", height="300px"))
    .add("", [list(z) for z in zip(Faker.choose(), Faker.values())])
)
pie.render()

执行代码,绘制的图形如图所示。

绘制箱型图

Pyecharts箱型图的类定义如下:

python 复制代码
class Boxplot(
    # 初始化配置项,参考 `global_options.InitOpts`
    init_opts: opts.InitOpts = opts.InitOpts()
)

箱型图Boxplot提供了两个方法,add_xaxis()方法用来为箱型图添加x轴,该方法接收一个参数,用来指定x轴的数据项,方法定义如下:

python 复制代码
def add_xaxis(
    # x轴数据项
    xaxis_data: Sequence
)

add_yaxis()方法用来为箱型图添加y轴,该方法至少需要两个参数,第1个参数用于指定图例名称,第2个参数用来指定y轴的数据项,其余参数可以保持默认值,方法定义如下:

python 复制代码
def add_yaxis(
    # 系列名称,用于 tooltip 的显示,legend 的图例筛选。
    series_name: str,
    # 系列数据
    y_axis: types.Sequence[types.Union[opts.BoxplotItem, dict]]
)

在下面的案例中,以星期作为分类并添加2组随机数绘制箱型图,代码如下:

python 复制代码
from numpy.random import randint as rdi
from pyecharts import options as opts
from pyecharts.charts import Boxplot

d1 = [rdi(40 - rdi(1, 40), 60 + rdi(1, 40), 100).tolist() for _ in range(7)]
d2 = [rdi(40 - rdi(1, 40), 60 + rdi(1, 40), 100).tolist() for _ in range(7)]
box = Boxplot(init_opts=opts.InitOpts(width="500px", height="300px"))
box.add_xaxis(["周一", "周二", "周三", "周四", "周五", "周六", "周日"])
box.add_yaxis("第1组", box.prepare_data(d1))
box.add_yaxis("第2组", box.prepare_data(d2))
box.render()

执行代码,绘制的图形如图所示。

结束语

好了,感谢大家的关注,今天就分享到这里了,更多详细内容,请阅读原书或持续关注专栏。

相关推荐
不是万能的豆学长3 小时前
filetidy 文件整理助手:一键归类 + 规范重命名(Python 零依赖单文件工具)
大数据·开发语言·python·技术美术
库库的数据库笔记9 小时前
国产信创数据库的MySQL兼容性深度对比解析
大数据·数据库·mysql·oceanbase·政务
北京中科新远科技10 小时前
高速光链路健康检查实战:DOM、FEC、误码与压力回归
人工智能·数据挖掘·回归
Elastic 中国社区官方博客10 小时前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es
residual_fan12 小时前
船用柴油机动态机动工况故障诊断:控制感知仿射网络(CAAN)的技术实现
人工智能·算法·数据挖掘·数据分析
珠海西格电力12 小时前
零碳园区管理系统的性能评估体系的行业标准
大数据·网络·人工智能·物联网·机器学习·架构·能源
杨先生哦12 小时前
SOC告警研判实战:海量告警降噪、误报甄别、内网风险处置全流程(上岗必用)
大数据
一线数智13 小时前
朱鹰:人的判断力,比算力更重要
大数据·人工智能
用户36105886261213 小时前
Flink ResourceManager启动流程源码深度剖析:从ClusterEntrypoint到Slot分配的完整链路
大数据
用户36105886261214 小时前
Flink ApplicationMaster启动流程源码深度剖析:从YARN提交到JobMaster启动的完整链路
大数据·flink