10个实用的Python数据可视化图表总结

2023-11-08

可视化是一种方便的观察数据的方式,可以一目了然地了解数据块。我们经常使用柱状图、直方图、饼图、箱图、热图、散点图、线状图等。

这些典型的图对于数据可视化是必不可少的。除了这些被广泛使用的图表外,还有许多很好的却很少被使用的可视化方法,这些图有助于完成我们的工作,下面我们看看有那些图可以进行。

图片

1、平行坐标图(Parallel Coordinate)

我们最多可以可视化 3 维数据。但是我们有时需要可视化超过 3 维的数据才能获得更多的信息。我们经常使用 PCA 或 t-SNE 来降维并绘制它。在降维的情况下,可能会丢失大量信息。在某些情况下,我们需要考虑所有特征, 平行坐标图有助于做到这一点。

图片

上面的图片。横线(平行轴)表示鸢尾花的特征(花瓣长、萼片长、萼片宽、花瓣宽)。分类是Setosa, Versicolor和Virginica。上图将该物种编码为Setosa→1,Versicolor→2,Virginica→3。每个平行轴包含最小值到最大值(例如,花瓣长度从1到6.9,萼片长度从4.3到7.9,等等)。例如,考虑花瓣长度轴。这表明与其他两种植物相比,濑蝶属植物的花瓣长度较小,其中维珍属植物的花瓣长度最高。

有了这个图,我们可以很容易地获得数据集的总体信息。数据集是什么样子的?让我们来看看。

图片

让我们用Plotly Express库[1]可视化数据。Plotly库提供了一个交互式绘图工具。

 import plotly.express as px
 df = px.data.iris()
 fig = px.parallel_coordinates(df, color="species_id", labels={"species_id": "Species",
                "sepal_width": "Sepal Width", "sepal_length": "Sepal Length",
                "petal_width": "Petal Width", "petal_length": "Petal Length", },
                              color_continuous_scale=px.colors.diverging.Tealrose,
                              color_continuous_midpoint=2)
 fig.show()

图片

除了上图以外我们还可以使用其他库,如pandas、scikit-learn和matplotlib来绘制并行坐标。

2、六边形分箱图 (Hexagonal Binning)

六边形分箱图是一种用六边形直观表示二维数值数据点密度的方法。

 ax = df.plot.hexbin(x='sepal_width', y='sepal_length', gridsize=20,color='#BDE320')

图片

我考虑了上一节的数据集来绘制上面的六边形分箱图。Pandas 允许我们绘制六边形 binning [2]。我已经展示了用于查找 sepal_width 和 sepal_length 列的密度的图。

如果仔细观察图表,我们会发现总面积被分成了无数个六边形。每个六边形覆盖特定区域。我们注意到六边形有颜色变化。六边形有的没有颜色,有的是淡绿色,有的颜色很深。根据图右侧显示的色标,颜色密度随密度变化。比例表示具有颜色变化的数据点的数量。六边形没有填充颜色,这意味着该区域没有数据点。

其他库,如 matplotlib、seaborn、bokeh(交互式绘图)也可用于绘制它。

3、等高线密度图(Contour )

二维等高线密度图是可视化特定区域内数据点密度的另一种方法。这是为了找到两个数值变量的密度。例如,下面的图显示了在每个阴影区域有多少数据点。

 import plotly.express as px
 fig = px.density_contour(df, x="sepal_width", y="sepal_length")
 fig.update_traces(contours_coloring="fill", contours_showlabels = True)
 fig.show()

图片

为了生成上面的图表,我这里使用了plotly库,因为它可以方便地绘制交互式的图表。我们这里绘制了两个变量 sepal_width 和 sepal_length 的密度。

当然,也可以使用其他库,如seaborn、matplotlib等。

4、QQ-plot

QQ plot是另一个有趣的图。QQ是Quantile - Quantile plot的缩写(Quantile/percentile是一个范围,在这个范围内数据下降了指定百分比。例如,第10个quantile/percentile表示在该范围下,找到了10%的数据,90% 超出范围)。这是一种直观地检查数值变量是否服从正态分布的方法。让我解释一下它是如何工作的。

图片

