Visualização de dados com o Pandas PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Visualização de dados com Pandas

O Pandas tem nos auxiliado até agora na fase de Pré-processamento de Dados. Embora, em um caso, ao criar histogramas, também tenhamos utilizado outro módulo do Pandas – plotting.

Evitamos isso propositalmente até agora, porque introduzi-lo mais cedo levantaria mais questões do que respostas. Ou seja, Pandas e Matplotlib era uma dupla tão comum e onipresente que o Pandas começou a integrar a funcionalidade do Matplotlib. Isto fortemente depende do Matplotlib para fazer qualquer plotagem real, e você encontrará muitas funções do Matplotlib agrupadas no código-fonte. Alternativamente, você pode usar outros backends para plotagem, como Completamente e Bokeh.

No entanto, Pandas também nos apresenta alguns enredos que não são uma parte dos tipos de plotagem padrão do Matplotlib, como KDEs, Curvas de Andrews, Gráficos de inicialização e Matrizes de Dispersão.

A plot() função de um Pandas DataFrame usa o back-end especificado por plotting.backend, e dependendo do kind argumento – gera um gráfico usando a biblioteca fornecida. Como muitos deles se sobrepõem – não faz sentido cobrir tipos de parcelas como line, bar, hist e scatter. Eles produzirão praticamente os mesmos gráficos com o mesmo código que temos feito até agora com o Matplotlib.

Daremos apenas uma breve olhada no plot() função, uma vez que o mecanismo subjacente foi explorado até agora. Em vez disso, vamos nos concentrar em alguns dos enredos que não pode já faço facilmente com Matplotlib.

Este será um capítulo muito curto, já que os recursos de plotagem e visualização do Pandas são insignificantes em comparação com o Matplotlib - mas ainda é útil conhecer alguns deles, bem como estar ciente da capacidade de plotar a partir de DataFrames diretamente.

A DataFrame.plot() função

A plot() função aceita x e y características e um kind argumento. Alternativamente, para evitar o kind argumento, você também pode chamar DataFrame.plot.kind() em vez disso, e passe no x e y características.

Os valores aceitos para o kind os argumentos são: line, bar, barh (Barra horizontal), hist, box, kde, density (sinônimo de kde), area, pie, scatter e hexbin (semelhante a um mapa de calor).

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()

Em vez de fornecer o Series instâncias como fazemos para Matplotlib - é suficiente fornecer o nomes de coluna, e como você está ligando para o plot() função no DataFrame você está visualizando, é fácil para o Pandas mapear esses valores de string para os nomes de coluna apropriados.

Cada uma dessas chamadas cria uma nova Figure instância e plota os valores apropriados nela:

Visualização de dados com o Pandas PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Para plotar vários eixos no mesmo Figure, você pode fazer um Figure e um ou mais Axes via plt.subplots() e atribuir o apropriado Axes ao ax argumento de cada um plot.plot_type() ligue para:

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()

Alguns dos argumentos padrão, como o rotation argumentos são realmente diferentes no plot() chamadas. Por exemplo, rotation é encurtado para rot. Isso torna um pouco complicado basta mudar entre Matplotlib e Pandas, pois provavelmente você acabará nas páginas de documentação, apenas verificando quais argumentos podem ser aplicados e quais não podem.

Agora, em vez de criar um novo Figure or Axes Por exemplo, cada uma dessas parcelas será posicionada no local apropriado Axes instâncias que fornecemos a eles:

Visualização de dados com o Pandas PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Em geral, plotar com Pandas é conveniente e rápido - mas mesmo assim, para plotar gráficos de barras, gráficos de linhas e gráficos de caixas, você provavelmente desejará usar o Matplotlib. É o mecanismo subjacente que o Pandas inevitavelmente usa e também tem mais opções de personalização, e você não precisará se lembrar de um novo conjunto de argumentos que pode usar com os gráficos do Pandas.

Dito isto, para alguns enredos, você pode preferir Pandas, já que teriam que ser feitos manualmente no Matplotlib, e alguns deles são tão complicados de fazer que não vale a pena o esforço, como as linhas do KDE.

Pandas plotagem Módulo

O Quê DataFrameO que o que temos a oferecer em termos de visualização não é novidade para nós. No entanto, o módulo subjacente que eles chamam, pandas.plotting faz. o plotting módulo possui diversas funções que podemos usar, como autocorrelation_plot(), bootstrap_plot() e scatter_matrix().

Cada um deles aceita um Series ou um DataFrame, dependendo do tipo de visualização que estão produzindo, bem como determinados parâmetros para especificação de plotagem e fins de estilo.

Gráfico de inicialização

Bootstrapping é o processo de amostragem aleatória (com substituição) de um conjunto de dados e cálculo de medidas de precisão, como viés, variação e intervalos de confiança para as amostras aleatórias. “Com reposição”, em termos práticos, significa que cada elemento selecionado aleatoriamente pode ser selecionado novamente. Sem substituição significa que após cada elemento selecionado aleatoriamente, ele é removido do pool para a próxima amostra.

A Gráfico de inicialização, criado pelo Pandas inicializa as estatísticas médias, medianas e intermediárias de um conjunto de dados, com base na amostra size, após o qual o gráfico é posteriormente mostrado via plt.show(). Os argumentos padrão para size e samples e guarante que os mesmos estão 50 e 500 respectivamente.

Isso significa que para um recurso, amostramos 50 valores. Em seguida, uma subamostra de 50 elementos é gerada (dados sintéticos) para esses 50 valores e uma estatística resumida (média/mediana/intervalo médio) é calculada para eles. Este processo é repetido 500 vezes, então, no final, temos 500 estatísticas resumidas:

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()

Visualização de dados com o Pandas PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Gráfico de autocorrelação

Gráficos de autocorrelação são usados ​​para verificar a aleatoriedade dos dados, para dados de séries temporais. Múltiplo autocorrelações são calculados para carimbos de data/hora diferentes e, se os dados forem verdadeiramente aleatórios, a correlação será próxima de zero. Caso contrário – a correlação será maior que zero.

Vamos traçar dois gráficos de autocorrelação – um com nosso Valor recurso e um com um Series preenchido com valores aleatórios:

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()

O gráfico de autocorrelação para o random_series deveria girar em torno 0, já que são dados aleatórios, enquanto o gráfico para o Value recurso não irá:

Visualização de dados com o Pandas PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

É importante notar que a autocorrelação mede um formulário de aleatoriedade, como não correlacionados, mas existem dados não aleatórios. Se não for aleatório, mas não tiver correlações significativas – o gráfico de autocorrelação indicaria que os dados são aleatórios.

Matrizes de Dispersão

Matrizes de Dispersão traçar um grade de gráficos de dispersão para todos os recursos em relação a todos os recursos. Como isso inevitavelmente também compara cada recurso consigo mesmo – o diagonal onde isso acontece é normalmente substituído por um Histograma desse recurso, em vez de um gráfico de dispersão. Matrizes de Dispersão também são conhecidos como Gráficos de pares, e a Seaborn oferece um pairplot() funcionar apenas para isso.

A scatter_matrix() função aceita um DataFrame e produz uma matriz de dispersão para todos os seus recursos numéricos e retorna uma matriz 2D de Axes instâncias que compõem a Matriz de Dispersão. Para ajustar qualquer coisa sobre eles, você vai querer iterá-los:

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()

Isso resulta em uma Matriz de Dispersão bastante grande de todos os recursos em relação a todos os outros recursos:

Visualização de dados com o Pandas PlatoBlockchain Data Intelligence. Pesquisa Vertical. Ai.

Você também pode passar no diagonal argumento, que aceita 'hist' or 'kde' para especificar que tipo de gráfico de distribuição você gostaria de traçar na diagonal, bem como alpha, especificando a translucidez dos marcadores nos gráficos de dispersão.

Carimbo de hora:

Mais de Abuso de pilha