O Tribunal de Contas recebeu registros de pagamentos para análise. De acordo com as regras de qualidade da base:
• cada id_pagamento deve aparecer apenas uma vez;
• o campo valor deve estar preenchido e conter número maior que zero;
• após o tratamento dos dados, os registros válidos devem ser agrupados segundo a proximidade entre seus valores.
Para realizar o procedimento, foi elaborado o seguinte código em Python, que implementa uma forma simplificada de agrupamento por centroides:
dados = [
{"id_pagamento": 101, "valor": 100},
{"id_pagamento": 102, "valor": None},
{"id_pagamento": 101, "valor": 100},
{"id_pagamento": 103, "valor": 120},
{"id_pagamento": 104, "valor": 900},
{"id_pagamento": 105, "valor": 1000},
{"id_pagamento": 106, "valor": 110},
]
identificadores = set()
validos = []
problemas = []
for registro in dados:
identificador = registro["id_pagamento"]
valor = registro["valor"]
if identificador in identificadores:
problemas.append((identificador,
"duplicidade"))
elif valor is None or valor <= 0:
problemas.append((identificador, "valor
inválido"))
else:
identificadores.add(identificador)
validos.append(registro)
centroides = [100.0, 1000.0]
for _ in range(2):
grupos = {0: [], 1: []}
for registro in validos:
valor = registro["valor"]
distancias = [
abs(valor - centroide)
for centroide in centroides
]
grupo = distancias.index(min(distancias))
grupos[grupo].append(registro)
centroides = [
sum(
registro["valor"]
for registro in grupos[indice]
)
/ len(grupos[indice])
for indice in range(2)
]
grupo_maior_valor =
centroides.index(max(centroides))
selecionados = [
registro["id_pagamento"]
for registro in grupos[grupo_maior_valor]
]
A respeito da execução do código e das etapas de qualidade e mineração de dados, assinale a afirmativa correta.
Provas
Questão presente nas seguintes provas
Auditor de Controle Externo - TI (Reaplicação)
80 Questões