图(a)是样本分布;(b) 是标准正态分布。对于样本分布,数据范围从 10 到 100(100% 数据在 10 到 100 之间)。但对于标准正态分布,100% 的数据在 -3 到 3(z 分数)的范围内。在 QQ 图中,两个 x 轴值均分为 100 个相等的部分(称为分位数)。如果我们针对 x 和 y 轴绘制这两个值,我们将得到一个散点图。

图片

散点图位于对角线上。这意味着样本分布是正态分布。如果散点图位于左边或右边而不是对角线,这意味着样本不是正态分布的。

导入必要的库

 import pandas as pd
 import numpy as np
 import matplotlib.pyplot as plt
 import seaborn as sns

生成正态分布数据。

 np.random.seed(10)
 # Generate Univariate Observations
 gauss_data = 5 * np.random.randn(100) + 50

绘制数据点的分布。

 sns.histplot(data=gauss_data, kde=True)

图片

该图显示数据是正态分布的。我们用数据点做qq-plot来检验它是否正态分布。

 import statsmodels.api as sm
 # q-q plot
 sm.qqplot(gauss_data, line='s')
 plt.show()

图片

该图显示散点位于对角线上。所以它是正态分布的。

5、小提琴图(Violin Plot)

小提琴图与箱线图相关。我们能从小提琴图中获得的另一个信息是密度分布。简单来说就是一个结合了密度分布的箱线图。我们将其与箱线图进行比较。

在小提琴图中,小提琴中间的白点表示中点。实心框表示四分位数间距 (IQR)。上下相邻值是异常值的围栏。超出范围,一切都是异常值。下图显示了比较。

图片

让我们看看小提琴图的可视化

 import seaborn as sns
 sns.violinplot(data=df, y="sepal_width")

图片

我们还可以通过传递名称来绘制不同物种的小提琴图。

 import seaborn as sns
 sns.violinplot(data=df,x='species', y="sepal_width")

图片

还可以使用其他库,如plotly、matplotlib等来绘制小提琴图。

6、箱线图的改进版(Boxen plot)

Boxenplot 是 seaborn 库引入的一种新型箱线图。对于箱线图,框是在四分位数上创建的。但在 Boxenplot 中,数据被分成更多的分位数。它提供了对数据的更多内存。

鸢尾花数据集的 Boxenplot 显示了 sepal_width 的数据分布。

 sns.boxenplot(x=df["sepal_width"])

图片

上图显示了比箱线图更多的盒。这是因为每个框代表一个特定的分位数。

 sns.boxenplot(data=df, x="species",y='sepal_width')

图片

不同物种sepal_width的Boxenplot图。

7、点图

下图中有一些名为误差线的垂直线和其他一些连接这些垂直线的线。让我们看看它的确切含义。

图片

点图是一种通过上图中显示的点的位置来表示数值变量集中趋势的方法,误差条表示变量的不确定性(置信区间)[4]。绘制线图是为了比较不同分类值的数值变量的变异性 [4]。

让我们举一个实际的例子——

我们继续使用 seaborn 库和 iris 数据集(在平行坐标部分中提到)。

 import seaborn as sns
 sns.pointplot(data=df,x="species", y="sepal_width")

在这里插入图片描述

该图表显示了不同花的萼片宽度的变异性。我们还可以绘制多个点图。

8、分簇散点图(Swarm plot)

Swarm plot 是另一个受“beeswarm”启发的有趣图表。通过此图我们可以轻松了解不同的分类值如何沿数值轴分布 [5]。它在不重叠数据点的情况下绘制数据。但它不适用于大型数据集。

 import seaborn as sns
 sns.swarmplot(data=df,x="species", y="sepal_width")

图片

9、旭日图(Sunburst Chart)

它是圆环图或饼图的定制版本,将一些额外的层次信息集成到图中 [7]。

图片

整个图表被分成几个环(从内到外)。它保存层次结构信息,其中内环位于层次结构的顶部,外环位于较低的[7]阶。

图片

 import plotly.express as px
 df = px.data.tips()

图片

绘制旭日图

 fig = px.sunburst(df, path=['sex', 'day', 'time'], values='total_bill', color='time')
 fig.show()

图片

sunburst类的path属性提供了层次结构,其中性别位于层次结构的顶部,然后是日期和时间。

