Pandas PlatoBlockchain 数据智能的数据可视化。 垂直搜索。 哎。

Pandas 数据可视化

到目前为止,Pandas 一直在数据预处理阶段帮助我们。 虽然,在一个例子中,在创建直方图时,我们还使用了 Pandas 的另一个模块—— plotting.

到目前为止,我们有意避免了,因为更早地介绍它会引发比它回答的问题更多的问题。 即,熊猫 Matplotlib 是如此普遍,无处不在,以至于 Pandas 已经开始集成 Matplotlib 的功能。 它 严重 依赖 Matplotlib 进行任何实际绘图,您会发现源代码中包含许多 Matplotlib 函数。 或者,您可以使用其他后端进行绘图,例如 Plotly背景虚化.

但是,Pandas 还向我们介绍了一些情节 并不 Matplotlib 标准绘图类型的一部分,例如 关键DE, 安德鲁斯曲线, 引导图散点矩阵.

plot() 熊猫的功能 DataFrame 使用指定的后端 plotting.backend,并取决于 kind 参数——使用给定的库生成一个图。 由于其中有很多重叠 - 没有必要涵盖情节类型,例如 line, bar, histscatter. 他们将使用与我们迄今为止使用 Matplotlib 所做的相同的代码生成大致相同的图。

我们只会简要地看一下 plot() 功能,因为到目前为止已经探索了潜在的机制。 相反,让我们关注一些我们 不能 已经很容易使用 Matplotlib。

这将是一个非常短的章节,因为与 Matplotlib 相比,Pandas 的绘图和可视化功能显得苍白无力——但了解其中的一些功能以及了解从中绘图的能力仍然很有用 DataFrames 直接。

数据框.plot() 功能

plot() 函数接受 xy 功能,以及 kind 争论。 或者,为了避免 kind 参数,你也可以调用 DataFrame.plot.kind() 相反,并传入 xy 功能。

的可接受值 kind 论据是: line, bar, barh (单杠), hist, box, kde, density (同义词 kde), area, pie, scatterhexbin (类似于热图)。

import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] df_eu.plot.bar(x = 'Year', y = 'Value')
df_eu.plot.line(x = 'Year', y = 'Value')
df_eu.plot.box(x='Value') plt.show()

而不是提供 Series 像我们为 Matplotlib 所做的那样的实例——它足以提供 列名,并且由于您正在调用 plot() 功能上 DataFrame 您正在可视化,Pandas 很容易将这些字符串值映射到适当的列名。

这些调用中的每一个都会产生一个新的 Figure 实例并在其上绘制适当的值:

Pandas PlatoBlockchain 数据智能的数据可视化。 垂直搜索。 哎。

在同一个坐标轴上绘制多个坐标轴 Figure,你可以做一个 Figure 和一个或多个 Axes 通过 plt.subplots() 并分配适当的 Axesax 每个的参数 plot.plot_type() 拨打:

import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] fig, ax = plt.subplots(3, 1) df_eu.plot.box(x='Value', ax = ax[0])
df_eu.plot.line(x = 'Year', y = 'Value', ax = ax[1])
df_eu.plot.bar(x = 'Year', y = 'Value', rot = 45, ax = ax[2]) plt.show()

一些标准参数,例如 rotation 争论实际上是不同的 plot() 电话。 例如, rotation 缩短为 rot. 这使得它有点棘手 只是切换 在 Matplotlib 和 Pandas 之间,因为你很可能最终会进入文档页面,只是检查哪些参数可以应用,哪些不能应用。

现在,而不是创建一个新的 Figure or Axes 例如,这些地块中的每一个都将驻扎在适当的 Axes 我们为他们提供的实例:

Pandas PlatoBlockchain 数据智能的数据可视化。 垂直搜索。 哎。

一般来说,使用 Pandas 绘图既方便又快捷——但即便如此,要绘制条形图、线图和箱线图,您可能还是希望使用 Matplotlib。 它既是 Pandas 不可避免地使用的底层引擎,也有更多的自定义选项,你不必记住一组可以与 Pandas 绘图一起使用的新参数。

话虽如此,对于某些情节,您可能更喜欢 熊猫,因为它们必须在 Matplotlib 中手动制作,而且其中一些制作起来非常麻烦,不值得付出努力,例如 KDE 行。

熊猫的 绘制 模块

什么是 DataFrame就可视化而言,我们必须提供的服务对我们来说并不陌生。 但是,他们调用的底层模块, pandas.plotting 做。 的 plotting 模块有几个我们可以使用的函数,比如 autocorrelation_plot(), bootstrap_plot()scatter_matrix().

这些中的每一个都接受一个 Series 或者 DataFrame,这取决于他们生成的可视化类型,以及用于绘图规范和样式目的的某些参数。

自助图

引导 是随机抽样(有放回)数据集并计算准确度度量的过程,例如 偏见, 方差置信区间 对于随机样本。 “with replacement”,在实际意义上,意味着可以再次选择每个随机选择的元素。 无需更换 意味着在每个随机选择的元素之后,它会从下一个样本的池中移除。

A 自助图,由 Pandas 创建,基于样本引导数据集的均值、中值和中值统计 size,之后该图随后显示为 plt.show(). 默认参数为 sizesamples ,那恭喜你, 50500

这意味着对于一个特征,我们采样 50 值。 然后,为这 50 个值生成 50 个元素的子样本(合成数据),并为它们计算汇总统计量(均值/中值/中值)。 重复这个过程 500 次,所以最后,我们得到了 500 个汇总统计数据:

import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('./datasets/gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] pd.plotting.bootstrap_plot(df_eu['Value']) plt.show()

Pandas PlatoBlockchain 数据智能的数据可视化。 垂直搜索。 哎。

自相关图

自相关图 用于检查时间序列数据的数据随机性。 多种的 自相关 是针对不同的时间戳计算的,如果数据是真正随机的——相关性将接近于零。 如果不是——相关性将大于零。

让我们绘制两个自相关图——一个用我们的 功能,一个与 Series 填充随机值:

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
# Filter DataFrame for the EU
df_eu = df.loc[df['Country Name'] == 'European Union']
# Generate 50 random integers between 0 and 100, and turn into a Series
random_series = pd.Series(np.random.randint(0, 100, size=50)) # Plot Autocorrelation Plot for the *Value* feature
pd.plotting.autocorrelation_plot(df_eu['Value'])
# Plot Autocorrelation Plot for the *random_series*
pd.plotting.autocorrelation_plot(random_series) plt.show()

的自相关图 random_series 应该围绕 0,因为它是随机数据,而图 Value 功能不会:

Pandas PlatoBlockchain 数据智能的数据可视化。 垂直搜索。 哎。

值得注意的是,自相关测量一个 申请 随机性,因为不相关,但非随机数据确实存在。 如果它是非随机的,但没有任何显着的相关性——自相关图将表明数据是随机的。

散点矩阵

散点矩阵 绘制一个 所有特征对所有特征的散点图。 由于这不可避免地会将每个特征与其自身进行比较—— 对角线 发生这种情况的地方通常被替换为 直方图 该功能,而不是散点图。 散点矩阵 也被称为 对图,而 Seaborn 提供了一个 pairplot() 功能只是为了这个。

scatter_matrix() 函数接受一个 DataFrame 并为其所有数值特征生成一个散点矩阵,并返回一个二维数组 Axes 构成散点矩阵的实例。 要对它们进行任何调整,您需要遍历它们:

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('worldHappiness2019.csv') axes = pd.plotting.scatter_matrix(df, diagonal='hist') for ax in axes.flatten(): # Rotate back to 0 degrees since they're automatically rotated by 90 ax.yaxis.label.set_rotation(0) # As to not overlap with the Axes instances, set the ticklabel # alignment to 'right' ax.yaxis.label.set_ha('right') plt.show()

这导致所有特征相对于所有其他特征的相当大的散点矩阵:

Pandas PlatoBlockchain 数据智能的数据可视化。 垂直搜索。 哎。

你也可以传入 diagonal 参数,它接受 'hist' or 'kde' 指定你想在对角线上绘制什么类型的分布图,以及 alpha, 指定散点图中标记的半透明度。

时间戳记:

更多来自 堆栈滥用