Chamamos de “importar dados” a ação de carregar informações em algum ambiente (plataforma, site, sistema, ferramenta, etc). Neste caso, estamos falando de importar dados para o Python, ou seja, vamos carregar dados na memória através do Python para analisá-los.
Esses dados podem ser de diferentes formatos: .xlsx (Excel), .csv ou .txt (texto), .json, entre outros. Neste post, vamos focar especificamente no formato XLSX.
Importar os dados em geral é simples. O desafio normalmente está nos formatos do dado e do arquivo. O tamanho da base também pode ser um problema dependendo do nível de detalhe que você precisa analisar.
Hoje vamos explorar a função read_excel da biblioteca Pandas.
O Dataset do Exemplo
Para este exemplo, vamos usar uma base de dados real de um e-commerce brasileiro disponível no Kaggle (Olist).
Importando o Arquivo
Primeiro, importamos a biblioteca Pandas.
# Importo as bibliotecas que irei usar
import pandas as pd
# Ajusto a configuração de visualização de colunas do Jupyter Notebook
pd.set_option('max_columns', None)
Em seguida, realizamos a leitura do arquivo Excel.
# Exemplo genérico com caminho completo
# df = pd.read_excel('caminho_do_arquivo\\nome_do_arquivo.xlsx')
# Exemplo prático (arquivo na mesma pasta do script)
df = pd.read_excel('olist_merged.xlsx')
Considerações Importantes:
-
Caminho do Arquivo: Quando escrever o caminho completo (pastas + arquivo), utilize barra invertida
/ou duas barras\\ao invés da barra única\padrão do Windows. -
Diretório: Se o arquivo
.py(código) estiver na mesma pasta do arquivo de dados, não é necessário colocar o caminho da pasta, apenas o nome do arquivo. -
Objeto DataFrame: Precisamos guardar o arquivo em uma variável (
df =), caso contrário, o Python apenas lê o dado e não o armazena para uso. “df” é uma convenção para DataFrame, mas você pode usar o nome que preferir. -
Estrutura: Ao importar com Pandas, os dados são estruturados como um DataFrame, que funciona de forma muito similar a uma tabela de Excel.
Simples, certo?
Trabalhando com Abas (Sheet Name)
A função read_excel possui um argumento exclusivo e muito importante quando temos diversas abas na planilha: o sheet_name.
df = pd.read_excel("olist_merged.xlsx", sheet_name="Planilha1")
Um arquivo Excel pode conter múltiplas abas e é neste argumento que especificamos qual queremos importar.
Também podemos utilizar o índice numérico da aba. Lembrando que a contagem no Python começa em zero:
-
Para a 1ª aba: use
sheet_name=0 -
Para a 2ª aba: use
sheet_name=1 -
E assim por diante.
Dica: Você também pode passar uma lista de nomes caso precise importar múltiplas abas de uma vez.
Dicas para Grandes Arquivos (Performance)
Existem 3 argumentos da função pd.read_excel que podem ser combinados para otimizar a importação, especialmente em arquivos muito grandes.
1. Limitar Linhas (nrows)
O nrows limita a quantidade de linhas que serão importadas. É excelente para dar uma “olhada rápida” na estrutura do arquivo antes de carregar tudo na memória.
# Importando apenas as primeiras 100 linhas
df = pd.read_excel('olist_merged.xlsx', nrows=100)
2. Selecionar Colunas (usecols)
No argumento usecols, passamos uma lista apenas com as colunas que nos interessam. Isso melhora drasticamente a performance de importação e economiza memória RAM.
# Listo as colunas que quero importar
lista_colunas = [
'order_id',
'order_purchase_timestamp',
'order_approved_at',
'order_delivered_customer_date',
'order_estimated_delivery_date',
'customer_city',
'customer_state',
'payment_type',
'payment_value',
'product_id',
'price',
'freight_value',
'product_category_name'
]
# Importo o arquivo filtrando as colunas
df = pd.read_excel(
"olist_merged.xlsx",
sheet_name="Planilha1",
# nrows=100, # Comentado para ler todas as linhas
usecols=lista_colunas
)
Dica: Use a função list(df) para ver os nomes de todas as colunas disponíveis e copiar apenas as que precisa.
3. Definir Tipos de Dados (dtype)
Neste argumento, passamos um dicionário especificando o formato das colunas. Em geral, prefiro importar tudo como object (texto) e tratar depois. Porém, para colunas numéricas (valor, preço, quantidade), já podemos importar no formato correto para ganhar tempo.
# Especifico os tipos das colunas
tipos_colunas = {
'order_id': str,
'order_purchase_timestamp': str,
'order_approved_at': str,
'order_delivered_customer_date': str,
'order_estimated_delivery_date': str,
'customer_city': str,
'customer_state': str,
'payment_type': str,
'payment_value': float,
'product_id': str,
'price': float,
'freight_value': float,
'product_category_name': str
}
# Importação final completa
df = pd.read_excel(
"olist_merged.xlsx",
sheet_name="Planilha1",
usecols=lista_colunas,
dtype=tipos_colunas
)
Gostou do conteúdo? Tem alguma dúvida sobre tratamento de Excel no Pandas? Deixe um comentário abaixo ou confira meu post sobre Importação de arquivos CSV.