如何在 pandas 中创建图表?#

../../_images/04_plot_overview.svg
Data used for this tutorial:
  • 本教程使用了 \(NO_2\) 提供,并使用 OpenAQ 包提供的关于 py-openaq 的空气质量数据。air_quality_no2.csv 数据集分别提供了巴黎、安特卫普和伦敦的测量站 FR04014BETR801London Westminster\(NO_2\) 值。

    To raw data

    备注

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

  • 我想快速直观地检查数据。

    对于 DataFrame,pandas 默认会为每个包含数值数据的列创建一个折线图。

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

    要绘制特定列,请将 subset data tutorial 的选择方法与 plot() 方法结合使用。因此,plot() 方法可同时用于 SeriesDataFrame

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

除了使用 plot 函数时的默认 line 图之外,还有许多其他绘图方法可供选择。让我们使用一些标准的 Python 方法来了解可用的绘图方法:

备注

在许多开发环境以及 IPython 和 Jupyter Notebook 中,请使用 TAB 键概览可用方法,例如 air_quality.plot. + TAB。

其中一个选项是 DataFrame.plot.box() ,它指向 boxplotbox 方法适用于空气质量示例数据:

To user guide

有关除默认折线图之外的其他图表的介绍,请参阅用户指南中关于 supported plot styles 的部分。

  • 我想将每列绘制在单独的子图中。

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

To user guide

有关更多格式化选项,请参阅用户指南中 plot formatting 的部分。

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

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

REMEMBER

  • .plot.* 方法可同时应用于 Series 和 DataFrame。

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

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

To user guide

有关 pandas 中绘图的完整概述,请参阅 visualization pages 页面。