10、词云(Word Cloud)

词云图的想法非常简单。假设我们有一组文本文档。单词有很多,有些是经常出现的,有些是很少出现的。在词云图中,所有单词都被绘制在特定的区域中,频繁出现的单词被高亮显示(用较大的字体显示)。有了这个词云,我们可以很容易地找到重要的客户反馈,热门的政治议程话题等。

 import pandas as pd
 data=pd.read_csv('/work/android-games.csv')
 data.head()

图片

我们统计每个类别的数据数量

 data.category.value_counts()

图片

我们进行可视化。

 #importing the module from wordcloud library
 from wordcloud import WordCloud
 import matplotlib.pyplot as plt
 
 #creating a text from the category column by taking only the 2nd part of the category.
 text = " ".join(cat.split()[1] for cat in data.category)
 
 #generating the cloud
 word_cloud = WordCloud(collocations = False, background_color = 'black').generate(text)
 plt.imshow(word_cloud, interpolation='bilinear')
 plt.axis("off")
 plt.show()

图片

该图表显示了频率最高的所有类别。我们也可以用这个图从文本中找到经常出现的单词。

总结

数据可视化是数据科学中不可缺少的一部分。在数据科学中,我们与数据打交道。手工分析少量数据是可以的,但当我们处理数千个数据时它就变得非常麻烦。如果我们不能发现数据集的趋势和洞察力,我们可能无法使用这些数据。希望上面介绍的的图可以帮助你深入了解数据。

https://plotly.com/python/parallel-coordinates-plot/

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.plot.hexbin.html

Hintze, V. P. A Box Plot-Density Trace Synergism. Am. Stat, (52), 181 (Open Access Journal).

seaborn.pointplot — seaborn 0.12.1 documentation (pydata.org)

seaborn.swarmplot — seaborn 0.12.1 documentation (pydata.org)

Create a sunburst chart in Office — Microsoft Support

Sunburst charts in Python (plotly.com)

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

10个实用的Python数据可视化图表总结 的相关文章

