大数据(十):数据可视化(二)

专栏介绍

结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来!

全部文章请访问专栏:《Python全栈教程(0基础)》
再推荐一下最近热更的:《大厂测试高频面试题详解》 该专栏对近年高频测试相关面试题做详细解答,结合自己多年工作经验,以及同行大佬指导总结出来的。旨在帮助测试、python方面的同学,顺利通过面试,拿到自己满意的offer!


文章目录

    • 专栏介绍
    • 数据可视化
      • Seaborn
      • Pyecharts


数据可视化

通过前面的学习,我们已经对数据可视化工具 matplotlib 有一个初步的认知。大家可能也会发现了,matplotlib 提供的函数虽然强大,但是参数太多,要想对图表进行深度的定制就需要修改一系列的参数,这一点对新手并不友好。另一方面,使用 matplotlib 定制的统计图是静态图表,可能在某些需要交互效果的场景下并不合适。为了解决这两个问题,我们为大家介绍两个新的可视化工具,一个是 seaborn,一个是 pyecharts。

Seaborn

Seaborn 是建立在 matplotlib 之上的数据可视化工具,它相当于是对 matplotlib 进行了更高级的封装,而且 seaborn 也能跟 pandas 无缝整合,让我们可以用更少的代码构建出更好的统计图表,帮助我们探索和理解数据。Seaborn 包含但不局限于以下描述的功能:

  1. 面向数据集的 API,可用于检查多个变量之间的关系。
  2. 支持使用分类变量来显示观察结果或汇总统计数据。
  3. 能够可视化单变量或双变量分布以及在数据子集之间进行比较的选项
  4. 各类因变量线性回归模型的自动估计与作图。
  5. 集成调色板和主题,轻松定制统计图表的视觉效果。

可以使用 Python 的包管理工具 pip 来安装 seaborn。

pip install seaborn

在 Jupyter 中,可以直接使用魔法指令进行安装,如下所示。

%pip install seaborn

下面,我们用 seaborn 自带的数据集为例,为大家简单的展示 seaborn 的用法和强大之处,想要深入研究 seaborn 的读者可以自行阅读官方文档和并查看官方作品集中的示例。根据官方示例来编写自己的代码是一个不错的选择,简单的说就是保留官方代码,将数据换成自己的数据即可。下图展示了 seaborn 绘制图表的函数,可以看出,seaborn 的这些函数主要支持我们通过绘制图表来探索数据的关系、分布和分类。

使用 seaborn,首先需要导入该库并设置主题,代码如下所示。

import seaborn as snssns.set_theme()

如果需要在图表上显示中文,还需要用之前讲过的方法修改 matplotlib 的配置参数,代码如下所示。

import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei', ]
plt.rcParams['axes.unicode_minus'] = False

注意:上面的代码必须放在调用 set_theme 函数之后,否则调用 set_theme 函数时又会重新修改 matplotlib 配置参数中的字体设置。

加载官方的 Tips 数据集(就餐小费数据)。

tips_df = sns.load_dataset('tips')
tips_df.info()

运行结果如下所示,其中 total_bill 表示账单总金额,tip 表示小费的金额,sex 是顾客的性别,smoker 表示顾客是否抽样,day 代表星期几,time 代表是午餐还是晚餐,size 是就餐人数。

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 244 entries, 0 to 243
Data columns (total 7 columns):#   Column      Non-Null Count  Dtype   
---  ------      --------------  -----   0   total_bill  244 non-null    float64 1   tip         244 non-null    float64 2   sex         244 non-null    category3   smoker      244 non-null    category4   day         244 non-null    category5   time        244 non-null    category6   size        244 non-null    int64   
dtypes: category(4), float64(2), int64(1)
memory usage: 7.4 KB

由于数据集是联网加载的,上述代码可能因为 SSL 的原因无法获取到数据,可以尝试先运行下面的代码,然后再加载数据集。

import sslssl._create_default_https_context = ssl._create_unverified_context

如果我们希望了解账单金额的分布,可以使用下面的代码来绘制分布图。

sns.histplot(data=tips_df, x='total_bill', kde=True)

