Operações de Entrada e Saída no Pandas: Manipulação de Arquivos

Operações de IO no Pandas: Leitura e Escrita de Arquivos

As operações de entrada e saída (IO) no Pandas são fundamentais para trabalhar com diversos formatos de arquivos, incluindo EXCEL, CSV, JSON e bancos de dados.

1. Trabalhando com arquivos CSV: função pd.read_csv()

Arquivos CSV (Comma-Separated Values) são estruturados em linhas, onde os dados são separados por vírgulas.

import pandas as pd
dados_cidades = pd.read_csv("cidades.csv")
print(dados_cidades)
# Saída
    ana  23  São Paulo
0  carlos  25  Rio de Janeiro
1  maria  28  Belo Horizonte
print(type(dados_cidades))  # Na verdade, é um DataFrame

A função pd.read_csv() possui um parâmetro chamado sep, que por padrão é uma vírgula, já que este é o separador padrão de arquivos CSV.

Ao observar a saída do objeto dados_cidades, notamos que a linha com "ana", "23" e "São Paulo" tornou-se o cabeçalho das colunas; os índices das linhas usam os valores padrão 0, 1, conforme mostrado:

print(dados_cidades.columns)
# Saída
Index(['ana', '23', 'São Paulo'], dtype='object')

print(dados_cidades.index)
# Saída
RangeIndex(start=0, stop=2, step=1)

Essa estrutura de rótulos não é ideal: os dados de ana foram tratados como rótulos de colunas porque o Pandas por padrão usa a primeira linha como cabeçalho; seria mais lógico usar a primeira coluna (nomes) como índice.

Na função pd.read_csv(), o parâmetro header controla os rótulos das colunas, enquanto index_col define qual coluna do arquivo será usada como índice.

Se definirmos header=None, os rótulos das colunas serão números sequenciais. Para definir rótulos personalizados, podemos usar o parâmetro names. Já index_col=0 indica que a primeira coluna deve ser usada como índice, como mostrado:

dados_cidades = pd.read_csv("cidades.csv", header=None, index_col=0)
print(dados_cidades)
# Saída
        1   2
0            
ana    23  São Paulo
carlos 25  Rio de Janeiro
maria  28  Belo Horizonte

print(dados_cidades.columns)
# Saída
Index([1, 2], dtype='int64')

print(dados_cidades.index)
# Saída
Index(['ana', 'carlos', 'maria'], dtype='object', name=0)

A função pd.read_csv() também pode ler arquivos de texto, bastando ajustar o parâmetro sep para o delimitador correto.

2. Manipulando arquivos Excel: função pd.read_excel()

planilha = pd.read_excel("dados_empresa.xlsx")
print(planilha)

A função read_excel() é bastante similar à read_csv():

planilha = pd.read_excel("dados_empresa.xlsx", index_col=0)
print(planilha)
print(planilha.shape)

Por padrão, ao trabalhar com arquivos Excel contendo múltiplas plnailhas, apenas a primeira é lida. Podemos especificar qual planilha desejar usando o parâmetro sheet_name:

# Lendo planilha pelo nome
planilha = pd.read_excel("dados_empresa.xlsx", index_col=0, sheet_name="Funcionários")
print(planilha)

# Lendo planilha pelo índice (primeira planilha)
planilha = pd.read_excel("dados_empresa.xlsx", index_col=0, sheet_name=0)
print(planilha)

# Lendo outra planilha pelo nome
planilha = pd.read_excel("dados_empresa.xlsx", index_col=0, sheet_name="Produtos")
print(planilha)

# Lendo outra planilha pelo índice (segunda planilha)
planilha = pd.read_excel("dados_empresa.xlsx", index_col=0, sheet_name=1)
print(planilha)

Para escrever dados em arquivos, o processo é similar para CSV:

# Escrevendo em Excel
planilha.to_excel("relatorio_final.xlsx")

Em algumas situações, podemos combinar as ferramentas nativas de manipulação de arquivos do Python com as operações de IO do Pandas:

# Abrindo o arquivo com open() e definindo errors="ignore" para ignorar erros
arquivo = open("dados.csv", "r", encoding="utf-8", errors="ignore")

# Em seguida, usando pd.read_csv() para ler o arquivo, 
# passando diretamente o objeto de arquivo aberto
meus_dados = pd.read_csv(arquivo, sep=";")

Tags: pandas Python io CSV Excel

Publicado em 9-8 09:47