3
respostas

dataset.loc[]

Bom dia!

No caso desse exercício, como eu faço para obter as mesmas informações, usando dataset.loc[]?

Ou seja, tendo os seguintes dados:

import pandas as pd

dados = {
    'Nome': ['Jetta', 'Passat', 'Crossfox', 'DS5', 'Fusca'], 
    'Motor': ['Motor 4.0 Turbo', 'Motor Diesel', 'Motor Diesel V8', 'Motor 2.0', 'Motor 1.6'],
    'Ano': [2019, 2003, 1991, 2019, 1990],
    'Quilometragem': [0.0, 5712.0, 37123.0, 0.0, 120000.0],
    'Zero_km': [True, False, False, True, False],
    'Valor': [88000.0, 106000.0, 72000.0, 89000.0, 32000.0]
}

dataset = pd.DataFrame(dados)

Alternativa contendo o código que seleciona somente as informações de Nome, Ano, Quilometragem e Valor dos carros Passat e Crossfox.:

dataset[['Nome', 'Ano', 'Quilometragem', 'Valor']][1:3]

Como fazer para obter as mesmas informações, usando:

dataset.loc[]

??

3 respostas

Bom dia Viviane!

O loc[] diferentemente do slicing normal, inclui o início e o fim, exemplo:

# Seleciona da linha 1 e vai até a anterior à 3 (não inclui o valor final)
dataset[['Nome', 'Ano', 'Quilometragem', 'Valor']][1:3]

# Seleciona da linha 1 e vai até a 2 (inclui o valor final)
dataset[['Nome', 'Ano', 'Quilometragem', 'Valor']].loc[1:2]

Então como visto no exemplo tudo que você precisa fazer é modificar o segundo número de 3 para 2 para ter o mesmo resultado.


Como alternativa dá para passar além das linhas a lista de colunas:

# Primeiro informamos as linhas que queremos, e em seguida as colunas
dataset.loc[1:2, ['Nome', 'Ano', 'Quilometragem', 'Valor']]

Espero ter ajudado, qualquer dúvida é só falar!

Oi Lucas,

Juntando a sua explicação e analisando melhor os exercícios, pude perceber também que existe uma diferença ao utilizar o loc(), caso o index esteja definido com nomes ou não esteja definido (ficando numérico). No caso de estar definido, esse modelo que vc passou não funciona. Acredito que por isso eu não estava conseguindo rodar. Já o iloc não faz essa diferença, já que utiliza números de qualquer forma.

Obrigada pela ajuda!

Isso mesmo Viviane, bem observado. Enquanto o loc se baseia nos nomes (labels) o iloc se baseia na posição numérica das linhas e colunas.

Obrigado também por compartilhar a explicação!