Pandas & NumPy Academy · Aula

Lendo arquivos Excel e JSON

Importe pastas de trabalho do Excel com pd.read_excel e registros JSON com pd.read_json, tratando variações comuns de formato.

Aula 2 de 413 etapas

Lendo arquivos Excel e JSON é uma aula grátis de Pandas & NumPy Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Pandas & NumPy Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Pandas & NumPy Academy inclui 4 aulas no total.

Por que Excel e JSON são importantes

Embora o CSV seja o formato universal, os arquivos do Excel (.xlsx/.xls) são o formato predominante para dados empresariais compartilhados por e-mail e ferramentas de relatórios. JSON é o formato nativo de APIs REST e bancos de dados NoSQL. O pandas fornece pd.read_excel() e pd.read_json(), que seguem a API do leitor de CSV, portanto suas habilidades podem ser transferidas diretamente.

import pandas as pd

# The three most common load functions share the same philosophy
df_csv   = pd.read_csv('data.csv')
df_excel = pd.read_excel('data.xlsx')
df_json  = pd.read_json('data.json')

Instalando o mecanismo do Excel

A leitura de arquivos do Excel requer um mecanismo: openpyxl para arquivos .xlsx (formato moderno) e xlrd para arquivos .xls antigos. Instale-o com pip install openpyxl. O pandas seleciona automaticamente o mecanismo com base na extensão do arquivo. Para gravar, use xlsxwriter para obter formatação avançada. Sem o mecanismo instalado, read_excel() gera um ModuleNotFoundError.

# Install the required engine:
# pip install openpyxl          # for .xlsx (modern)
# pip install xlrd==1.2.0       # for .xls (legacy)

import pandas as pd
df = pd.read_excel('report.xlsx', engine='openpyxl')

Selecionando uma planilha com sheet_name

As pastas de trabalho do Excel podem ter várias planilhas. sheet_name= especifica qual delas ler: passe uma string (nome da planilha), um inteiro (posição baseada em zero) ou uma lista para ler várias planilhas em um dicionário. Passe sheet_name=None para ler todas as planilhas em um dicionário indexado pelo nome da planilha. Inspecionar as planilhas disponíveis com pd.ExcelFile('file.xlsx').sheet_names é um bom ponto de partida.

import pandas as pd

# Read the second sheet
df = pd.read_excel('workbook.xlsx', sheet_name=1)

# Read by name
df = pd.read_excel('workbook.xlsx', sheet_name='Sales')

# Inspect available sheets
xl = pd.ExcelFile('workbook.xlsx')
print(xl.sheet_names)  # ['Summary', 'Sales', 'Costs']

Parâmetros comuns do Excel

pd.read_excel() aceita a maioria dos mesmos parâmetros que read_csv(): header=, index_col=, usecols=, skiprows=, dtype= e nrows=. No Excel, usecols também aceita uma string de intervalo de colunas do Excel, como 'A:C' ou 'A,C,E', o que é conveniente quando as letras das colunas são conhecidas a partir do layout da planilha.

import pandas as pd

df = pd.read_excel(
    'sales_report.xlsx',
    sheet_name='Q1',
    header=2,          # header is on row 3 (0-indexed)
    usecols='A:D',     # Excel column range
    skiprows=[3, 4],   # skip rows 4 and 5
    nrows=100
)

Lendo JSON: formatos de orientação

pd.read_json() lê JSON em um DataFrame. O parâmetro orient= especifica a estrutura do JSON: 'records' (lista de dicionários de linhas), 'columns' (dicionário de vetores de colunas, o padrão), 'index' (dicionário de dicionários de linhas indexados) ou 'values' (vetor bruto). A maioria das APIs REST retorna o formato 'records' — sempre inspecione primeiro o JSON bruto para determinar a orientação correta.

import pandas as pd

# REST API response: list of records
json_str = '[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]'
df = pd.read_json(json_str, orient='records')
print(df)

Lendo JSON de um arquivo ou URL

pd.read_json() aceita um caminho de arquivo, uma URL ou diretamente uma string JSON. Para JSON profundamente aninhado (por exemplo, respostas de APIs com objetos aninhados), use json_normalize() do módulo pandas.io.json, que transforma dicionários aninhados em colunas com nomes separados por pontos.

import pandas as pd
from pandas.io.json import json_normalize

# From a file
df = pd.read_json('events.json')

# Flatten nested JSON
nested = [{'id': 1, 'user': {'name': 'A', 'age': 30}},
          {'id': 2, 'user': {'name': 'B', 'age': 25}}]
df_flat = json_normalize(nested)
print(df_flat.columns.tolist())  # ['id', 'user.name', 'user.age']

Formato JSON Lines

