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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi