1
resposta

multiplas duvidas

tenho multiplas duvidas do que ta acontecendo nesse código

no código:

for index, row in dataset.iterrows():
  if(2019 - row['Ano'] != 0):
    dataset.loc[index, 'Km_media'] = row['Quilometragem'] / (2019 - row['Ano'])
  else:
    dataset.loc[index, 'Km_media'] = 0

na segunda linha if(2019 - row['Ano'] como é que o python sabe que ta se referindo a uma linha?

na terceira linha dataset.loc[index, 'Km_media'] , aqui como é que o python sabe que o index é o indice? e como é que ta sendo criado uma nova coluna?

1 resposta

Olá! Eu comecei a estudar há um par de semanas somente, mas vou te dar a minha opinião.

A respeito da primeira dúvida, quando o interrows é usado em um laço for, permite transitar através de todo um dataframe fila a fila (de fato "row" em inglês significa fila). O detalhe é que enquanto ele faz isso ele vai te devolvendo um par de dados cada vez: o primeiro é o índice, que seria o identificador da fila, às vezes é um número (0, 1, 2, 3 (...) como no caso do dataset do exemplo, outras pode ser uma etiqueta tipo "Passat", "Crossfox", "DS5" (...), depende de como o dataframe foi estruturado. O segundo dado é o valor associado ao índice, que pode ser um valor único ou vários valores (tipo uma lista), no seu exemplo o segundo dado que ele devolve é o conjunto de valores que integra a linha toda, ou seja "Nome", "Motor", "Ano" (...).

Como ele vai devolver 2 valores em cada iteração do laço for precisamos especificar 2 variáveis depois do for, no seu exemplo as variáveis são index que vai receber 0, 1, 2, 3 (...) e row que vai receber os valores de "Nome", "Motor", "Ano" (...).

Desta maneira, a primeira linha: "for index, row in dataset.iterrows():" pode ser interpretada como a seguinte série de comandos: "Entra al dataframe dataset, confere ele fila a fila e coloca o par de valores devolvidos nas variáveis index e row".

A respeito da segunda dúvida, Pandas sabe que index é o índice porque foi declarado desta forma ao criar o laço for.

Por outro lado, o .loc além de permitir fazer seleções dentro de um dataframe utilizando como referência o índice passado como parâmetro, também dá a possibilidade de criação de uma nova coluna dentro de um dataframe. A terceira linha do exemplo: "dataset.loc[index, 'Km_media'] = row['Quilometragem'] / (2019 - row['Ano'])", pode ser interpretada como a seguinte série de comandos: "Localiza dentro de dataset o índice correspondente, cria uma nova coluna com nome Km_media, guarda dentro dela o resultado do cálculo matemático".

Espero ter sido de ajuda :)