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

2024-08-27 16:28

本文主要是介绍10个实用的Python数据可视化图表总结!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

在文章开始之前打个小广告——给大家准备了一份python学习大礼包(学习方法、思维导图、练习项目、书籍、网课)

点击领取哦!

在这里插入图片描述

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 web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
Python所有方向的学习路线图,清楚各个方向要学什么东西
100多节Python课程视频,涵盖必备基础、爬虫和数据分析
100多个Python实战案例,学习不再是只会理论
华为出品独家Python漫画教程,手机也能学习
历年互联网企业Python面试真题,复习时非常方便******

在这里插入图片描述

这篇关于10个实用的Python数据可视化图表总结!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1112181

相关文章

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过