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