Exemplo Prático

Iremos utilizar o arquivo capitais.csv que é um arquivo que tem todas as capitais do Brasil, bem como a população e a área de cada capital (km2).

O Pandas disponibiliza diversos métodos para carregar diferentes tipos de dados, segue alguns deles:

* pd.read_csv('caminho-ate-arquivo.csv', sep=';')
* pd.read_excel('caminho-ate-arquivo.xlsx', 'Sheet1')
* pd.read_clipboard()
* sql.read_frame(query, connection) – Necessita do módulo pandas.io

Vamos carregar esse arquivo na variável capitais.


In [ ]:
import pandas as pd

In [ ]:
capitais = pd.read_csv('capitais.csv', sep=',')

In [ ]:
capitais.head() # Imprime os 5 primeiros elementos do dataframe

Note que o índice que foi gerado é o padrão e não o default. Para defirmos a coluna municipio como sendo o índice, precisamos passar o parâmetro


In [ ]:
capitais = pd.read_csv('capitais.csv', sep=',', index_col='municipio')

In [ ]:
capitais.head()

Agora sim! Podemos verificar os índices da linha e das colunas do dataframe utilizando os seguintes comando.


In [ ]:
len(capitais.index)
capitais.index

In [ ]:
capitais.columns

Para acessar uma coluna, podemos acessar da mesma maneira como fizemos com dicionários, passando o rótulo.


In [ ]:
capitais["populacao 2015"].head()

Se a chave não existir

Caso especificarmos uma coluna que não está listado no DataFrame, o erro KeyError irá aparecer.

capitais['sao Paulo']

A saída será:

KeyError: 'sao Paulo'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-34-5258a20fa59e> in <module>()
----> 1 capitais['sao Paulo']

Podemos tratar esse erro, utilizando o método .get.


In [ ]:
capitais.get('sao Paulo', 'Não encontrou')

Outra forma de acessar os atributos de uma DF é utilizar o operador ponto.

Vale lembra que essa forma só funciona se o índice do elemento é um identificador válido Python. Por exemplo:

capitais["populacao 2015"]

Se a chave for populacao 2015 não irá funcionar, pois não é um identificador válido, afinal existe um espaço entre as duas palavras, o que não é aceito.


In [ ]:
capitais.area_km2.head()

In [ ]:
capitais.populacao 2015

Um identificador válido dever basicamente começar com letra e não ter espaços em bracos e alguns caracteres especiais. Segue a referência: https://docs.python.org/3/reference/lexical_analysis.html#identifiers

Podemos resolver esse problema, renomeando essa coluna. Vamos utilizar o método rename que recebe por parâmetro columns ou index para trocar o nome das colunas ou das linhas.

Ambos retornam um novo dataframe, desta forma podemos salvar na mesma variável.


In [ ]:
capitais = capitais.rename(columns={'populacao 2015' : 'populacao_2015'})

In [ ]:
capitais.head()

In [ ]:
capitais.populacao_2015.head()

Exercícios

Utilizando o DataFrame capitais, faça os exercícios abaixo.

Exercício 1 - Selecione todas as capitais que tenham área maior que 400 km2. Quantas foram?


In [ ]:

Exercício 2 - Selecione as capitais que tenham população maior que 2 milhões.


In [ ]:

Exercício 3 - Crie uma função que retorne uma lista contendo somente as capitais que começam com uma determinada letra. A função deve receber dois parâmetros:

O primeiro parâmetro será uma lista com todas as capitais.
O segundo será uma letra.

def capitais_com_letra(todas_capitais, letra):

Para testar a função, selecione as capitais que começam com as letras B e Z. Lembre-se de tratar possíveis erros.


In [ ]:
def capitais_com_letra(todas_capitais, letra):
    # seu código aqui

In [ ]:


In [ ]:


In [ ]:

Exercício 4 - Utilizando a função criada no exercício 3, calcule o total da população para as capitais que começam com S. Por fim, imprima a seguinte frase:

As capitais X, Y e Z tem W pessoas.

In [ ]:


In [ ]:


In [ ]: