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

O tamanho dos dados fusão saiu errado.

A tamanho dos dados fusão esta incorreto. Segue o programa e a saída.

import json
import csv


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

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

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

def size_data(dados):
    return len(dados)

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

# Iniciando a leitura
path_json = 'data_raw/dados_empresaA.json'   
path_csv = 'data_raw/dados_empresaB.csv'  

dados_json = leitura_dados(path_json,'json')
nome_colunas_json = get_columns(dados_json)
size_data_json = size_data(dados_json)

print(f'Nome colunas json : {nome_colunas_json}')
print(f'Tamanho dos dados json : {size_data_json}')

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

print(f'Nome colunas csv antes : {nome_colunas_csv}')
print(f'Tamanho dos dados csv : {size_data_csv}')

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'
    }

# Transformação dos dados 

dados_csv = rename_columns(dados_csv, key_mapping)
nome_colunas_csv = get_columns(dados_csv)
print(f'Nome colunas csv depois : {nome_colunas_csv}')

dados_fusão = join(dados_csv, dados_json)
nome_colunas_fusão = get_columns(dados_fusão)
size_data_fusão = size_data(dados_fusão)

print(f"Nome das colunas fusão : {nome_colunas_fusão}")
print(f'Tamanho da fusão : {size_data_fusão}')

Saída:

Nome colunas json : ['Nome do Produto', 'Categoria do Produto', 'Preço do Produto (R$)', 'Quantidade em Estoque', 'Filial'] Tamanho dos dados json : 3123 Nome colunas csv antes : ['Nome do Item', 'Classificação do Produto', 'Valor em Reais (R$)', 'Quantidade em Estoque', 'Nome da Loja', 'Data da Venda'] Tamanho dos dados csv : 1323 Nome colunas csv depois : ['Nome do Produto', 'Categoria do Produto', 'Preço do Produto (R$)', 'Quantidade em Estoque', 'Filial', 'Data da Venda'] Nome das colunas fusão : ['Nome do Produto', 'Categoria do Produto', 'Preço do Produto (R$)', 'Quantidade em Estoque', 'Filial', 'Data da Venda'] Tamanho da fusão : 3124

1 resposta
solução!

Corrigi o erro já. O erro estava na função rename_columns, aonde eu passava o parâmetro "dados" e utilizava "dados_csv" no for dentro da função.

def rename_columns(dados, key_mapping):
    new_dados_csv = []
    for old_dict in dados_csv:`

Segue a função corrigida :

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)