如果想了解变量之间的两两关系,我们可以绘制点对图,代码和效果如下所示。

sns.pairplot(data=tips_df, hue='sex')

如果对上面图表的颜色不满意,还可以通过 palette 参数选择 seaborn 自带的“调色板”来修改颜色,这种方式相比于自行指定颜色或使用随机颜色方便和靠谱了很多,下图为大家展示了部分 seaborn 自带的“调色板”。

我们可以将上面的代码稍作修改,看看运行结果有什么差别。

sns.pairplot(data=tips_df, hue='sex', palette='Dark2')

接下来,我们为 total_bill 和 tip 两组数据绘制联合分布图,代码如下所示。

sns.jointplot(data=tips_df, x='total_bill', y='tip', hue='sex')

上面清晰的展示了,total_bill 和 tip 之间存在正相关关系,这一点我们也可以通过 DataFrame 对象的 corr 方法进行验证。接下来,我们可以建立回归模型来拟合这些数据点,而 seaborn 的线性回归模型图已经帮我们实现了这项功能,代码如下所示。

sns.lmplot(data=tips_df, x='total_bill', y='tip', hue='sex')

如果我们希望了解账单金额的集中和离散趋势,可以绘制箱线图或小提琴图,代码如下所示,我们将数据按星期四、星期五、星期六和星期天分别进行展示。

sns.boxplot(data=tips_df, x='day', y='total_bill')

sns.violinplot(data=tips_df, x='day', y='total_bill')

说明:相较于箱线图,小提琴图没有标注异常点而是显示了数据的整个范围,另一方面,小提琴图很好的展示了数据的分布(密度轨迹)。

Pyecharts

Echarts 原来是百度开发的一个前端图表库,2018年1月16日,ECharts 进入 Apache Incubator 进行孵化,目前已经是 Apache 软件基金会的顶级项目。凭借着良好的交互性和精巧的图表设计,ECharts 得到了众多开发者的认可,而 pyecharts 就是基于 Python 语言对 ECharts 进行了包装,让 Python 开发者也可以使用 ECharts 绘制外观精美且交互性强的统计图表。

可以使用 Python 的包管理工具 pip 来安装 pyecharts。

pip install pyecharts

在 Jupyter 中,可以直接使用魔法指令进行安装,如下所示。

%pip install pyecharts

接下来,我们通过来自于 pyecharts 官方网站新手教程中的一个例子,来认识 pyecharts。当然,我们对官网的例子进行一些调整,代码如下所示。

from pyecharts.charts import Bar
from pyecharts import options
from pyecharts.globals import ThemeType# 创建柱状图对象并设置初始参数(宽度、高度、主题)
bar = Bar(init_opts=options.InitOpts(width='600px',height='450px',theme=ThemeType.CHALK
))
# 设置横轴数据
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
# 设置纵轴数据(第一组)
bar.add_yaxis("商家A",[25, 20, 36, 10, 75, 90],
)
# 设置纵轴数据(第二组)
bar.add_yaxis("商家B",[15, 12, 30, 20, 45, 60]
)
# 设置纵轴数据(第三组)
bar.add_yaxis("商家C",[12, 32, 40, 52, 35, 26]
)
# 添加全局配置参数
bar.set_global_opts(# 横轴相关的参数xaxis_opts=options.AxisOpts(axislabel_opts=options.LabelOpts(color='white')),# 纵轴相关的参数(标签、最小值、最大值、间隔)yaxis_opts=options.AxisOpts(axislabel_opts=options.LabelOpts(color='white'),min_=0,max_=100,interval=10),# 标题相关的参数(内容、链接、位置、文本样式)title_opts=options.TitleOpts(title='2021年销售数据展示',title_link='http://www.qfedu.com',pos_left='2%',title_textstyle_opts=options.TextStyleOpts(color='white',font_size=16,font_family='SimHei',font_weight='bold')),# 工具箱相关的参数toolbox_opts=options.ToolboxOpts(orient='vertical',pos_left='right')
)
# 在Jupyter Notebook中渲染图表
bar.render_notebook()

