Desafios para estudantes de ETL
Gist ID: 7e934be8ddfbe7642a9ce43182f34684
Aqui está um exercício simples para um estudante iniciante em Python, envolvendo a manipulação de dados em que você partirá de um arquivo JSON multidimensional e gravará os dados em um arquivo CSV. Vamos supor que você tenha um arquivo JSON chamado “dados.json” com a seguinte estrutura:
{
"pessoas": [
{
"nome": "João",
"idade": 25,
"cidade": "São Paulo"
},
{
"nome": "Maria",
"idade": 30,
"cidade": "Rio de Janeiro"
},
{
"nome": "Carlos",
"idade": 35,
"cidade": "Belo Horizonte"
}
],
"veiculos": [
{
"marca": "Toyota",
"modelo": "Corolla",
"ano": 2018
},
{
"marca": "Honda",
"modelo": "Civic",
"ano": 2020
},
{
"marca": "Volkswagen",
"modelo": "Golf",
"ano": 2017
}
]
}
Neste exemplo, temos duas listas de objetos: “pessoas” e “veiculos”. Você deseja ler esses dados do arquivo JSON e gravá-los em um arquivo CSV separado para cada lista, onde cada linha representa um objeto e as colunas representam os atributos de cada objeto.
Aqui está um exemplo de código em Python que realiza essa tarefa:
import json
import csv
# Abre o arquivo JSON
with open('dados.json', 'r') as file:
data = json.load(file)
# Processa cada lista do JSON e cria um arquivo CSV correspondente
for key, values in data.items():
# Gera o nome do arquivo CSV baseado na chave do JSON
csv_filename = key + '.csv'
# Abre o arquivo CSV para escrita
with open(csv_filename, 'w', newline='') as file:
writer = csv.writer(file)
# Obtém as chaves do primeiro item para escrever como cabeçalho do CSV
headers = list(values[0].keys())
writer.writerow(headers)
# Escreve os dados de cada item no CSV
for item in values:
writer.writerow(list(item.values()))
print(f"CSV '{csv_filename}' gerado com sucesso!")
Após executar esse código, ele lerá os dados do arquivo JSON, criará dois arquivos CSV: “pessoas.csv” e “veiculos.csv”.