随机推荐

  • 基于深度相机的三维重建技术

    本文转载自http www bugevr com zblog id 14 原创作者bugeadmin 转载至我的博客 主要是为了备份 日后查找方便 谢谢原创作者的分享 三维重建 3D Reconstruction 技术一直是计算机图形学和计
  • [Spring学习]07 Spring AOP面向切面编程

    目录 一 什么是Aop 二 Aop相关术语 三 Aop的优点 一 什么是Aop OOP Object Oriented Programming 面向对象编程 AOP Aspect Oriented Programming 面向切面编程 OO
  • conda下多环境(environment)及spyder jupyter lab配置

    结论速递 借助conda进行多environment环境管理 并且这些enviroment都可以共用IDE spyder以及jupyter lab 由于python迭代很快 需要注意的是本文记录时间是2021 8 10 系统是Windows
  • 8.Docker容器镜像仓库存储原理(前世今身)与搬运技巧

    文章目录 0x00 镜像如何炼成 1 OCI 标准协议 image spec 镜像规范 runtime spec 运行时规范 distribution spec 镜像仓库规范 2 Dockerfile 3 基础镜像 0x01 镜像存储原理
  • Js逆向之某股打新网(返回数据AES加密)

    目标网站 aHR0cHM6Ly93d3cubGlhbmdodWFpcG8uY29tLyMv 1 抓包分析 F12 那么接下来就是找加密的位置了 这里先提供两个思路 1 简单看了一下data数据 发现有点像base64 大部分加密都会经过这个
  • LINUX查询服务器对应端口的实际服务器信息

    1 通过端口查询进程ID netstat anp grep 8080 2 通过进程ID查询启动密令 ps ef grep 进程ID 3 查看启动命令查询是否为代理 如果是代理 通过cat查看实际的服务器IP ProxyPass http 1
  • UML之一综合设计例题

    某汽车租赁连锁公司计划开发一套信息系统 主要需求如下 1 客户可以通过不同的方式 包括电话 前台 网上 预定车辆 2 系统能够保存客户的预定申请单 3 系统能够保存客户的历史记录 4 工作人员可以处理客户申请 5 技术人员可以保存对车辆检修
  • 实验5 Spark SQL 编程初级实践

    实验5 Spark SQL 编程初级实践 一 实验目的 1 通过实验掌握Spark SQL的基本编程方法 2 熟悉RDD到DataFrame的转化方法 3 熟悉利用Spark SQL管理来自不同数据源的数据 二 实验平台 操作系统 Linu
  • 复旦计算机学硕408,又一所院校专业课改投408——复旦大学

    原标题 又一所院校专业课改投408 复旦大学 复旦大学简称 复旦 位于中国上海 位列211工程 985工程 入选双一流 是一所综合性研究型的全国重点大学 学校现有一级学科国家重点学科11个 二级学科国家重点学科19个 国家重点 培育 学科3
  • 类的加载详解

    到目前为止 我们已经写了无数个类了 但是具体它在Java虚拟机中到底是怎么实现的 我们还从未探索过 今天就带着大家一起初探一下jvm对类加载的过程 目前博主技术水平有限 以后随着技术的更加成熟 会更新博客内容的 也欢迎更多小伙伴持续关注 和
  • Ubuntu10下SSH2协议安装

    Ubuntu10下SSH2协议安装 SSH2是一套安全通讯协议框架 早期的SSH1由于存在安全漏洞 现在已经不用了 基于SSH2协议的产品目前主要有openssh putty SSH Secure Shell Client等 安装了SSH2
  • 基础配置Tomcat及使用

    配置Tomcat 背景简介 目前很多网站由java编写 所以解析Java程序需要有相关的软件来编写完成 Tomcat是其中之一 Tomcat技术先进 性能稳定且免费 是目前比较流行的web应用服务器 Tomcat是一个轻量化级应用服务器 实
  • jaspersoft studio动态图片传输

    业务需求简述 在实际业务开发中需要动态生成PDF 其中包含客户签字图片 技术栈 JasperReport Jaspersoft Studio软件 动态图片传输流程 jaspersoft studio 拖入image到工作区 选择最后一项点击
  • java爬取人人网数据

    通过httpclient何httpparser两个类爬人人网中得数据 其中的详细步骤以及文档下面详细介绍 爬人人网相关代码 SuppressWarnings deprecation public class RenRen 输入用户名及密码
  • 1.6 起步 - 初次运行 Git 前的配置

    1 6 起步 初次运行 Git 前的配置 版本说明 版本 作者 日期 备注 0 1 loon 2019 3 19 初稿 目录 文章目录 1 6 起步 初次运行 Git 前的配置 版本说明 目录 初次运行 Git 前的配置 1 用户信息 2
  • 怀旧服服务器荣誉系统是啥,魔兽世界怀旧服:荣誉系统要开了?大元帅吸引人,军衔要不要冲?...

    魔兽世界怀旧服马上开荣誉系统了 相信很多pvp玩家都会有冲军衔的目标 因为军衔是实力和荣誉的象征 有玩家清晰记得 到了R13更新那天 跟另外两个元帅法师 一共3个元帅套 站在铁炉堡银行门口 围观的人超多 那种自豪和成就感难以言喻 大家知道大
  • echarts 饼图的指示线(labelline) 问题

    数据过多 且几个比较小的数据在一块扎堆 series name type pie center 25 50 radius 45 60 minAngle 10 设置每块扇形的最小占比 avoidLabelOverlap false hover
  • linux一次性创建多个文件/文件夹

    1 创建多个文件 touch file 1 10 注 创建10个文件 文件名file0 file1 file10 2 创建多个目录 mkdir folder 1 10 注 一次性创建10个文件夹 目录名为folder1 folder2 fo
  • 【Hive报错】Hive报错Expression Not In Group By Key解决方法

    SQL例如以下会报错 select sum time as time roadCoding upstreamOrDownstream from historicalroaddata where 报以下roadcoding upstreamO
  • 10个实用的Python数据可视化图表总结

    可视化是一种方便的观察数据的方式 可以一目了然地了解数据块 我们经常使用柱状图 直方图 饼图 箱图 热图 散点图 线状图等 这些典型的图对于数据可视化是必不可少的 除了这些被广泛使用的图表外 还有许多很好的却很少被使用的可视化方法 这些图有