JSON Lines (NDJSON) armazena um objeto JSON por linha, facilitando a transmissão de grandes conjuntos de dados. Use pd.read_json('file.jsonl', lines=True) para analisar esse formato. Ele é comum em arquivos de registro, exportações do Kafka e formatos de conjuntos de dados de aprendizado de máquina. Cada linha deve ser um objeto JSON válido; linhas malformadas fazem a leitura falhar.

import pandas as pd

# file.jsonl contains one JSON record per line:
# {"id": 1, "event": "click"}
# {"id": 2, "event": "view"}
df = pd.read_json('events.jsonl', lines=True)
print(df)

Lidando com a análise de datas em JSON

JSON não tem um tipo de data nativo — as datas são armazenadas como strings ou marcas de tempo Unix (milissegundos ou segundos desde a época Unix). Defina convert_dates=True (o padrão) para permitir que o pandas tente converter automaticamente as colunas cujos nomes contêm 'date', 'time' ou 'at'. Para nomes de colunas ou marcas de tempo personalizados, faça a conversão explicitamente com pd.to_datetime(df['col'], unit='ms').

import pandas as pd

# Unix milliseconds timestamp column
df = pd.read_json('events.json', orient='records')
df['created_at'] = pd.to_datetime(df['created_at'], unit='ms')
print(df['created_at'].dtype)  # datetime64[ns]

Comparando as armadilhas do Excel e do JSON

Armadilhas do Excel: células mescladas produzem linhas com NaN, linhas/colunas ocultas são incluídas na saída e a formatação numérica (por exemplo, datas armazenadas como números de ponto flutuante) deve ser corrigida após o carregamento. Armadilhas do JSON: a presença inconsistente de campos entre os registros produz NaN, e chaves inteiras em um objeto JSON se tornam nomes de colunas de texto.

import pandas as pd

# Excel date stored as float (Excel serial date)
df = pd.read_excel('old_report.xls')
# If dates appear as floats (e.g., 44927.0), convert:
# from xlrd import xldate_as_datetime
# df['date'] = df['date'].apply(lambda x: xldate_as_datetime(x, 0))

pd.ExcelFile para várias planilhas

Quando precisar ler várias planilhas do mesmo arquivo com eficiência, abra um gerenciador de contexto pd.ExcelFile e chame parse(sheet_name) para cada planilha. Isso evita reabrir e analisar novamente o arquivo para cada planilha — algo importante em pastas de trabalho grandes. O gerenciador de contexto fecha o identificador do arquivo automaticamente.

import pandas as pd

with pd.ExcelFile('annual_report.xlsx') as xf:
    df_q1 = xf.parse('Q1')
    df_q2 = xf.parse('Q2')

print(df_q1.shape, df_q2.shape)

Usando requests para carregar APIs JSON

Para dados de APIs REST, use a biblioteca requests para buscar o JSON e passe o objeto Python analisado para pd.DataFrame() ou pd.json_normalize(). Esse padrão separa a questão HTTP da questão de análise dos dados e oferece acesso a cabeçalhos, autenticação e paginação antes que o pandas processe os dados.

import pandas as pd
import requests

response = requests.get('https://api.example.com/records')
data = response.json()   # Python list of dicts
df = pd.DataFrame(data)
print(df.head())

Verificação rápida

Teste sua compreensão sobre a leitura de arquivos do Excel e JSON com pandas nesta lição.

Recapitulação da lição

Nesta lição, você aprendeu que: pd.read_excel() lê arquivos xlsx e permite especificar qual planilha carregar por meio de sheet_name, pd.read_json() lida com várias estruturas JSON controladas pelo parâmetro orient e json_normalize() transforma objetos JSON aninhados em um DataFrame plano. Em seguida, você aprenderá a exportar DataFrames para arquivos CSV e Excel para compartilhamento e processamento posterior.

Grátis para começar

Aprenda Python com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
30
Aulas
120

Perguntas Frequentes

A aula “Lendo arquivos Excel e JSON” é grátis?

Sim — o texto completo de “Lendo arquivos Excel e JSON” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Pandas & NumPy Academy, atualize para CoddyKit PRO. O curso de Pandas & NumPy Academy inclui 4 aulas no total.

O que vou aprender em “Lendo arquivos Excel e JSON”?

Importe pastas de trabalho do Excel com pd.read_excel e registros JSON com pd.read_json, tratando variações comuns de formato. Você pratica Pandas & NumPy Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Pandas & NumPy Academy?

Nenhuma experiência prévia é necessária. Pandas & NumPy Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Lendo arquivos Excel e JSON”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Pandas & NumPy Academy?

Sim. Cada aula de Pandas & NumPy Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Lendo arquivos CSV
  2. Lendo arquivos Excel e JSON
  3. Escrevendo DataFrames em arquivos
  4. Lendo de URLs e StringIO
← Voltar para Pandas & NumPy Academy