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

专栏介绍

结合自身经验和内部资料总结的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.hqwc.cn/news/160210.html

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

相关文章

电路正负反馈,电压电流反馈,串并联反馈详细判别方法

正/负反馈&#xff1a;假设输出升高&#xff0c;转一圈回来仍使其升高就是正反馈&#xff0c;反之就是负反馈。作图法&#xff1a;在RL的信号端画一个向上的小箭头&#xff0c;沿着反馈环路&#xff0c;每经过一个元器件就画一个相应的箭头&#xff0c;一直画到放大器的输出端&…

DBeaver关闭代码的提示

在DBeaver中会遇到如下现象&#xff0c;很烦&#xff0c;怎么取消这个提示框呢&#xff1f; 解决方案&#xff1a;

antv/g6元素之combo

介绍 在 G6 中&#xff0c;“Combo” 是一种特殊的元素&#xff0c;用于组合和展示多个节点元素的一种方式。它通常用于表示一个组或子图&#xff0c;将多个相关节点组织在一起&#xff0c;并在图形中以单一的形状显示。 属性 type&#xff1a;Combo 的类型&#xff0c;通常是…

《python深度学习》笔记(二十):神经网络的解释方法之CAM、Grad-CAM、Grad-CAM++、LayerCAM

原理优点缺点GAP将多维特征映射降维为一个固定长度的特征向量①减少了模型的参数量&#xff1b;②保留更多的空间位置信息&#xff1b;③可并行计算&#xff0c;计算效率高&#xff1b;④具有一定程度的不变性①可能导致信息的损失&#xff1b;②忽略不同尺度的空间信息CAM利用…

​ iOS App Store上传项目报错 缺少隐私政策网址(URL)解决方法

一、问题如下图所示&#xff1a; ​ 二、解决办法&#xff1a;使用Google浏览器&#xff08;翻译成中文&#xff09;直接打开该网址 https://www.freeprivacypolicy.com/free-privacy-policy-generator.php 按照要求填写APP信息&#xff0c;最后将生成的网址复制粘贴到隐私…

BIOS开发笔记 - DDR中的时序参数

通过前一篇文章学习,我们可以大致知道内存条(Module)的组成及SDRAM内部的结构,这一篇再介绍下SDRAM中常见的时序参数以及整个读写操作的流程。 一、外部信号 图1 DDR4的外部线路图 DDR是一种高带宽的传输接口,其外部信号较多,图1是一个DDR4的外部线路图,以下对图中跟通…

Open3D(C++) 最小二乘拟合平面(间接平差法)

目录 一、算法原理1、原理概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。 一、算法原理 1、原理概述 通过传统最小二乘法对点云数据进行平面拟合时,可将误差只归因于一个方向上,本文假设误差只存在于 Z Z

Azure 机器学习 - 无代码自动机器学习的预测需求

了解如何在 Azure 机器学习工作室中使用自动化机器学习在不编写任何代码行的情况下创建时序预测模型。 此模型将预测自行车共享服务的租赁需求。 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济本复旦硕…

linux中if条件判断,case...esac,function学习

第一、 if [ 判断式 ] ; then fi 注意&#xff1a;中括号和判断式之间的空格&#xff0c;否则会报错&#xff0c;上案例 第二个图的12行&#xff0c;中括号和条件判断如果没有空格&#xff0c;则会提示缺号‘】’&#xff0c;如第二个图最上面的提示。所以使用中括号的格式…

Nginx反向代理(入门)

前言 反向代理 --> 服务器 Nginx反向代理是一种服务器架构模式&#xff0c;通过将客户端的请求转发给后端服务器来分担服务器的负载压力&#xff0c;同时提高了系统的可用性和灵活性。它是一种常用的应用程序负载均衡技术&#xff0c;通常被用来处理大量同时连接的Web请求…

操作系统学习笔记(学习中)

计算机系统概述 1.操作系统概念 管理系统软/硬件资源&#xff0c;为程序提供服务 2.发展与分类 3.操作系统的运行环境 运行机制 指令&#xff1a;&#xff08;二进制机器指令&#xff09;&#xff0c;CPU能识别&#xff0c;执行的最基本命令 应用程序&#xff1a;程序员写…

C++prime之输入输出文件

作为一种优秀的语言&#xff0c;C必然是能操作文件的&#xff0c;但是我们要知道&#xff0c;C是不直接处理输入输出的&#xff0c;而是通过一族定义在标准库中的类型来处理IO的。 ‘流’和‘缓冲区’ ‘流’和‘缓冲区’ C程序把输入输出看作字节流&#xff0c;并且其只检查…