9.可视化数量


文档摘要

可视化数量 插图由@sketchthedocs绘制 :---: 可视化数量 - 插图由@nitya绘制 在这节课中,你将探索如何使用Python库之一来学习如何创建围绕数量概念的有趣可视化。通过一个清理过的关于明尼苏达州鸟类的数据集,你可以了解许多关于当地野生动物的有趣事实。 课前测验 使用Matplotlib观察翼展 一个可以创建简单和复杂图表的优秀库是Matplotlib。一般来说,使用这些库进行数据绘图的过程包括识别你想针对的数据框部分,对数据进行必要的转换,分配其x轴和y轴值,决定展示哪种类型的图表,然后显示图表。Matplotlib提供了大量的可视化选项,但在这个课程中,我们将重点关注最适合用于可视化数量的那些:折线图、散点图和条形图。

可视化数量

插图由@sketchthedocs绘制
可视化数量 - 插图由@nitya绘制

在这节课中,你将探索如何使用Python库之一来学习如何创建围绕数量概念的有趣可视化。通过一个清理过的关于明尼苏达州鸟类的数据集,你可以了解许多关于当地野生动物的有趣事实。

课前测验

使用Matplotlib观察翼展

一个可以创建简单和复杂图表的优秀库是Matplotlib。一般来说,使用这些库进行数据绘图的过程包括识别你想针对的数据框部分,对数据进行必要的转换,分配其x轴和y轴值,决定展示哪种类型的图表,然后显示图表。Matplotlib提供了大量的可视化选项,但在这个课程中,我们将重点关注最适合用于可视化数量的那些:折线图、散点图和条形图。

✅ 使用最合适的图表来适应你的数据结构和你想讲述的故事。

  • 分析时间趋势:折线图
  • 比较值:条形图、柱状图、饼图、散点图
  • 显示各部分与整体的关系:饼图
  • 显示数据分布:散点图、条形图
  • 显示趋势:折线图、柱状图
  • 显示值之间的关系:折线图、散点图、气泡图

如果你有一个数据集并需要发现某个项目包含了多少,那么你首先需要做的任务之一就是检查其值。

✅ 对于Matplotlib有非常好的“速查表”在这里

关于鸟类翼展构建折线图

打开这节课文件夹根目录下的notebook.ipynb文件并添加一个单元格。

注意:数据存储在本仓库的根目录下,在/data文件夹中。

import pandas as pd import matplotlib.pyplot as plt birds = pd.read_csv('data/birds.csv') birds.head()

这些数据是一些文本和数字的混合:

名称 科学名称 类别 保护状况 最小长度 最大长度 最小体重 最大体重 最小翼展 最大翼展
0 黑腹啸鸭 Dendrocygna autumnalis 鸭子/鹅/水禽 雁形目 鸭科 Dendrocygna LC 47 56 652 1020 76 94
1 斑嘴啸鸭 Dendrocygna bicolor 鸭子/鹅/水禽 雁形目 鸭科 Dendrocygna LC 45 53 712 1050 85 93
2 雪雁 Anser caerulescens 鸭子/鹅/水禽 雁形目 鸭科 Anser LC 64 79 2050 4050 135 165
3 罗斯雁 Anser rossii 鸭子/鹅/水禽 雁形目 鸭科 Anser LC 57.3 64 1066 1567 113 116
4 大白额雁 Anser albifrons 鸭子/鹅/水禽 雁形目 鸭科 Anser LC 64 81 1930 3310 130 165

让我们从绘制一些数值数据开始,使用基本的折线图。假设你想查看这些有趣的鸟类的最大翼展。

wingspan = birds['MaxWingspan'] wingspan.plot()

最大翼展

你立刻注意到了什么?似乎至少有一个异常值——那可真是一个巨大的翼展!2300厘米的翼展等于23米——明尼苏达州是否有翼龙在飞翔?让我们调查一下。

虽然你可以在Excel中快速排序以找到这些异常值(可能是拼写错误),但继续通过图表进行可视化过程。

为x轴添加标签以显示涉及哪些种类的鸟:

plt.title('Max Wingspan in Centimeters') plt.ylabel('Wingspan (CM)') plt.xlabel('Birds') plt.xticks(rotation=45) x = birds['Name'] y = birds['MaxWingspan'] plt.plot(x, y) plt.show()

带有标签的翼展

即使将标签旋转到45度,标签还是太多,无法阅读。让我们尝试另一种策略:仅标记那些异常值,并将标签放在图表内。你可以使用散点图来腾出更多空间进行标注:

