sábado, 24 de abril de 2021

Qual é a diferença entre os métodos iloc e loc nos DataFrames pandas?

A biblioteca pandas do python é muito útil para a manipulação de dados matemáticos e é amplamente utilizada na área de Machine Learning. É composto por vários métodos para o seu funcionamento adequado. loc() e iloc() são dois desses métodos. Eles são usados para fatiar dados no DataFrame pandas. Eles ajudam na seleção conveniente de dados do DataFrame. Eles são usados para filtrar os dados de acordo com algumas condições. O funcionamento de ambos os métodos é explicado no conjunto de dados de amostra de carros.

import pandas as pd

data = pd.DataFrame({
    'Marca': ['Maruti', 'Hyundai', 'Tata', 'Mahindra', 'Maruti', 'Hyundai', 'Renault', 'Tata', 'Maruti'],
    'Ano': [2012, 2014, 2011, 2015, 2012, 2016, 2014, 2018, 2019],
    'kms dirigido:': [50000, 30000, 60000, 25000, 10000, 46000, 31000, 15000, 12000],
    'Cidade': ['Gurgaon', 'Delhi', 'Mumbai', 'Delhi', 'Mumbai', 'Delhi', 'Mumbai','Chennai', 'Ghaziabad'],
    'Milhagem': [28, 27, 25, 26, 28, 29, 24, 21, 24]
})
   

print(data)

Saída:

      Marca   Ano  kms dirigido:     Cidade  Milhagem
0    Maruti  2012          50000    Gurgaon        28
1   Hyundai  2014          30000      Delhi        27
2      Tata  2011          60000     Mumbai        25
3  Mahindra  2015          25000      Delhi        26
4    Maruti  2012          10000     Mumbai        28
5   Hyundai  2016          46000      Delhi        29
6   Renault  2014          31000     Mumbai        24
7      Tata  2018          15000    Chennai        21
8    Maruti  2019          12000  Ghaziabad        24

loc(): loc() é o método de seleção de dados baseado em rótulo, o que significa que temos que passar o nome da linha ou coluna que queremos selecionar. Este método inclui o último elemento do intervalo passado nele, ao contrário iloc(). loc() pode aceitar os dados booleanos ao contrário iloc(). Muitas operações podem ser realizadas usando o método loc() como:

1. Seleção de dados de acordo com algumas condições:

# mostra apenas linhas do dataframe onde o valor da coluna
# Marca é Maruti e o valor da coluna Milhagem é maior que 25
print(data.loc[(data.Marca == 'Maruti') & (data.Milhagem > 25)])

Saída:

    Marca   Ano  kms dirigido:   Cidade  Milhagem
0  Maruti  2012          50000  Gurgaon        28
4  Maruti  2012          10000   Mumbai        28

2. Selecionando um intervalo de linhas do DataFrame:

# selecionando o intervalo da linha 2 até a linha 5
print(data.loc[2:5])

Saída:

      Marca   Ano  kms dirigido:  Cidade  Milhagem
2      Tata  2011          60000  Mumbai        25
3  Mahindra  2015          25000   Delhi        26
4    Maruti  2012          10000  Mumbai        28
5   Hyundai  2016          46000   Delhi        29

3. Atualizando o valor de qualquer coluna:

# Atualiza o valor da coluna Milhagem para 22
# se o valor da coluna ano for menor que 2015
data.loc[(data.Ano < 2015), ['Milhagem']] = 22
print(data)

Saída:

      Marca   Ano  kms dirigido:     Cidade  Milhagem
0    Maruti  2012          50000    Gurgaon        22
1   Hyundai  2014          30000      Delhi        22
2      Tata  2011          60000     Mumbai        22
3  Mahindra  2015          25000      Delhi        26
4    Maruti  2012          10000     Mumbai        22
5   Hyundai  2016          46000      Delhi        29
6   Renault  2014          31000     Mumbai        22
7      Tata  2018          15000    Chennai        21
8    Maruti  2019          12000  Ghaziabad        24

iloc(): iloc() é um método de seleção baseado em indexação, o que significa que temos que passar um índice inteiro no método para selecionar uma linha/coluna específica. Este método não inclui o último elemento do intervalo passado, ao contrário do loc(). iloc() não aceita os dados booleanos ao contrário loc(). As operações realizadas por iloc() são:

1. Seleção de linhas usando índices inteiros:

import pandas as pd

data = pd.DataFrame({
    'Marca': ['Maruti', 'Hyundai', 'Tata', 'Mahindra', 'Maruti', 'Hyundai', 'Renault', 'Tata', 'Maruti'],
    'Ano': [2012, 2014, 2011, 2015, 2012, 2016, 2014, 2018, 2019],
    'kms dirigido:': [50000, 30000, 60000, 25000, 10000, 46000, 31000, 15000, 12000],
    'Cidade': ['Gurgaon', 'Delhi', 'Mumbai', 'Delhi', 'Mumbai', 'Delhi', 'Mumbai','Chennai', 'Ghaziabad'],
    'Milhagem': [28, 27, 25, 26, 28, 29, 24, 21, 24]
})

# seleciona as linhas 0, 2, 4 e 7 do dataframe
print(data.iloc[[0, 2, 4, 7]])

Saída:

    Marca   Ano  kms dirigido:   Cidade  Milhagem
0  Maruti  2012          50000  Gurgaon        28
2    Tata  2011          60000   Mumbai        25
4  Maruti  2012          10000   Mumbai        28
7    Tata  2018          15000  Chennai        21

2. Selecionando um intervalo de colunas e linhas simultaneamente:

# Selecionando o intervalo de linhas de 1 a 4
# e selecionando o intervalo entre a segunda coluna
# e a quarta
print(data.iloc[1:5, 2:5])

Saída:

   kms dirigido:  Cidade  Milhagem
1          30000   Delhi        27
2          60000  Mumbai        25
3          25000   Delhi        26
4          10000  Mumbai        28

Artigo escrito por vipul1501 e traduzido por Acervolima de Difference between loc() and iloc() in Pandas DataFrame.

Licença

0 comentários:

Postar um comentário