Questão nº 99
Questão de Tecnologia da Informação · FGV CGE-SP 2025 (nº 99)
Um cientista de dados utiliza a linguagem Python e a biblioteca Pandas para processar um dataset de despesas da Controladoria. Ele precisa realizar uma operação que combine dados de dois DataFrames (despesas_2023 e despesas_2024) com base em uma coluna-chave comum (ID_Gestor), mas o novo DataFrame resultante deve incluir apenas os registros que possuem correspondência em ambos os DataFrames.
Assinale a opção que indica a operação fundamental do Pandas, análoga a uma operação de join em SQL, que deve ser usada para alcançar esse resultado, que inclui apenas a intersecção dos registros.
- Apd.concat(), usando o argumento axis=0 para empilhamento vertical.
- Bpd.merge(), usando o argumento how='inner'. (alternativa correta)
- Cpd.merge(), usando o argumento how='left'.
- Dpd.join(), usando a função pd.apply() para intersecção manual.
- Epd.pivot_table(), para agregação e resumo.
Resposta comentada
Gabarito Alternativa B
Para combinar dados de diferentes tabelas (DataFrames) em Python com Pandas, usando uma coluna em comum, e obter apenas os registros que existem em ambos os DataFrames (a intersecção), usamos uma operação de merge com o tipo "inner".
- (A) Incorreta:
pd.concat()empilha DataFrames verticalmente ou horizontalmente, não realiza uma combinação baseada em uma coluna-chave para encontrar a intersecção. - (B) Correta:
pd.merge()é a função do Pandas para combinar DataFrames de forma análoga a um join em SQL. O argumentohow='inner'especifica um inner join, que retorna apenas as linhas que possuem valores correspondentes na coluna-chave em ambos os DataFrames, exatamente o que a questão pede para a intersecção. - (C) Incorreta:
pd.merge()comhow='left'realiza um left join, que inclui todas as linhas do DataFrame esquerdo e apenas as correspondentes do direito, não sendo a intersecção pura. - (D) Incorreta: Embora exista
pd.DataFrame.join(), ela é mais comum para combinar por índice ou com uma chave específica, mas a combinação compd.apply()para "intersecção manual" seria ineficiente e não a operação fundamental para esse fim. A armadilha aqui é a menção de "join", que pode levar a crer quepd.join()é a resposta, mas a forma como é proposta (comapplypara "intersecção manual") a torna errada e ineficiente, sendopd.merge()a ferramenta correta e idiomática. - (E) Incorreta:
pd.pivot_table()é usada para agregar e resumir dados, criando tabelas dinâmicas, e não para combinar DataFrames buscando a intersecção de registros.
Fonte: FGV CGE-SP 2025 Auditor Estadual de Controle - Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.