1
resposta

[Dúvida] erro

import json
import csv
#funcões
def l_json(path_json):
    dados_json = []
    with open(path_json, 'r') as file:
        dados_json = json.load(file)
    return dados_json
def l_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 l_dados(path, tipo_arquivo):
    dados = []
    if tipo_arquivo == 'csv':
        dados = l_csv(path)
    elif tipo_arquivo == 'json':
        dados = l_json(path)
    return dados
def get_col(dados):
    return list(dados[0].keys())
def re_col(dados, k_map):
    n_d_csv = []
    for old_dict in dados:
        dict_temp = {}
        for old_key, value in old_dict.items():
            dict_temp[k_map[old_key]] = value
        n_d_csv.append(dict_temp)
    return n_d_csv
#leitura de dados
path_json = 'data_raw/dados_empresaA.json'
path_csv = 'data_raw/dados_empresaB.csv'
#transformação de dados
k_map = {'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'}
n_d_csv = re_col(n_d_csv, k_map)
n_col_csv = get_col(n_d_csv)
print(n_col_csv)

obtendo seguinte erro:

(.venv) root@DESKTOP-PFNJM04:~/Documentos/pipeline_dados# /root/Documentos/pipeline_dados/.venv/bin/python /root/Documentos/pipeline_dados/scripts/arq_fus_fev.py
Traceback (most recent call last):
  File "/root/Documentos/pipeline_dados/scripts/arq_fus_fev.py", line 43, in <module>
    n_d_csv = re_col(n_d_csv, k_map)
NameError: name 'n_d_csv' is not defined
1 resposta

Oii, Lucas! Tudo bem?

O erro é devido a variável n_d_csv que não foi definida antes de ser usada na linha n_d_csv = re_col(n_d_csv, k_map).

Sendo assim, sugiro que antes de renomear as colunas, você precisa carregar os dados. Inclua a chamada correta para l_dados antes de processar os dados, por exemplo:

# Carregar dados CSV
dados_csv = l_dados(path_csv, 'csv')

# Transformação de dados
n_d_csv = re_col(dados_csv, k_map)  # Agora `n_d_csv` está definido
n_col_csv = get_col(n_d_csv)

print(n_col_csv)

Faça o teste com base na sugestão e observe se funciona como esperado.

Até mais, Lucas!