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 DataFrame
s 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:
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:
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ê DataFrame
O 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()
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á:
É 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:
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.
- 100
- Sobre
- Todos os Produtos
- já
- Outro
- argumentos
- por aí
- ser
- Pouco
- Caixa
- chamada
- capacidades
- Capítulo
- a verificação
- código
- Coluna
- comum
- país
- Casal
- Criar
- dados,
- diferente
- distribuição
- Europa
- União Européia
- exemplo
- Característica
- Funcionalidades
- Foco
- função
- funcionalidade
- Geral
- gerar
- HTTPS
- IT
- conhecido
- grande
- Maior
- Biblioteca
- Line
- mapa,
- Matriz
- a maioria
- nomeadamente
- nomes
- Perto
- oferecer
- Oferece
- Opções
- Outros
- fase
- piscina
- processo
- produzir
- fornecer
- fins
- aumentar
- RE
- substituído
- Resultados
- Retorna
- Dito
- selecionado
- conjunto
- Baixo
- periodo
- semelhante
- So
- código fonte
- especificação
- começado
- estatística
- A fonte
- Através da
- união
- us
- valor
- visualização
- O Quê
- Wikipedia
- Equivalente há
- X
- ano
- zero