【Pandas入门教程】在Pandas中如何创建plots

在Pandas中如何创建plots

来源:Pandas官网:https://pandas.pydata.org/docs/getting_started/intro_tutorials/index.html

【Pandas入门教程】在Pandas中如何创建plots_第1张图片

【Pandas入门教程】在Pandas中如何创建plots_第2张图片

文章目录

    • 在Pandas中如何创建plots
        • 导包
        • 数据集准备
        • 【小结】

导包

import pandas as pd
import matplotlib.pyplot as plt

数据集准备

【空气质量数据】

空气质量数据有关使用,由 OpenAQ 提供并使用 py-openaq 包。air_quality_no2.csv N o 2 No_2 No2分别位于巴黎、安特卫普和伦敦的 FR04014、BETR801 和伦敦威斯敏斯特测量站的值。

原始数据:https://github.com/pandas-dev/pandas/tree/main/doc/data/air_quality_no2.csv

air_quality = pd.read_csv("air_quality_no2.csv", index_col=0, parse_dates=True)
air_quality.head()
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

read_csv 函数的 index_col 和 parse_dates 参数将第一列(第 0 列)定义为生成的DataFrame的索引,并将列中的日期分别转换为Timestamp时间戳对象。

我想对数据进行快速目视检查。

air_quality.plot()

【Pandas入门教程】在Pandas中如何创建plots_第3张图片

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

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

air_quality['station_paris'].plot()

【Pandas入门教程】在Pandas中如何创建plots_第4张图片

要绘制特定列,请将子集数据选择方法与 plot() 方法结合使用。因此,plot() 方法适用于Series和数据DataFrame.

我想直观地比较 N O 2 NO_2 NO2在伦敦与巴黎测量的值。

air_quality.plot.scatter(x='station_london', y='station_paris', alpha=0.5)

【Pandas入门教程】在Pandas中如何创建plots_第5张图片

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

[
    method_name
    for method_name in dir(air_quality.plot)
    if not method_name.startswith("_")
]
['area',
 'bar',
 'barh',
 'box',
 'density',
 'hexbin',
 'hist',
 'kde',
 'line',
 'pie',
 'scatter']

其中一个选项是DataFrame.plot.box()它指的是箱线图。box法适用于空气质量示例数据:

air_quality.plot.box()

【Pandas入门教程】在Pandas中如何创建plots_第6张图片

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

axs = air_quality.plot.area(figsize=(12, 4), subplots=True)

【Pandas入门教程】在Pandas中如何创建plots_第7张图片

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

我想进一步自定义、扩展或保存生成的绘图。

fig, axs = plt.subplots(figsize=(12, 4))
air_quality.plot.area(ax=axs)
axs.set_ylabel("NO$_2$ concentration")
Text(0, 0.5, 'NO$_2$ concentration')

【Pandas入门教程】在Pandas中如何创建plots_第8张图片

fig.savefig("no2_concentrations.png")

【Pandas入门教程】在Pandas中如何创建plots_第9张图片

pandas创建的每个绘图对象都是一个 Matplotlib 对象。由于 Matplotlib 提供了大量自定义绘图的选项,因此明确了熊猫和 Matplotlib 之间的链接,使 Matplotlib 能够实现 Matplotlib 对绘图的所有功能。此策略在前面的示例中应用:

【小结】

.plot.* 方法适用于系列和数据帧。

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

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


你可能感兴趣的:(非零基础自学数据分析,pandas,python,数据分析)