Questão de Programação — Conceitos básicos de programação — CESPE / CEBRASPE 2025
Programação›Conceitos básicos de programação
Código
ce196331
Banca
CESPE / CEBRASPE
Órgão
CAESB-DF
Ano
2025
Nível
Superior
Cargo
Analista de Suporte ao Negócio - Analista de Sistemas
Certa companhia de abastecimento de água organiza as informações da empresa em três conjuntos de dados: clientes (idCliente, nomeCliente), com dados dos clientes; imoveis (idImovel, idCliente, endereco), com dados de imóveis; e contas (idConta, idImovel, consumo), com dados do histórico de pagamento de contas e do consumo, em metros cúbicos, de cada conta. Essa organização leva em consideração que cada cliente pode ter vários imóveis (chave estrangeira: idCliente em imoveis) e que cada imóvel pode ter várias contas (chave estrangeira: idImovel em contas). Os conjuntos de dados (clientes, imoveis e contas) foram carregados para um DataFrame no Pandas.Com base nas informações da situação hipotética precedente, assinale a opção que corresponde ao trecho de código que, caso seja executado, exibirá corretamente o total de consumo por cliente na variável totalConsumo.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Pandas – Operações com DataFrames (merge e groupby)
Gabarito: letra B. Para obter o total de consumo por cliente, é necessário relacionar as tabelas imoveis e contas pela chave idImovel, pois somente imoveis possui o idCliente. Após o merge, agrupa-se por idCliente e soma-se o consumo. É exatamente o que ocorre no código da alternativa B.
A questão testa o uso correto do merge (ou pd.merge) e do groupby no Pandas, simulando um modelo relacional simples. Vejamos a estrutura:
O objetivo é totalizar o consumo por cliente. Como a tabela contas não contém o idCliente diretamente, é preciso percorrer o caminho contas → imoveis → clientes. O merge entre imoveis e contas (pela coluna comum idImovel) produz um DataFrame com as colunas de ambas, incluindo idCliente. A partir daí, groupby('idCliente')['consumo'].sum() agrupa por cliente e soma o consumo de todas as suas contas.
Critério
Alternativa B (Correta)
Alternativa A
Alternativa C
Alternativa D
Alternativa E
Merge utilizado
pd.merge(imoveis, contas, on='idImovel')
Nenhum
clientes.merge(contas, on='idCliente')
Nenhum
pd.merge(contas, imoveis, on='idCliente')
Chave do merge
idImovel (presente em ambas as tabelas)
—
idCliente (ausente em contas)
—
idCliente (ausente em contas)
Coluna de agrupamento
idCliente (vem de imoveis após merge)
idCliente (inexistente em contas)
idCliente
idImovel
idImovel
Resultado esperado
Consumo total por cliente
Erro (KeyError)
Erro (KeyError)
Consumo por imóvel (não por cliente)
Erro (KeyError)
Atende ao objetivo?
✅ Sim
❌ Não
❌ Não
❌ Não
❌ Não
Alternativa A — ❌ Incorreta
contas.groupby('idCliente')['consumo'].sum() – A tabela contasnão possui a coluna idCliente. Tentar agrupar por uma coluna inexistente gera erro (KeyError).
Faz o merge corretamente pela chave idImovel (presente em ambas) e depois agrupa pelo idCliente que veio de imoveis. Resultado correto.
Alternativa C — ❌ Incorreta
clientes.merge(contas, on='idCliente') – As tabelas clientes e contasnão compartilham a coluna idCliente. A coluna idCliente está em imoveis, não em contas. Esse merge falharia (KeyError) ou, se ignorarmos, não produziria o vínculo correto.
Alternativa D — ❌ Incorreta
contas.groupby('idImovel')['consumo'].sum() – Agrupa por imóvel, não por cliente. Um cliente pode ter vários imóveis, então o resultado seria o consumo por imóvel, não por cliente.
O merge tenta usar on='idCliente', mas contas não possui essa coluna. Além disso, agrupa por idImovel, novamente sem chegar ao cliente.
NÃO CAIA NESSA!
A banca explora o conhecimento das chaves estrangeiras e a necessidade de percorrer o relacionamento. Várias alternativas tentam pular etapas (A, C) ou agrupar por nível intermediário (D, E). Lembre-se: para agregar por cliente, primeiro junte as tabelas que ligam cliente à conta usando a ponte imoveis.