上面代码的运行效果如下图所示。值得一提的是,下图中的标题、图例、右侧的工具箱都是可以点击的,大家可以点击它们看看会有什么样的效果,ECharts 的魅力就在于它的交互效果,大家一定要试一试。如果要将下面的统计图表保存成一个网页,可以将上面最后一行代码修改为bar.render('index.html')即可。

接下来,我们也是通过一个官方示例,看看如何绘制饼图。

import pyecharts.options as opts
from pyecharts.charts import Pie# 准备饼图需要的数据
x_data = ["直接访问", "邮件营销", "联盟广告", "视频广告", "搜索引擎"]
y_data = [335, 310, 234, 135, 1548]
data = [(x, y) for x, y in zip(x_data, y_data)]# 创建饼图对象并设置初始化参数
pie = Pie(init_opts=opts.InitOpts(width="800px", height="400px"))
# 向饼图添加数据
pie.add('', data_pair=data,radius=["50%", "75%"],label_opts=opts.LabelOpts(is_show=False),
)
# 设置全局配置项
pie.set_global_opts(# 配置图例相关的参数legend_opts=opts.LegendOpts(pos_left="legft",orient="vertical")
)
# 设置数据系列配置参数
pie.set_series_opts(# 设置不显示工具提示tooltip_opts=opts.TooltipOpts(is_show=False),# 设置饼图标签的样式label_opts=opts.LabelOpts(formatter="{b}({c}): {d}%")
)
pie.render_notebook()

运行上面的代码,效果如下图所示。

需要提醒大家注意的是,pyecharts 并不能直接使用 NumPy 的 ndarray 和 Pandas 的 Series、DataFrame 为其提供数据,它需要的是 Python 原生的数据类型。可能大家也注意到了,上面的代码中,我们使用的都是列表、元组这样的数据类型。

最后,我们来看看如何绘制地图,绘制地图首先需要安装额外的依赖库来获取地图相关信息,命令如下所示。

pip install echarts-countries-pypkg echarts-china-provinces-pypkg echarts-china-cities-pypkg echarts-china-counties-pypkg

在 Jupyter 中,可以直接使用魔法指令进行安装,如下所示。

%pip install echarts-countries-pypkg
%pip install echarts-china-provinces-pypkg
%pip install echarts-china-cities-pypkg
%pip install echarts-china-counties-pypkg

说明:上面的四个库分别包含了世界各国、中国省级行政区域、中国市级行政区域、中国区/县级行政区域的数据。

然后,我们将全国各省抖音大V的数据放在一个列表中,代码如下所示。

data = [('广东', 594), ('浙江', 438), ('四川', 316), ('北京', 269), ('山东', 248),('江苏', 234), ('湖南', 196), ('福建', 166), ('河南', 153), ('辽宁', 152),('上海', 138), ('河北', 86), ('安徽', 79), ('湖北', 75), ('黑龙江', 70), ('陕西', 63), ('吉林', 59), ('江西', 56), ('重庆', 46), ('贵州', 39),('山西', 37), ('云南', 33), ('广西', 24), ('天津', 22), ('新疆', 21),('海南', 18), ('内蒙古', 14), ('台湾', 11), ('甘肃', 7), ('广西壮族自治区', 4),('香港', 4), ('青海', 3), ('新疆维吾尔自治区', 3), ('内蒙古自治区', 3), ('宁夏', 1)
]

接下来,我们使用 pyecharts 在地图上标记各省抖音大V人数。

from pyecharts.charts import Mapmap_chart = Map()
map_chart.add('', data, 'china', is_roam=False)
map_chart.render_notebook()

代码的运行效果如下图所示,将鼠标置于地图上时,会高亮对应的省并看到相关的信息。

和 seaborn 一样,我们建议大家参考官方提供的示例来使用 pyecharts,我们可以在 pyecharts 官方网站的左侧导航栏中找到“图表类型”选项,下面每种类型的图表都有对应的官方示例,很多代码是可以直接使用的,我们需要做的就是将数据换成自己的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/180184.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物理机安装黑群晖

