1
resposta

Resultado diferente do gabarito

Boa tarde! Assim como o colega RENAN SILVA CUNHA, meu resultado para o exercício (ítem 7) da aula 4 diverge do gabarito citado. Ao final da execução dos comandos o resultado é o que segue. Notei que o post do colega não foi respeitado, já que ele mostrou todo o código fonte, e foi respondido com uma resposta robótica. Lamentável. Resutado do Exercício 7

1 resposta

Oii Cassio, tudo bem contigo?

Vamos criar o DataFrame em questão para entendermos certinho o código apresentado no exercício:

data = [[9,6,3], [8,5,2], [7,4,1]]
df = pd.DataFrame(data, list('ZXY'), list('CBA'))
df

Resultado:

CBA
Z963
X852
Y741

Uma vez que nós temos esse DataFrame, podemos executar as três linhas de códigos apresentadas no exercício:

df.sort_index()
df.sort_index(axis = 1)
df

Resultado:

CBA
Z963
X852
Y741

Se você executar essas três linhas de códigos em uma mesma célula, você também vai obter esse resultado, que é igual ao DataFrame inicial.

Mas por que obtivemos o mesmo DataFrame inicial como resultado?

Isso acontece, porque quando executamos as seguintes linhas de códigos:

df.sort_index()
df.sort_index(axis = 1)

nós não estamos alterando o conteúdo da nossa variável df. A maioria dos métodos da biblioteca pandas não sobrescreve o DataFrame original quando aplicamos eles. Esses métodos, ao serem aplicados em um DataFrame, geram apenas uma visualização do resultado que é obtido com a aplicação daquele método.

Dessa forma, se a gente executa esse trecho de código em uma célula separada, vamos conseguir visualizar o DataFrame modificado:

df.sort_index(axis = 1)

Resultado:

ABC
Z369
X258
Y147

No entanto, se a gente executa esse código e em seguida visualizamos o conteúdo da variável df, vamos perceber que ele realmente não sofre alterações:

df.sort_index(axis = 1)
df

Resultado:

CBA
Z963
X852
Y741

Caso a gente queira que a variável original df seja sobrescrita com o DataFrame resultante do método sort_index(), existem duas alternativas:

  • acrescentar o parâmetro inplace=True:
df.sort_index(axis = 1, inplace=True)
df
  • ou sobrescrever o conteúdo da variável:
df = df.sort_index(axis = 1)
df

Utilizando qualquer uma das formas mostradas acima o resultado ao printar a variável df é o seguinte:

ABC
Z369
X258
Y147

o DataFrame resultante da aplicação do método sort_index().

Mas se não utilizamos nenhuma das opções acima, conforme é apresentado no código do exercício, o DataFrame df continua da mesma forma, sem alterações. E por isso a resposta correta é a letra A.

Espero que tenha conseguido te ajudar. Qualquer dúvida me avisa :)

Bons estudos!