Questão nº 26
Questão de Recursos Energéticos · FGV EPE 2024 (nº 26)
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>.
- A1.0
- B2.0
- C3.0
- D4.0 (alternativa correta)
- ENaN
Resposta comentada
Gabarito Alternativa D
O conceito-chave aqui é a manipulação de dados com a biblioteca Pandas em Python, especificamente como DataFrames e Series são criados, como as colunas são selecionadas, e como a indexação (seleção de elementos) funciona, tanto por posição (iloc) quanto por rótulo (loc ou indexação direta).
- (A) Incorreta: O valor 1.0 pertence à coluna "0", que não é a coluna selecionada na linha <5>.
- (B) Incorreta: O valor 2.0 pertence à coluna "0", que não é a coluna selecionada na linha <5>.
- (C) Incorreta: Este seria o primeiro elemento da Series
x["1"][:2]. A armadilha aqui é confundiriloc[-1](o último elemento) comiloc[0](o primeiro elemento), ou pensar que a fatia[:2]de alguma forma levaria apenas ao primeiro elemento. - (D) Correta: Vamos analisar a linha <5> passo a passo:
x = pd.DataFrame(x): O DataFramexé criado. Ele alinha as Series pelos seus índices. Onde um índice não existe em uma Series,NaN(Not a Number) é inserido.0 1 a 1.0 3.0 b 2.0 4.0 c NaN 5.0x["1"]: Seleciona a coluna de rótulo "1". Isso retorna uma Series:a 3.0 b 4.0 c 5.0 Name: 1, dtype: float64x["1"][:2]: Realiza um fatiamento posicional (como em listas Python) na Series resultante.[:2]significa "do início até a posição 2, excluindo a posição 2". As posições são 0 (para 'a') e 1 (para 'b').a 3.0 b 4.0 Name: 1, dtype: float64.iloc[-1]: Aplica o indexador iloc (integer-location based indexing) para selecionar o elemento pela sua posição inteira.-1significa o último elemento. Na Seriesa 3.0, b 4.0, o último elemento (posição 1) é4.0.
Portanto,yrecebe o valor4.0.
- (E) Incorreta:
NaNaparece no DataFramexna posiçãox.loc['c', '0']. A coluna "1" não contémNaNe o fatiamento e seleção não resultam emNaN.
Fonte: FGV EPE 2024 Analista de Pesquisa Energética - Recursos Energéticos (Caderno Tipo 1). Reproduzida para fins de estudo.