Olá, fiz o código na aula e, quando fui testar, ele deu o seguinte erro:
Traceback (most recent call last): File "/home/calebe/pipeline_dados/scripts/fusao_mercado_fev.py", line 70, in dados_empresaA = Dados(path_json, 'json') File "/home/calebe/pipeline_dados/scripts/processamento_dados.py", line 10, in init self.dados = self.leitura_dados() AttributeError: 'Dados' object has no attribute 'leitura_dados'
Eu já verifiquei o código várias vezes mas não achei nada diferente do curso. Segue os códigos:
fusao_mercado_fev.py:
import json
import csv
from processamento_dados import Dados
def size_data(dados):
return len(dados)
def join(dadosA, dadosB):
combined_list = []
combined_list.extend(dadosA)
combined_list.extend(dadosB)
return combined_list
def transforma_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, 'Indisponível'))
dados_combinados_tabela.append(linha)
return dados_combinados_tabela
def salva_dados(dados, path):
with open(path, 'w') as file:
writer = csv.writer(file)
writer.writerows(dados)
path_json = 'data_raw/dados_empresaA.json'
path_csv = 'data_raw/dados_empresaB.csv'
#Extract
dados_empresaA = Dados(path_json, 'json')
print(f'''Nome das colunas da empresa A: {dados_empresaA.nomes_colunas}
Tamanho dos dados da empresa A: {dados_empresaA.qtd_linhas}''')
dados_empresaB = Dados(path_csv, 'csv')
print(f'''Nome das colunas da empresa B: {dados_empresaB.nome_colunas}
Tamanho dos dados da empresa B: {dados_empresaB.qtd_linhas}''')
#Transform
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_empresaB.rename_columns(key_mapping)
print(f'Renomeando os nomes das colunas: {dados_empresaB.nomes_colunas}')
(Retirei os comentários para ocupar menos linhas aqui no fórum)
processamento_dados.py:
import csv
import json
class Dados:
def __init__(self, path, tipo_dados):
self.path = path
self.tipo_dados = tipo_dados
self.dados = self.leitura_dados()
self.nomes_colunas = self.get_columns()
self.qtd_linhas = self.size_data()
def leitura_json(self):
dados_json = []
with open(self.path, 'r') as file:
dados_json = json.load(file)
return dados_json
def leitura_csv(self):
dados_csv = []
with open(self.path, 'r') as file:
spamreader = csv.DictReader(file, delimiter=',')
for row in spamreader:
dados_csv.append(row)
return dados_csv
def leitura_dados(self):
dados = []
if self.tipo_dados == 'csv':
dados = self.leitura_csv()
elif self.tipo_dados == 'json':
dados = self.leitura_json()
return dados
def get_columns(self):
return list(self.dados[-1].keys())
def rename_columns(self, key_mapping):
new_dados = []
for old_dict in self.dados:
dict_temp = {}
for old_key, value in old_dict.items():
dict_temp[key_mapping[old_key]] = value
new_dados.append(dict_temp)
self.dados = new_dados
self.nomes_colunas = self.get_columns()
def size_data(self):
return len(self.dados)
Agradeço se puder identificar o(s) erro(s) me responder o mais rápido possível!