import pandas as pd

capitais = pd.read_csv('capitais.csv', sep=',')

capitais.head() # Imprime os 5 primeiros elementos do dataframe

"""
Explanation: 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.
End of explanation
"""


capitais = pd.read_csv('capitais.csv', sep=',', index_col='municipio')

capitais.head()

"""
Explanation: 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
End of explanation
"""


len(capitais.index)
capitais.index

capitais.columns

"""
Explanation: Agora sim! Podemos verificar os índices da linha e das colunas do dataframe utilizando os seguintes comando.
End of explanation
"""


capitais["populacao 2015"].head()

"""
Explanation: Para acessar uma coluna, podemos acessar da mesma maneira como fizemos com dicionários, passando o rótulo.
End of explanation
"""


capitais.get('sao Paulo', 'Não encontrou')

"""
Explanation: Se a chave não existir
Caso especificarmos uma coluna que não está listado no DataFrame, o erro KeyError irá aparecer.
python
capitais['sao Paulo']
A saída será:
```python
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.
End of explanation
"""


capitais.area_km2.head()

capitais.populacao 2015

"""
Explanation: 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:
python
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.
End of explanation
"""


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

capitais.head()

capitais.populacao_2015.head()

"""
Explanation: 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.
End of explanation
"""


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

"""
Explanation: 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?
Exercício 2 - Selecione as capitais que tenham população maior que 2 milhões.
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.
End of explanation
"""


