Questão nº 26

Questão de Economia de Energia · FGV EPE 2024 (nº 26)

FGV2024Analista de Pesquisa Energética - Economia de EnergiaEconomia de Energia
Gabarito: Dver comentário ↓

Considere o código a seguir, escrito na linguagem de programação Python (versão 3.11.3).

<1> import pandas as pd

<2> x = {"0": pd.Series([1.0, 2.0], index=["a", "b"]),

<3> "1": pd.Series([3.0, 4.0, 5.0], index=["a", "b", "c"])}

<4> x = pd.DataFrame(x)

<5> y = x["1"][:2].iloc[-1]

Assinale a opção que indica o valor que y recebe na linha <5>.

Resposta comentada

Gabarito Alternativa D

Em Pandas, um DataFrame é uma tabela de dados, e uma Series é uma coluna dessa tabela. Para acessar dados, usamos indexação baseada em rótulos (como df['coluna'] ou df.loc[]) e indexação baseada em posição inteira (df.iloc[]). Ao criar um DataFrame a partir de Series com índices diferentes, o Pandas alinha os dados pelos rótulos, preenchendo com NaN (Not a Number) onde não há correspondência.

Vamos analisar o código passo a passo:

  1. Linhas <2> e <3>: Cria um dicionário x onde as chaves são os nomes das futuras colunas e os valores são Series.

    • "0": pd.Series([1.0, 2.0], index=["a", "b"])
    • "1": pd.Series([3.0, 4.0, 5.0], index=["a", "b", "c"])
  2. Linha <4>: Converte o dicionário x em um pd.DataFrame. O Pandas alinha as Series pelos seus índices. O índice 'c' existe apenas na Series "1", então a coluna "0" terá um NaN para o rótulo 'c'.
    O DataFrame x resultante será:

        0    1
    a  1.0  3.0
    b  2.0  4.0
    c  NaN  5.0
    
  3. Linha <5>: y = x["1"][:2].iloc[-1]

    • x["1"]: Seleciona a coluna com o rótulo "1" do DataFrame x. Isso retorna uma Series:
      a    3.0
      b    4.0
      c    5.0
      Name: 1, dtype: float64
      
    • x["1"][:2]: Realiza um fatiamento posicional (slice) nos dois primeiros elementos da Series resultante. [:2] significa "do início até a posição 2 (exclusiva)".
      A Series resultante é:
      a    3.0
      b    4.0
      Name: 1, dtype: float64
      
    • .iloc[-1]: Aplica indexação posicional (integer-location based indexing) no objeto resultante do fatiamento. [-1] significa "o último elemento".
      Na Series a 3.0, b 4.0, o último elemento é 4.0.

Portanto, y recebe o valor 4.0.

(A) Incorreta: 1.0 é o primeiro valor da coluna "0", não da coluna "1" que está sendo acessada.
(B) Incorreta: 2.0 é o segundo valor da coluna "0", não da coluna "1".
(C) Incorreta: 3.0 é o primeiro valor da Series fatiada x["1"][:2]. O comando .iloc[-1] busca o último valor, não o primeiro. Armadilha da banca: O aluno pode confundir iloc[-1] com o primeiro elemento ou com um índice que não existe, ou simplesmente esquecer que [-1] significa o último elemento em Python.
(D) Correta: Conforme a análise passo a passo, x["1"] seleciona a coluna [3.0, 4.0, 5.0]. [:2] fatia para [3.0, 4.0]. Finalmente, .iloc[-1] seleciona o último elemento dessa fatia, que é 4.0.
(E) Incorreta: NaN (Not a Number) apareceria se houvesse uma tentativa de acesso a um elemento inexistente após o alinhamento do DataFrame (por exemplo, x.loc['c', '0']), mas não é o caso aqui.

Fonte: FGV EPE 2024 Analista de Pesquisa Energética - Economia de Energia (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho