Gráficos de dispersão complexos no Python [PARTE I] – Obtendo dados e criando um gráfico preliminar

Faaaaaaaaaaaaala cientista! Tudo certo?
Nessa série de posts vamos discutir os gráficos de dispersão, que podem ser utilizados para exibir vários dados de uma forma mais intuitiva. Hoje começaremos com a obtenção das informações desejadas, buscando algumas informações no IBGE [1]. Vamos lá?

Primeiro obteremos os dados para o nosso gráfico: neste exemplo, queremos as informações sobre a população, PIB per capita e expectativa de vida do Brasil em 2013, por estado. Esses dados foram obtidos em duas matérias da Sala de Imprensa do IBGE ([2],  [3]), e uma parte das tabelas é dada a seguir:

tabela_pibpoptabela_expecvida

Após obtermos essas tabelas, precisamos organizar os dados. Dessa forma, conseguiremos passá-los mais facilmente ao Python. Neste exemplo, copiamos as duas tabelas em uma planilha do LibreOffice [4] e gravamos tudo em um arquivo de extensão xls (“População e PIB” e “Expectativa de vida” em [5]).

Na primeira tabela, “População e PIB”, estamos interessados nas colunas “População residente (1.000 hab.)(1)” e “Produto Interno Bruto per capita R$”. Na segunda tabela, “Expectativa de vida”, queremos a coluna “Esperança de vida ao nascer – 2013 – Total”. Então, criamos uma terceira tabela, chamada “Tabela para análise”, e colamos as três colunas de interesse: elas recebem os nomes “PIBperCapita”, “ExpecVida” e “PopX1000”, de acordo com os dados contidos nas originais.

Pronto! Já temos dados para um bom gráfico. Mas além disso, mostraremos também o estado e a região na qual ele está. Para isso criamos em “Tabela para análise” as colunas “UF” e “Regiao”, que armazenam a sigla da unidade federativa e a que região ela pertence, respectivamente. Baixe o arquivo com as duas tabelas originais e a tabela para análise em [5] (Clique em ‘View Raw’). Veja a seguir a tabela para análise final:

tabela_analise

Após baixar o arquivo em [5], você pode abrir o Spyder [6] e utilizar a função read_excel() do Pandas [7] para ler a tabela:

import pandas as pd

dados_brasil = pd.read_excel('dados_ibge.xls', sheetname=2)
dados_brasil.head()

O argumento sheetname=2 indica que queremos que o Pandas leia a terceira tabela.

Lembra que o Python começa a contar no zero? Então, teríamos sheetname=0 para a primeira e sheetname=1 para a segunda. Mais ainda: se você quiser a primeira tabela, não precisa usar esse argumento.

Depois de ler a tabela e colocá-la na variável dados_brasil, queremos ver seu conteúdo. Para que o Pandas mostre as primeiras linhas da tabela, utilize o comando dados_brasil.head(). O resultado é o seguinte:

dados_head

Veja que as colunas representam os dados da panilha do LibreOffice. Para manipular o conteúdo das colunas de forma independente, utilize o nome da coluna entre colchetes:

dados_brasil['UF']
dados_brasil['Regiao']
dados_brasil['PIBperCapita']
dados_brasil['ExpecVida']
dados_brasil['PopX1000']

Experimente!

Criaremos agora um gráfico de dispersão preliminar, baseado nos dados que coletamos. Para isso utilizaremos a função scatter(), da biblioteca matplotlib [8]:

import matplotlib.pyplot as plt

plt.scatter(x = dados_brasil['ExpecVida'],
            y = dados_brasil['PIBperCapita'],
            s = dados_brasil['PopX1000'])
plt.show()

Nesse exemplo, utilizamos a expectativa de vida como o eixo X (argumento x = dados_brasil[‘ExpecVida’]), e o PIB per capita como o eixo Y (y = dados_brasil[‘PIBperCapita’]). A população indica o tamanho de cada círculo (s = dados_brasil[‘PopX1000’]). Veja a seguir o gráfico resultante:

scatter_preliminar.jpg

Bom… esse gráfico não é muito informativo. Que bolinha é aquela acima, à direita? Qual o estado com maior expectativa de vida? Será que as regiões estão bem distribuídas?

Começaremos a melhorar nosso gráfico na próxima semana! Colocaremos rótulos, título, texto, legenda e cores. Continue conosco!

Valeu cientista! Um giga abraço e até a próxima!

Atualizações!

Maio, 12: corrigidos alguns dados da tabela, como apontado por A C Censi nos comentários.


Gostou? Curta e compartilhe com seus amigos!
Quer baixar os códigos do Programando Ciência? Corre lá no nosso GitHub!
Faça uma doação pro Programando Ciência!
Curta a gente também no Facebook: www.facebook.com/programandociencia
Estou no Twitter! Siga-me se puder! @alexdesiqueira

8 thoughts on “Gráficos de dispersão complexos no Python [PARTE I] – Obtendo dados e criando um gráfico preliminar

    1. Fala Mateus!
      Se você usar os códigos como estão, é só salvar o .xls no mesmo diretório que o Python está rodando. Para verificar, digite no prompt do Python:
      ”’
      import os
      os.listdir(‘.’)
      ”’
      Se o nome do arquivo .xls estiver na lista, acredito que você não terá problemas.
      Abraço!

      Like

  1. E uma outra dúvida, se eu quero apresentar todos os dados contidos na tabela, qual código devo usar ao invés de “dados_brasil.head()”?

    Like

  2. Alexandre gostaria de uma ajuda como eu faço para plotar as coordenadas de um arquivo .xls ou .txt sobre um video em execução ?

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s