使用 Pandas 在 Python 中绘制数据
创始人
2024-03-02 05:08:20
0

Pandas 是一个非常流行的 Python 数据操作库。学习怎样使用它的 API 绘制数据。

在有关基于 Python 的绘图库的系列文章中,我们将对使用 Pandas 这个非常流行的 Python 数据操作库进行绘图进行概念性的研究。Pandas 是 Python 中的标准工具,用于对进行数据可扩展的转换,它也已成为从 CSV 和 Excel 格式导入和导出数据的流行方法。

除此之外,它还包含一个非常好的绘图 API。这非常方便,你已将数据存储在 Pandas DataFrame 中,那么为什么不使用相同的库进行绘制呢?

在本系列中,我们将在每个库中制作相同的多条形柱状图,以便我们可以比较它们的工作方式。我们使用的数据是 1966 年至 2020 年的英国大选结果:

Matplotlib UK election results

自行绘制的数据

在继续之前,请注意你可能需要调整 Python 环境来运行此代码,包括:

  • 运行最新版本的 Python(用于 LinuxMacWindows 的说明)
  • 确认你运行的是与这些库兼容的 Python 版本

数据可在线获得,并可使用 Pandas 导入:

import pandas as pd
df = pd.read_csv('https://anvil.works/blog/img/plotting-in-python/uk-election-results.csv')

现在我们已经准备好了。在本系列文章中,我们已经看到了一些令人印象深刻的简单 API,但是 Pandas 一定能夺冠。

要在 x 轴上绘制按年份和每个党派分组的柱状图,我只需要这样做:

import matplotlib.pyplot as plt
ax = df.plot.bar(x='year')
plt.show()

只有四行,这绝对是我们在本系列中创建的最棒的多条形柱状图。

我以宽格式使用数据,这意味着每个党派都有一列:

        year  conservative  labour  liberal  others
0       1966           253     364       12       1
1       1970           330     287        6       7
2   Feb 1974           297     301       14      18
..       ...           ...     ...      ...     ...
12      2015           330     232        8      80
13      2017           317     262       12      59
14      2019           365     202       11      72

这意味着 Pandas 会自动知道我希望如何分组,如果我希望进行不同的分组,Pandas 可以很容易地重组 DataFrame

Seaborn 一样,Pandas 的绘图功能是 Matplotlib 之上的抽象,这就是为什么要调用 Matplotlib 的 plt.show() 函数来实际生成绘图的原因。

看起来是这样的:

pandas unstyled data plot

看起来很棒,特别是它又这么简单!让我们对它进行样式设置,使其看起来像 Matplotlib 的例子。

调整样式

我们可以通过访问底层的 Matplotlib 方法轻松地调整样式。

首先,我们可以通过将 Matplotlib 颜色表传递到绘图函数来为柱状图着色:

from matplotlib.colors import ListedColormap
cmap = ListedColormap(['#0343df', '#e50000', '#ffff14', '#929591'])
ax = df.plot.bar(x='year', colormap=cmap)

我们可以使用绘图函数的返回值设置坐标轴标签和标题,它只是一个 Matplotlib 的 Axis 对象

ax.set_xlabel(None)
ax.set_ylabel('Seats')
ax.set_title('UK election results')

这是现在的样子:

pandas styled plot

这与上面的 Matplotlib 版本几乎相同,但是只用了 8 行代码而不是 16 行!我内心的代码高手非常高兴。

抽象必须是可转义的

与 Seaborn 一样,向下访问 Matplotlib API 进行细节调整的能力确实很有帮助。这是给出抽象紧急出口使其既强大又简单的一个很好的例子。


via: https://opensource.com/article/20/6/pandas-python

作者:Shaun Taylor-Morgan 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

【如何在 Pandas D...
在 Pandas DataFrame 中插入一个新列。幸运的是&#...
2025-05-30 17:45:33
【Python】如何使用P...
如何使用Pandas进行数据可视化?1. 如何创建简...
2025-05-29 08:27:25
Pandas数据操作详解-...
pandas简介pandas 是基于NumPy 的一种工具...
2025-05-29 04:37:44
不指定“on”进行pand...
在pandas中,可以使用concat函数来合并两个或多个Data...
2025-01-12 11:31:04
不正确和奇怪的Unix时间...
要将不正确和奇怪的Unix时间转换为日期时间,可以使用Pandas...
2025-01-11 18:02:02
不在Pandas Data...
在Pandas DataFrame中,可以使用.reset_ind...
2025-01-11 15:31:43

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...