plt.title('Max Wingspan in Centimeters') plt.ylabel('Wingspan (CM)') plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) for i in range(len(birds)): x = birds['Name'][i] y = birds['MaxWingspan'][i] plt.plot(x, y, 'bo') if birds['MaxWingspan'][i] > 500: plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12) plt.show()

这里发生了什么?你使用了tick_params来调整标签的位置。你将每个异常值的翼展加上了它最大翼展的5%。你可能不会遇到翼展达到25米的秃鹰,但如果真有,请告诉我们!让我们创建一个新的数据框,排除这两个异常值:

plt.title('Max Wingspan in Centimeters') plt.ylabel('Wingspan (CM)') plt.xlabel('Birds') plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False) for i in range(len(birds)): x = birds['Name'][i] y = birds['MaxWingspan'][i] if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']: plt.plot(x, y, 'bo') plt.show()

通过过滤掉异常值,你的数据现在更加连贯且易于理解。

翼展的散点图

现在我们有了一个更干净的数据集(至少在翼展方面),让我们进一步了解这些鸟类。

虽然折线图和散点图可以显示数据值及其分布的信息,但我们希望考虑这个数据集中固有的值。你可以创建可视化来回答关于数量的问题:

有多少类别的鸟类,它们的数量是多少?
有多少鸟类是灭绝的、濒危的、稀有的或常见的?
在林奈术语中,各种属和目的数量是多少?

探索条形图

当你需要显示数据分组时,条形图非常实用。让我们探索这个数据集中存在的鸟类类别,看看哪个类别的数量最多。

在笔记本文件中,创建一个基本的条形图

✅ 注意,你可以过滤掉上一节中识别出的两个异常鸟类,也可以编辑它们翼展中的拼写错误,或者在这些不依赖于翼展值的练习中保留它们。

如果你想创建一个条形图,可以选择你想关注的数据。条形图可以从原始数据创建:

birds.plot(x='Category', kind='bar', stacked=True, title='Birds of Minnesota')

完整的数据作为条形图

然而,由于数据太多,这个条形图不可读。你需要选择只想绘制的数据,因此让我们看看根据类别分类的鸟类长度。

过滤数据以只包括鸟类的类别。

✅ 注意你使用Pandas管理数据,然后让Matplotlib进行绘图。

由于类别很多,你可以垂直显示此图表并调整其高度以容纳所有数据:

category_count = birds.value_counts(birds['Category'].values, sort=True) plt.rcParams['figure.figsize'] = [6, 12] category_count.plot.barh()

类别和长度

这个条形图展示了每个类别的鸟类数量的良好视图。眨眼之间,你看到该地区鸟类数量最多的类别是鸭子/鹅/水禽。明尼苏达州号称拥有“一万多个湖泊”,所以这并不令人惊讶!

✅ 尝试对这个数据集进行其他计数。有什么让你惊讶的地方吗?

比较数据

你可以通过创建新的轴来尝试不同组数据的比较。尝试基于鸟类类别的最大长度进行比较:

maxlength = birds['MaxLength'] plt.barh(y=birds['Category'], width=maxlength) plt.rcParams['figure.figsize'] = [6, 12] plt.show()

比较数据

这里没有什么令人惊讶的:与鹈鹕或鹅相比,蜂鸟具有最小的最大长度。当数据逻辑上合理时,这是件好事!

你可以通过叠加数据创建更有趣的条形图可视化。让我们在一个给定的鸟类类别上叠加最小长度和最大长度:

minLength = birds['MinLength'] maxLength = birds['MaxLength'] category = birds['Category'] plt.barh(category, maxLength) plt.barh(category, minLength) plt.show()

在这张图中,你可以看到每个鸟类类别的最小长度和最大长度范围。根据这些数据,你可以安全地说,越大的鸟,其长度范围越大。这很有趣!

叠加值

挑战

这个鸟类数据集提供了关于特定生态系统中不同类型鸟类的大量信息。在网上搜索,看看是否能找到其他鸟类导向的数据集。练习围绕这些鸟类构建图表和图形,以发现你之前不知道的事实。

课后测验

复习与自学

这第一节课已经为你提供了一些关于如何使用Matplotlib可视化数量的信息。做一些关于如何处理数据集以进行可视化的研究。Plotly是一个我们不会在这节课中涉及的工具,所以请查看它可以提供的内容。

作业

线条、散点图和条形图

**声明**: 本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。

发布者: 作者: 转发
评论区 (0)
U