1
resposta

Exemplo Aula 5.4 Iterando com DataFrames

Pessoal, boa tarde.

       Não entendi muito bem o código abaixo, por favor, poderiam me explicar?
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

dataset
1 resposta

Oi Kiko!

Peço desculpas pela demora em dar um retorno.

Vamos lá.

A ferramenta iterrows(), nos ajuda a criar um iterador. Se criarmos uma lista a partir desse iterador, teremos:

list(dataset.iterrows()) # cria diversas tuplas com duas informações em cada

Resultado:

[('Jetta Variant',
  Motor                                              Motor 4.0 Turbo
  Ano                                                           2003
  Quilometragem                                                44410
  Zero_km                                                      False
  Acessórios       ['Rodas de liga', 'Travas elétricas', 'Piloto ...
  Valor                                                      88078.6
  Km_media                                                   2775.62
  Name: Jetta Variant, dtype: object),
 ('Passat', Motor                                                 Motor Diesel
  Ano                                                           1991
  Quilometragem                                                 5712
  Zero_km                                                      False
  Acessórios       ['Central multimídia', 'Teto panorâmico', 'Fre...
  Valor                                                       106162
  Km_media                                                       204
  Name: Passat, dtype: object),

  # restante do resultado

Podemos observar que é gerada uma lista contendo várias tuplas, sendo cada uma dessas tuplas compostas pelo índice do nosso dataframe (os nomes dos veículos) e por uma Series com as informações da linha correspondente a esse índice. Isso nos permitirá acessar cada uma dessas informações. Conforme mostrado a aula pelo professor.

Sendo assim, para conseguirmos acessar cada uma dessas informações, podemos fazer o for index, row in dataset.iterrows():, onde o index irá percorrer o primeiro elemento de cada uma das tuplas, ou seja, os nomes dos veículos e row, por sua vez, percorrerá o segundo elemento de cada tupla, ou seja, as Series contendo os dados de cada carro.

Sendo assim, quando fazemos:

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

O que acontece é o seguinte, se o carro não for do ano de 2019, ou seja, se 2019 subtraído do ano do carro for diferente de 0, nós desejamos calcular a quilometragem média desse carro. E, para isso, nós utilizamos essa linha dataset.loc[index, 'KM_Media'] = row['Quilometragem'] / (2019 - row['Ano']), na qual, por meio do comando loc, localizamos o index que estiver sendo iterado naquele momento pelo laço e criamos uma nova coluna chamada 'KM_Media', sendo que o valor dessa coluna vai ser igual ao valor da quilometragem do carro, dividida pela subtração dos anos. Nós fazemos essa conta da seguinte forma: row['Quilometragem'] / (2019 - row['Ano']

E, caso o carro seja do ano de 2019, nós atribuimos para a coluna 'KM_Media' daquele carro, o valor 0: dataset.loc[index, 'KM_Media'] = 0.

Resumindo então, essa parte do código serve para percorrer todo o dataframe e calcular a quilometragem média de cada um dos carros, sendo que, aqueles que são do ano de 2019, terão a quilometragem média igual a 0.

Espero ter ajudado :)

Qualquer dúvida me avisa que nós vamos nos falando.

Bons estudos!