Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] fase final - script com informações extras

Não sei se era isso que queriam, mas tentei colocar informações no script que indicassem as etapas em forma de ordem cronologica de eventos.

# 1 Fase impportacao das Bibliotcas

import json
import csv

# 2 Armazenamento das funcões a serem executadas
    # 2.1 leitura dos arquivos das empresas
def leitura_json(path_json):
    dados_json = []
    with open(path_json, 'r') as file:
        dados_json = json.load(file)
    return dados_json    

def leitura_csv(path_csv):
    dados_csv = []
    with open(path_csv, 'r') as file:
        spamreader = (csv.DictReader(file, delimiter= ','))
        for row in spamreader:
            dados_csv.append(row)

    return dados_csv

def leitura_dados(path, tipo_arquivo):
    dados = []
    if tipo_arquivo == 'csv':
        dados = leitura_csv(path)
    
    elif tipo_arquivo == 'json':
        dados = leitura_json(path)
    
    return dados

#2.2 Avaliação das colunas dos arquivos 

def get_columns(dados):
    return list(dados[-1].keys())

# 2.3 alterando os nomes das colunas para  padrão solciitado

def rename_columns(dados, key_mapping):
    new_dados_csv = []

    for old_dict in dados:
        dict_temp = {}
        for old_key, value in old_dict.items():
            dict_temp[key_mapping[old_key]]= value
        new_dados_csv.append(dict_temp)
    return new_dados_csv

# 2.4 Conferencia dos dados, antes de fundir os arquivos

def size_data(dados):
    return len(dados)

# 3 Combinando as listas e transformando os arquivos

def join(dadosA, dadosB):
    combined_list = []
    combined_list.extend(dadosA)
    combined_list.extend(dadosB)
    return combined_list

def transformando_dados_tabela(dados, nomes_colunas):
    dados_combinados_tabela =[nomes_colunas]

    for row in dados:
        linha =  []
        for coluna in nomes_colunas:
            linha.append(row.get(coluna, 'indisponivel'))
        dados_combinados_tabela.append(linha)
    return dados_combinados_tabela

# 4 Salvando o arquivo final

def salvando_dados(dados, path):
    with open(path, 'w') as file:
        writer = csv.writer(file)
        writer.writerows(dados)

# 5 Pasta dos arquivos originais
path_json = 'data_raw/dados_empresaA.json'
path_csv = 'data_raw/dados_empresaB.csv'

# 6 Area de prints para conferencia durante a execução do script
#iniciando a leitura dos dados
dados_json = leitura_dados(path_json, 'json')
nome_colunas_json = get_columns(dados_json)
tamanho_dados_json = size_data(dados_json)

print(f"Nome colunas dados Json: {nome_colunas_json}")
print(f"tamanho dos dados json: {tamanho_dados_json}")

dados_csv = leitura_dados(path_csv, 'csv')
nome_colunas_csv = get_columns(dados_csv)
tamanho_dados_csv = size_data(dados_csv)

print(f"Nome colunas dados CSV: {nome_colunas_csv}")
print(f"Tamanho dos dados csv: {tamanho_dados_csv}")

# 7 Area de prints da fase de transformacao e manipulacao dos dados
#transformacao dos dados

key_mapping = {'Nome do Item': 'Nome do Produto',
               'Classificação do Produto': 'Categoria do Produto',
               'Valor em Reais (R$)': 'Preço do Produto (R$)',
               'Quantidade em Estoque': 'Quantidade em Estoque',
               'Nome da Loja': 'Filial',
               'Data da Venda': 'Data da Venda'}

dados_csv = rename_columns(dados_csv, key_mapping)
nome_colunas_csv = get_columns(dados_csv)
print(f"Colunas Renomeadas csv: {nome_colunas_csv}")

dados_fusao = join(dados_json, dados_csv)
nome_colunas_fusao = get_columns(dados_fusao)
tamanho_dados_fusao = size_data(dados_fusao)
print(nome_colunas_fusao)
print(tamanho_dados_fusao)

# 8 Area destinada a execucao do salvamento do arquivo combinado
#salvando dados

dados_fusao_tabela = transformando_dados_tabela(dados_fusao, nome_colunas_fusao)

path_dados_combinados = 'data_processed/dados_combinados.csv'

salvando_dados(dados_fusao_tabela, path_dados_combinados)

print(path_dados_combinados)
1 resposta
solução!

Oii, Rony! Tudo bom?

Gostei de como você organizou o script em etapas numeradas, deixando clara a ordem cronológica das ações. Isso ajuda muito na leitura e manutenção do código. A clareza dos nomes das funções também está excelente.

Caso tenha dúvidas ou mais resoluções que queira compartilhar, sinta-se à vontade.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!