物理机安装黑群晖 黑群晖系统: DSM 6.2.0–6.2.3 引导版本: 1.04b (首选推荐版本) 针对机型: DS918 引导方式: 引导方式&#xff1a;传统BIOS和UEFI&#xff08;可选&#xff09; 点击此处链接&#xff0c;引导下载地址 点此处为&#xff1a;DS918 DSM 6.2.3-25426 Update2 系…

Leetcode实战

我们今天来利用这段时间的学习实操下我们的oj题。 int removeElement(int* nums, int numsSize, int val){int dst0;int src0;while(src<numsSize){if(nums[src]!val){nums[dst]nums[src];}elsesrc;}return dst;}我们这里用用两个下标&#xff0c;src来移动&#xff0c;如果…

linux的shell script判断用户输入的字符串,判断主机端口开通情况

判断输入的字符串是否是hello 图一运行报错 检查发下&#xff0c;elif 判断里面少个引号&#xff0c;哎&#xff0c;现在小白到了&#xff0c;一看就会&#xff0c;一写就错的时候了&#xff0c;好像现在案例比较简单&#xff0c;行数较少。 案例二 if 结合test 判断主机端…

小程序如何设置用户同意服务协议并上传头像和昵称

为了保护用户权益和提供更好的用户体验&#xff0c;设置一些必填项和必读协议是非常必要的。首先&#xff0c;用户必须阅读服务协议。服务协议是明确规定用户和商家之间权益和义务的文件。通过要求用户在下单前必须同意协议&#xff0c;可以确保用户在使用服务之前了解并同意相…

第11章_数据处理之增删改

文章目录 1 插入数据1.1 实际问题1.2 方式 1&#xff1a;VALUES的方式添加1.3 方式2&#xff1a;将查询结果插入到表中演示代码 2 更新数据演示代码 3 删除数据演示代码 4 MySQL8新特性&#xff1a;计算列演示代码 5 综合案例课后练习 1 插入数据 1.1 实际问题 解决方式&#…

深度学习之基于Python+OpenCV+dlib的考生信息人脸识别系统(GUI界面)

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习在人脸识别领域的应用已经取得了显著的进展。Python是一种常用的编程语言&#xff0c;它提供了许多强大的库…

从零开始学习搭建量化平台笔记

从零开始学习搭建量化平台笔记 本笔记由纯新手小白开发学习记录&#xff0c;欢迎大佬请教指点留言&#xff0c;有空的话还可以认识一下&#xff0c;来上海请您喝咖啡~~ 2023/10/30&#xff1a;上份工作辞职并休息了几个月后&#xff0c;打算开始找个关于量化投资相关的工作。面…

在公共安全场景下,智能监控如何做到保障安全的同时又最大化地提供便利?

智能监控系统应用的场景十分广泛&#xff0c;其中&#xff0c;公共安全场所的需求尤为重要&#xff0c;为保障公共区域的安全&#xff0c;提升人民群众的归属感&#xff0c;增强公共场所的安全性&#xff0c;智慧安防EasyCVR智能视频监控系统做出了极大努力。具体细节如下&…

基于生成对抗网络的照片上色动态算法设计与实现 - 深度学习 opencv python 计算机竞赛

文章目录 1 前言1 课题背景2 GAN(生成对抗网络)2.1 简介2.2 基本原理 3 DeOldify 框架4 First Order Motion Model5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于生成对抗网络的照片上色动态算法设计与实现 该项目较为新颖&am…

YOLOv5源码中的参数超详细解析(5)— 验证部分(val.py)参数解析

前言:Hello大家好,我是小哥谈。YOLOv5是一种先进的目标检测算法,它可以实现快速和准确的目标检测。在YOLOv5源码中,train.py和detect.py文件讲完了之后,接着就是讲val.py文件了。本节课就结合源码对val.py文件进行逐行解析~!🌈 前期回顾: YOLOv5源码中的参数超详细解…

喜报|英码科技荣登“广州首届百家新锐企业名单”、“2022年度中国好技术项目库名单”榜单

