1
resposta

DÚVIDAS__ Utilizando .loc e .iloc para seleções

No exercício 07, temos os seguinte códigos:

import pandas as pd

dados = { '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, index = ['Jetta', 'Passat', 'Crossfox', 'DS5', 'Fusca'])

E como respostas para output:

dataset.loc[['Passat', 'DS5'], ['Motor', 'Valor']]

e

dataset.iloc[[1, 3], [0, -1]]

A minha dúvida é em relação a seguinte parte do código:

dataset = pd.DataFrame(dados, index = ['Jetta', 'Passat', 'Crossfox', 'DS5', 'Fusca'])

MEU ENTENDIMENTO TEÓRICO:

Do dicionário 'dados', compreendo que temos o par Key / Values para cada conjunto de informações. Ou seja, temos o formato:

dicionario {key: Values}

Exemplo: Key = Motor' Values (lista) = ['Motor 4.0 Turbo', 'Motor Diesel', 'Motor Diesel V8', 'Motor 2.0', 'Motor 1.6'].

No meu entendimento, Key é linha e Values (no caso, lista) é coluna, ou seja, visualemte teriamos algo mais ou menos assim:

Motor: Motor 4.0 Turbo Motor: Motor Diesel Motor: Motor Diesel V8 Motor: Motor 2.0 Motor: Motor 1.6

DÚVIDA_01: Se tudo acima estiver correto, por que quando se fez

dataset = pd.DataFrame(dados, index = ['Jetta', 'Passat', 'Crossfox', 'DS5', 'Fusca'])

'dados' foi colocado na posição de linha e index no de coluna?

DÚVIDA_02: Além disso, como que o código entende que o index, colocado na posição de coluna, é para jogar cada nome de carro em uma key ?

OBS: não foi apresentado na video aula a utilização de index em DataFrame.

1 resposta

Olá Thiago,

Você disse que esse foi o seu entendimento: "Key é linha e Values (no caso, lista) é coluna" mas no caso de passar um dicionário, cada Key se torna o nome de uma coluna os valores ligados àquela Key formam essa coluna:

import pandas as pd

dados = {
    'Motor': ['Motor 4.0 Turbo', 'Motor Diesel', 'Motor Diesel V8', 'Motor 2.0', 'Motor 1.6'],
    'Ano': [2019, 2003, 1991, 2019, 1990],
}

dataset = pd.DataFrame(dados)
dataset


Já quando passamos o parâmetro index apenas estamos informando o pandas para não utilizar a sequência numérica padrão e sim os valores informados (o index ou índice pode ser considerado como um nome ou identificador de cada linha).

O pandas entende onde colocar cada index porque a gente informou na ordem correta, ele simplesmente pega a lista e coloca cada item dessa lista como o índice de uma linha, a gente que tem que saber disso e informar o index na ordem correta.

Index padrãoIndex Personalizado