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í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 [ ]: