如何在 pandas 中创建绘图?#

如何在 pandas 中创建绘图?#

如何在 pandas 中创建绘图?#

In [1]: import pandas as pd

In [2]: import matplotlib.pyplot as plt

本教程使用的数据:

空气质量数据

在本教程中,空气质量数据有关\(NO_2\)使用,由OpenAQ提供并使用

py-openaq包。数据air_quality_no2.csv集提供\(NO_2\)

分别位于巴黎、安特卫普和伦敦的测量站FR04014、BETR801和伦敦威斯敏斯特的值。

至原始数据

In [3]: air_quality = pd.read_csv("data/air_quality_no2.csv", index_col=0, parse_dates=True)

In [4]: air_quality.head()

Out[4]:

station_antwerp station_paris station_london

datetime

2019-05-07 02:00:00 NaN NaN 23.0

2019-05-07 03:00:00 50.5 25.0 19.0

2019-05-07 04:00:00 45.0 27.7 19.0

2019-05-07 05:00:00 NaN 50.4 16.0

2019-05-07 06:00:00 NaN 61.9 NaN

笔记

使用函数的index_col和parse_dates参数分别read_csv将第一(第 0)列定义为结果的索引DataFrame,并将列中的日期转换为Timestamp对象。

我想要快速目视检查数据。

In [5]: air_quality.plot()

Out[5]:

In [6]: plt.show()

使用 时DataFrame,pandas 默认为每一列包含数字数据的创建一个线图。

我只想用巴黎的数据绘制数据表的列。

In [7]: air_quality["station_paris"].plot()

Out[7]:

In [8]: plt.show()

要绘制特定列,请

结合使用子集数据教程plot()的选择方法和

方法。因此,该plot()方法适用于Series和

DataFrame。

我想直观地比较\(NO_2\)在伦敦和巴黎测量的值。

In [9]: air_quality.plot.scatter(x="station_london", y="station_paris", alpha=0.5)

Out[9]:

In [10]: plt.show()

line除了使用该函数时的默认绘图之外plot,还可以使用许多替代方法来绘制数据。让我们使用一些标准的 Python 来概述可用的绘图方法:

In [11]: [

....: method_name

....: for method_name in dir(air_quality.plot)

....: if not method_name.startswith("_")

....: ]

....:

Out[11]:

['area',

'bar',

'barh',

'box',

'density',

'hexbin',

'hist',

'kde',

'line',

'pie',

'scatter']

笔记

在许多开发环境以及 IPython 和 Jupyter Notebook 中,使用 TAB 按钮来获取可用方法的概述,例如air_quality.plot.+ TAB。

选项之一是DataFrame.plot.box(),它指的是

箱线图。该box

方法适用于空气质量示例数据:

In [12]: air_quality.plot.box()

Out[12]:

In [13]: plt.show()

转至用户指南有关默认线图以外的绘图的介绍,请参阅有关支持的绘图样式的用户指南部分。

我希望每一列都在一个单独的子图中。

In [14]: axs = air_quality.plot.area(figsize=(12, 4), subplots=True)

In [15]: plt.show()

subplots函数的参数支持每个数据列的单独子图plot。每个 pandas 绘图函数中可用的内置选项都值得回顾。

转至用户指南用户指南中关于绘图格式的部分解释了更多格式选项。

我想进一步定制、扩展或保存结果图。

In [16]: fig, axs = plt.subplots(figsize=(12, 4))

In [17]: air_quality.plot.area(ax=axs)

Out[17]:

In [18]: axs.set_ylabel("NO$_2$ concentration")

Out[18]: Text(0, 0.5, 'NO$_2$ concentration')

In [19]: fig.savefig("no2_concentrations.png")

In [20]: plt.show()

pandas 创建的每个绘图对象都是

Matplotlib对象。由于 Matplotlib 提供了大量的选项来自定义绘图,因此使 pandas 和 Matplotlib 之间的链接显式化,从而可以将 Matplotlib 的所有功能发挥到绘图上。该策略应用在前面的示例中:

fig, axs = plt.subplots(figsize=(12, 4)) # Create an empty Matplotlib Figure and Axes

air_quality.plot.area(ax=axs) # Use pandas to put the area plot on the prepared Figure/Axes

axs.set_ylabel("NO$_2$ concentration") # Do any Matplotlib customization you like

fig.savefig("no2_concentrations.png") # Save the Figure/Axes using the existing Matplotlib method.

plt.show() # Display the plot

记住

这些.plot.*方法适用于 Series 和 DataFrame。

默认情况下,每一列都绘制为不同的元素(线、箱线图……)。

pandas 创建的任何绘图都是 Matplotlib 对象。

转至用户指南可视化页面中提供了 pandas 绘图的完整概述。

你可能也喜欢

王者荣耀排位连跪怎么办 这3个方法让你避免连跪
365bet官方投注网站

王者荣耀排位连跪怎么办 这3个方法让你避免连跪

📅 07-09 👀 112
烤鸭的做法
365bet365娱乐场

烤鸭的做法

📅 07-09 👀 4871
阴阳师胧车持续多长时间 胧车多久逃跑
be365是否安全

阴阳师胧车持续多长时间 胧车多久逃跑

📅 06-27 👀 7032
陆小凤传奇:金鹏王朝详细攻略
365bet365娱乐场

陆小凤传奇:金鹏王朝详细攻略

📅 06-30 👀 7289
《旬》字开头的组词
365bet官方投注网站

《旬》字开头的组词

📅 06-29 👀 1637
全国十大竹笋产地榜中榜
365bet官方投注网站

全国十大竹笋产地榜中榜

📅 07-05 👀 8178
主機板的CMOS主要保存哪些信息?CMOS與?
365bet365娱乐场

主機板的CMOS主要保存哪些信息?CMOS與?

📅 07-07 👀 7052
PPT转成Word文档的四种方法
365bet365娱乐场

PPT转成Word文档的四种方法

📅 07-03 👀 3444
计算机网络TCP/IP四层模型
365bet365娱乐场

计算机网络TCP/IP四层模型

📅 07-07 👀 1254