近日&#xff0c;英码科技喜报连连&#xff0c;在刚刚公布的2022年度“中国好技术”项目库入选名单和广州首届百家新锐企业名单中&#xff0c;英码科技凭借出色的技术创新能力和优秀的企业竞争力荣登榜单。 2022年度“中国好技术” 近期&#xff0c;2022年度“中国好技术”征集…

持续进化,快速转录,Faster-Whisper对视频进行双语字幕转录实践(Python3.10)

Faster-Whisper是Whisper开源后的第三方进化版本&#xff0c;它对原始的 Whisper 模型结构进行了改进和优化。这包括减少模型的层数、减少参数量、简化模型结构等&#xff0c;从而减少了计算量和内存消耗&#xff0c;提高了推理速度&#xff0c;与此同时&#xff0c;Faster-Whi…

数据结构笔记——查找、排序(王道408)

文章目录 查找基本概念线性表查找顺序查找折半查找&#xff08;二分&#xff09;分块查找 树查找二叉排序树&#xff08;BST&#xff09;平衡二叉树&#xff08;AVL&#xff09;的插入平衡化复杂度分析 平衡二叉树的删除 红黑树红黑树的定义和性质红黑树定义红黑树性质 红黑树的…

MySQL进阶之性能优化与调优技巧

数据库开发-MySQL 1. 多表查询1.1 概述1.1.2 介绍1.1.3 分类 1.2 内连接1.3 外连接1.4 子查询1.4.1 介绍1.4.2 标量子查询1.4.3 列子查询1.4.4 行子查询1.4.5 表子查询 2. 事务2.1 介绍2.2 操作2.3 四大特性 3. 索引3.1 介绍3.2 结构3.3 语法 1. 多表查询 1.1 概述 1.1.2 介绍…

目标检测:Proposal-Contrastive Pretraining for Object Detection from Fewer Data

论文作者&#xff1a;Quentin Bouniot,Romaric Audigier,Anglique Loesch,Amaury Habrard 作者单位&#xff1a;Universit Paris-Saclay; Universit Jean Monnet Saint-Etienne; Universitaire de France (IUF) 论文链接&#xff1a;http://arxiv.org/abs/2310.16835v1 内容…

MyBatis底层原理(小白版本)

&#xff01;特别声明&#xff01;&#xff1a;这篇文章只是单纯用来应对面试&#xff0c;并不能用来当作深度解析的文章来看。本人才疏学浅&#xff0c;文章也可能有不对的地方&#xff0c;望指正。 此源码分析使用的是Java11 基本使用流程&#xff1a; String resource &q…

C#完成XML文档节点的自动计算功能

一个项目涉及XML文档中节点的自动计算&#xff0c;就是XML文档的每个节点都参与运算&#xff0c;要求&#xff1a; ⑴如果节点有计算公式则按照计算公式进行&#xff1b; ⑵如果节点没有计算公式则该节点的值就是所有子节点的值之和&#xff1b; ⑶节点有4种类型&#xff0c;计…

SpringBoot的Condition注解

文章目录 参考资料运行环境SpringBoot 自动配置原理一、Condition二、切换内置web服务器三、Enable*注解四、Import 注解五、EnableAutoConfiguration 注解六、案例七、收获与总结 参考资料 视频链接 运行环境 win10IDEA专业版SpringBoot 2.6.2 SpringBoot 自动配置原理 一、Co…

OpenCV官方教程中文版 —— 图像修复

OpenCV官方教程中文版 —— 图像修复 前言一、基础二、代码三、更多资源 前言 本节我们将要学习&#xff1a; • 使用修补技术去除老照片中小的噪音和划痕 • 使用 OpenCV 中与修补技术相关的函数 一、基础 在我们每个人的家中可能都会几张退化的老照片&#xff0c;有时候…

前端性能分析工具

前段时间在工作中,需要判断模块bundle size缩减对页面的哪些性能产生了影响, 因此需要了解前端的性能指标如何定义的,以及前端有哪些性能分析工具, 于是顺便整理了一篇笔记, 以供前端小白对性能这块知识点做一个入门级的了解. 页面渲染 在了解性能指标和分析工具之前,有必要先…