# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

import pandas as pd

# ### Loading CSV

df1 = pd.read_csv('supermarkets.csv')
df1

# ### Loading JSON

df2 = pd.read_json('supermarkets.json')
df2

# ### Loading XLS

df3 = pd.read_excel('supermarkets.xlsx')
df3

# ### Loading TXT - Commas 
# Como o arquivo txt commas está separado por vírgulas `,` podemos tratar como um CSV

df3 = pd.read_csv('supermarkets-commas.txt')
df3

# ### Loading TXT - Semi Colons
# Como o arquivo txt semi colons está separado por `;`, devemos definir um separador
# Ao ler o arquivo da forma usual, os dados estarão embaralhados
# Chamamos então o argumento `?` para verificar os parametros existentes no módulo, e iremos modificar `sep`

df5 = pd.read_csv('supermarkets-semi-colons.txt')
df5

# +
# pd.read_csv?
# -

df5 = pd.read_csv('supermarkets-semi-colons.txt', sep=';')
df5

# ### Loading and assigning Headers

df6 = pd.read_csv('supermarkets-headless.txt')
df6

# Ao carregar um arquivo sem linha de `headers`, será usado a primeira linha de valores, algo que não queremos.
# Podemos contornar isso com o parâmetro `header`

df7 = pd.read_csv('supermarkets-headless.txt', header= None)
df7

# Desta maneira os headers ficam enumerados, podemos definir um nome para as colunas

df7.columns = ['ID', 'Address', 'City', 'State', 'Country', 'Name', 'Employees']
df7

# ### Mudando o indice de linhas
# Podemos utilizar o metódo `set_index` para usar como indice uma das colunas do DataFrame.
# Esse metódo porém não altera o objeto, mas cria uma nova instância, para alterar o objeto original deve-se modificar o parâmetro `inplace`

df7.set_index('ID')

df7

df7.set_index('ID', inplace=True)
df7

# ### Recortando informação de um DataFrame
# Metódo `loc[x,y]`: x é a chave do Index ao qual quer fazer o corte, y são as colunas para fazer o corte

df7.loc[2,'Country':'Name']

df7.loc[3:5,'City':'Employees']

df7.loc

StarcoderdataJupyterScriptsDedupFiltered