Визуализация данных с помощью Pandas PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Визуализация данных с пандами

До сих пор Pandas помогал нам на этапе предварительной обработки данных. Хотя в одном случае при создании гистограмм мы также использовали другой модуль от Pandas — plotting.

Мы намеренно избегали этого до сих пор, потому что введение его раньше вызвало бы больше вопросов, чем дало бы ответов. А именно панды и Matplotlib был настолько распространенным вездесущим дуэтом, что Pandas начал интегрировать функциональность Matplotlib. Это сильно полагается на Matplotlib для выполнения любых реальных графиков, и вы найдете множество функций Matplotlib, заключенных в исходный код. В качестве альтернативы вы можете использовать другие бэкэнды для построения графиков, такие как Plotly и Боке.

Тем не менее, Pandas также знакомит нас с парой сюжетов, которые не часть стандартных типов графиков Matplotlib, таких как KDE, Кривые Эндрюса, Начальные графики и Матрицы рассеяния.

Ассоциация plot() функция панды DataFrame использует серверную часть, указанную plotting.backend, и в зависимости от kind аргумент – генерирует график, используя данную библиотеку. Поскольку многие из них пересекаются, нет смысла рассматривать такие типы сюжетов, как line, bar, hist и scatter. Они будут создавать почти такие же графики с тем же кодом, что и мы до сих пор делали с Matplotlib.

Мы лишь кратко остановимся на plot() функционируют, так как основной механизм был изучен до сих пор. Вместо этого давайте сосредоточимся на некоторых сюжетах, которые мы не может уже легко сделать с Matplotlib.

Это будет очень короткая глава, так как возможности построения графиков и визуализации Pandas бледнеют по сравнению с Matplotlib, но все же полезно знать о некоторых из них, а также знать о возможности построения графиков из DataFrameнапрямую.

Ассоциация DataFrame.plot() Функция

Ассоциация plot() функция принимает x и y особенности, а kind аргумент. В качестве альтернативы, чтобы избежать kind аргумент, вы также можете вызвать DataFrame.plot.kind() вместо этого и пройти в x и y особенности.

Принятые значения для kind аргументом являются: line, bar, barh (перекладина), hist, box, kde, density (синоним для kde), area, pie, scatter и hexbin (аналогично тепловой карте).

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 instance и отображает на нем соответствующие значения:

Визуализация данных с помощью Pandas PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Чтобы построить несколько осей на одном и том же Figure, вы можете сделать Figure и один или несколько Axes с помощью plt.subplots() и назначить соответствующие Axes до ax аргумент каждого 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 Data Intelligence. Вертикальный поиск. Ай.

В целом, построение графиков с помощью Pandas удобно и быстро, но даже в этом случае для построения столбчатых, линейных и прямоугольных диаграмм вам, вероятно, понадобится Matplotlib. Это базовый движок, который неизбежно использует Pandas, а также дополнительные параметры настройки, и вам не нужно будет запоминать новый набор аргументов, которые вы можете использовать с графиками Pandas.

При этом для некоторых сюжетов вы можете предпочесть Панды, так как их нужно было бы создавать вручную в Matplotlib, а некоторые из них настолько хлопотны, что не стоят усилий, например строки KDE.

Панды черчения Модули

Что DataFrameто, что мы можем предложить с точки зрения визуализации, не является чем-то новым для нас. Однако базовый модуль, который они вызывают, pandas.plotting делает. plotting модуль имеет несколько функций, которые мы можем использовать, например autocorrelation_plot(), bootstrap_plot()и scatter_matrix().

Каждый из них принимает либо Series или DataFrame, в зависимости от типа визуализации, которую они создают, а также от определенных параметров для спецификации графика и стиля.

Начальный сюжет

Бутстрэппинг - это процесс случайной выборки (с заменой) набора данных и расчета показателей точности, таких как смещение, дисперсия и доверительные интервалы для случайных выборок. «С заменой» на практике означает, что каждый случайно выбранный элемент может быть выбран повторно. Без замены означает, что после каждого случайно выбранного элемента он удаляется из пула для следующей выборки.

A Начальный сюжет, созданный Pandas, загружает среднюю, медианную и среднюю статистику набора данных на основе выборки. size, после чего график последовательно показывается через plt.show(). Аргументы по умолчанию для size и samples Он 50 и 500 соответственно.

Это означает, что для функции мы выбираем 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 Data Intelligence. Вертикальный поиск. Ай.

График автокорреляции

Графики автокорреляции используются для проверки случайности данных, для данных временных рядов. Несколько автокорреляции рассчитываются для разных временных меток, и если данные действительно случайны — корреляция будет близка к нулю. Если нет – корреляция будет больше нуля.

Давайте построим два графика автокорреляции — один с нашим Значение особенностью, а одна с 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 Data Intelligence. Вертикальный поиск. Ай.

Стоит отметить, что автокорреляция измеряет один форма случайности, как некоррелированные, но неслучайные данные существуют. Если это неслучайно, но не имеет каких-либо существенных корреляций – график автокорреляции будет указывать на то, что данные случайны.

Матрицы рассеяния

Матрицы рассеяния заговор сетка графиков рассеяния для всех функций против всех функций. Поскольку это также неизбежно сравнивает каждую функцию с самой собой – диагональ где это происходит, обычно заменяется Гистограмма этой функции, а не точечной диаграммы. Матрицы рассеяния также известны как Парные участки, а 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 Data Intelligence. Вертикальный поиск. Ай.

Вы также можете пройти в diagonal аргумент, который принимает 'hist' or 'kde' чтобы указать, какой тип графика распределения вы хотите построить по диагонали, а также alpha, указав полупрозрачность маркеров на диаграммах рассеяния.

Отметка времени:

Больше от Стекабьюс