domingo, 25 de abril de 2021

Como obter nomes de linhas/índices no dataframe do Pandas

Ao analisar os conjuntos de dados reais, que geralmente são muito grandes em tamanho, talvez seja necessário obter as linhas ou os nomes dos índices para realizar algumas operações.

Vamos discutir como obter nomes de linhas no dataframe do pandas.

Primeiro, vamos criar um dataframe simples com nba.csv.

import pandas as pd 

data = pd.read_csv("https://media.geeksforgeeks.org/wp-content/uploads/nba.csv") 

data_top = data.head(10)

print(data_top)

Saída:

            Name            Team  Number Position   Age Height  Weight            College      Salary
0  Avery Bradley  Boston Celtics     0.0       PG  25.0    6-2   180.0              Texas   7730337.0
1    Jae Crowder  Boston Celtics    99.0       SF  25.0    6-6   235.0          Marquette   6796117.0
2   John Holland  Boston Celtics    30.0       SG  27.0    6-5   205.0  Boston University         NaN
3    R.J. Hunter  Boston Celtics    28.0       SG  22.0    6-5   185.0      Georgia State   1148640.0
4  Jonas Jerebko  Boston Celtics     8.0       PF  29.0   6-10   231.0                NaN   5000000.0
5   Amir Johnson  Boston Celtics    90.0       PF  29.0    6-9   240.0                NaN  12000000.0
6  Jordan Mickey  Boston Celtics    55.0       PF  21.0    6-8   235.0                LSU   1170960.0
7   Kelly Olynyk  Boston Celtics    41.0        C  25.0    7-0   238.0            Gonzaga   2165160.0
8   Terry Rozier  Boston Celtics    12.0       PG  22.0    6-2   190.0         Louisville   1824360.0
9   Marcus Smart  Boston Celtics    36.0       PG  22.0    6-4   220.0     Oklahoma State   3431040.0

Agora, vamos tentar obter o nome da linha do conjunto de dados acima.

Método #1: simplesmente iterar sobre os índices

import pandas as pd 

# criando um dataframe
data = pd.read_csv("nba.csv") 

# criando um novo dataframe
# com as cinco primeiras linhas
# do dataframe data
data_top = data.head() 

# interando sobre as linhas
for row in data_top.index:
    print(row, end=" ")

Saída:

0 1 2 3 4

Método #2: usando linhas com objeto dataframe

import pandas as pd 

# criando um dataframe
data = pd.read_csv("nba.csv") 

# criando um novo dataframe
# com as cinco primeiras linhas
# do dataframe data
data_top = data.head() 

print(list(data_top.index))

Saída:

[0, 1, 2, 3, 4]

Método #3: o atributo index.values retorna uma matriz de índice.

import pandas as pd 

# criando um dataframe
data = pd.read_csv("nba.csv") 

# criando um novo dataframe
# com as cinco primeiras linhas
# do dataframe data
data_top = data.head() 

print(data_top.index.values)

Saída:

[0 1 2 3 4]

Método #4: usando o método tolist() com valores fornecidos a lista de índice.

import pandas as pd 

# criando um dataframe
data = pd.read_csv("nba.csv") 

# criando um novo dataframe
# com as cinco primeiras linhas
# do dataframe data
data_top = data.head() 

print(data_top.index.values.tolist())

Saída:

[0, 1, 2, 3, 4]

Artigo escrito por Shivam_k e traduzido por Acervolima de How to get rows/index names in Pandas dataframe.

Licença

Como obter nomes de colunas no dataframe do pandas

Ao analisar os conjuntos de dados reais, que geralmente são muito grandes, podemos precisar obter os nomes das colunas para realizar algumas operações.

Vamos discutir como obter nomes de colunas no dataframe do Pandas.

Primeiro, vamos criar um dataframe simples com o arquivo nba.csv.

import pandas as pd 

# criando um dataframe a partir
# de um arquivo csv
data = pd.read_csv("https://media.geeksforgeeks.org/wp-content/uploads/nba.csv") 

# criando um novo dataframe com
# as 5 (padrão do método head) primeiras
# linhas do dataframe data
data_top = data.head() 

print(data_top)

Saída:

            Name            Team  Number Position   Age Height  Weight            College     Salary
0  Avery Bradley  Boston Celtics     0.0       PG  25.0    6-2   180.0              Texas  7730337.0
1    Jae Crowder  Boston Celtics    99.0       SF  25.0    6-6   235.0          Marquette  6796117.0
2   John Holland  Boston Celtics    30.0       SG  27.0    6-5   205.0  Boston University        NaN
3    R.J. Hunter  Boston Celtics    28.0       SG  22.0    6-5   185.0      Georgia State  1148640.0
4  Jonas Jerebko  Boston Celtics     8.0       PF  29.0   6-10   231.0                NaN  5000000.0

Agora vamos tentar obter o nome das colunas do conjunto de dados acima.

Método #1: simplesmente iterar nas colunas

import pandas as pd 

# criando um dataframe a partir
# de um arquivo csv
data = pd.read_csv("nba.csv") 

# iterando nas colunas
for col in data.columns:
    print(col)

Saída:

Name
Team
Number
Position
Age
Height
Weight
College
Salary

Método #2: Usando colunas com objeto dataframe

import pandas as pd 

# criando um dataframe a partir
# de um arquivo csv
data = pd.read_csv("nba.csv") 

# cria uma lista com os nomes das colunas de um dataframe
print(list(data.columns))

Resultado:

['Name', 'Team', 'Number', 'Position', 'Age', 'Height', 'Weight', 'College', 'Salary']

Método #3: o atributo column.values retorna uma matriz de índice.

import pandas as pd 

# criando um dataframe a partir
# de um arquivo csv
data = pd.read_csv("nba.csv") 

# cria uma lista com os nomes das colunas de um dataframe
print(data.columns.values)

Saída:

['Name', 'Team', 'Number', 'Position', 'Age', 'Height', 'Weight', 'College', 'Salary']

Método #4: Usando o método tolist() com valores com a lista de colunas fornecida.

import pandas as pd 

# criando um dataframe a partir
# de um arquivo csv
data = pd.read_csv("nba.csv") 

# cria uma lista com os nomes das colunas de um dataframe
print(list(data.columns.values.tolist()))

Saída:

['Name', 'Team', 'Number', 'Position', 'Age', 'Height', 'Weight', 'College', 'Salary']

Artigo escrito por Shivam_k e traduzido por Acervolima de How to get column names in Pandas dataframe.

Licença

Alterar letras minusculas para maiúsculas numa coluna no dataframe do pandas

Analisar dados do mundo real é difícil porque precisamos levar várias coisas em consideração. Além de obter dados úteis de grandes conjuntos de dados, manter os dados no formato necessário também é muito importante.

Pode-se encontrar uma situação em que precisamos colocar cada letra em maiúscula em qualquer coluna específica em determinado dataframe. Vamos ver como podemos aplicar letras maiúsculas a uma coluna no dataframe do Pandas.

Vamos criar um dataframe usando o arquivo nba.csv.

# importando o pacote pandas
import pandas as pd

# criando um dataframe a partir de um arquivo csv
data = pd.read_csv("https://media.geeksforgeeks.org/wp-content/uploads/nba.csv") 

# criando um novo dataframe com as 10
# primeiras linhas do dataframe data
data_top = data.head(10)

print(data_top)

Saída:

            Name            Team  Number Position   Age Height  Weight            College      Salary
0  Avery Bradley  Boston Celtics     0.0       PG  25.0    6-2   180.0              Texas   7730337.0
1    Jae Crowder  Boston Celtics    99.0       SF  25.0    6-6   235.0          Marquette   6796117.0
2   John Holland  Boston Celtics    30.0       SG  27.0    6-5   205.0  Boston University         NaN
3    R.J. Hunter  Boston Celtics    28.0       SG  22.0    6-5   185.0      Georgia State   1148640.0
4  Jonas Jerebko  Boston Celtics     8.0       PF  29.0   6-10   231.0                NaN   5000000.0
5   Amir Johnson  Boston Celtics    90.0       PF  29.0    6-9   240.0                NaN  12000000.0
6  Jordan Mickey  Boston Celtics    55.0       PF  21.0    6-8   235.0                LSU   1170960.0
7   Kelly Olynyk  Boston Celtics    41.0        C  25.0    7-0   238.0            Gonzaga   2165160.0
8   Terry Rozier  Boston Celtics    12.0       PG  22.0    6-2   190.0         Louisville   1824360.0
9   Marcus Smart  Boston Celtics    36.0       PG  22.0    6-4   220.0     Oklahoma State   3431040.0

Existem certos métodos que podemos alterar/modificar a caixa das letras das colunas no dataframe do pandas. Vamos ver como podemos aplicar letras maiúsculas a uma coluna no dataframe do Pandas usando o método Series.upper().

import pandas as pd 

data = pd.read_csv("https://media.geeksforgeeks.org/wp-content/uploads/nba.csv") 

data['Name'] = data['Name'].str.upper()

print(data.head())

Saída:

            Name            Team  Number Position   Age Height  Weight            College     Salary
0  AVERY BRADLEY  Boston Celtics     0.0       PG  25.0    6-2   180.0              Texas  7730337.0
1    JAE CROWDER  Boston Celtics    99.0       SF  25.0    6-6   235.0          Marquette  6796117.0
2   JOHN HOLLAND  Boston Celtics    30.0       SG  27.0    6-5   205.0  Boston University        NaN
3    R.J. HUNTER  Boston Celtics    28.0       SG  22.0    6-5   185.0      Georgia State  1148640.0
4  JONAS JEREBKO  Boston Celtics     8.0       PF  29.0   6-10   231.0                NaN  5000000.0

Artigo escrito por Shivam_k e traduzido por Acervolima de Apply uppercase to a column in Pandas dataframe.

Licença

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

Como classificar data no Excel usando pandas?

Nesses artigos, discutiremos como importar um arquivo Excel em um único Dataframe e classificar a data em uma determinada coluna.

Suponha que nosso arquivo Excel tenha a seguinte aparência:

Para obter o arquivo excel usado clique aqui. Abra o arquivo no excel e salve com a extensão xls.

Abordagem:

  • Importar o módulo pandas.
  • Criar um DataFrame a partir de um arquivo Excel.
  • Ordenar a coluna de datas utilizando a função DataFrame.sort_value().
  • Mostrar o DataFrame final.

Etapa 1: importar o módulo pandas e criar um DataFrame com um arquivo do Excel.

# importando o módulo pandas
import pandas as pd

# criando um dataframe a partir de um arquivo excel
df = pd.read_excel('sample_date.xls')

print("DataFrame sem alterações:")
print(df)

Saída:

DataFrame sem alterações:
    Emp ID           Name Joining Date
0    10151   Satyam kumar   2019-03-23
1    10152    Suman singh   2020-03-04
2    10153   Anurag kumar   2015-11-23
3    10154       Manjeet    2018-08-31
4    10155    Ujjaway Raj   2019-03-02
5    10156  Saurabh Singh   2020-03-14
6    10157   Shub Ratawal   2015-11-13
7    10158    Ammi kumari   2013-08-31
8    10159   Taniya singh   2019-06-02
9    10160    Suraj kumar   2020-03-04
10   10161     Deepak raj   2011-11-02

Etapa 2: Ordenar as data com a função DataFrame.sort_value().

# importando o módulo pandas
import pandas as pd

# criando um dataframe a partir de um arquivo excel
df = pd.read_excel('sample_date.xls')

# ordenando datas com a função sort_values
Final_result = df.sort_values('Joining Date')

print("DataFrame depois da ordenação:")
print(Final_result)

Saída:

DataFrame depois da ordenação:
    Emp ID           Name Joining Date
10   10161     Deepak raj   2011-11-02
7    10158    Ammi kumari   2013-08-31
6    10157   Shub Ratawal   2015-11-13
2    10153   Anurag kumar   2015-11-23
3    10154       Manjeet    2018-08-31
4    10155    Ujjaway Raj   2019-03-02
0    10151   Satyam kumar   2019-03-23
8    10159   Taniya singh   2019-06-02
1    10152    Suman singh   2020-03-04
9    10160    Suraj kumar   2020-03-04
5    10156  Saurabh Singh   2020-03-14

Artigo escrito por kumar_satyam e traduzido por Acervolima de How to sort date in excel using Pandas?.

Licença

Python - Utilizando o método Series.cumprod() para encontrar o produto de uma série do pandas

O método Series.cumprod() é usado para localizar o produto cumulativo de uma série. No produto cumulativo, o comprimento da série retornada é o mesmo da série de entrada e cada elemento é igual ao produto do valor atual e de todos os valores anteriores.

Sintaxe: Series.cumprod(axis=None, skipna=True)

Parâmetros:

  • axis: 0 ou 'index' para operação em linha e 1 ou 'columns' para operação em coluna
  • skipna: Ignora a adição de NaN para elementos após o próximo se True.

Tipo de retorno: Series

Exemplo #1: Neste exemplo, uma série é criada a partir de uma lista python. A lista também contém um valor Nulo e o parâmetro skipna é definido como padrão, ou seja, True.

# importa o módulo pandas
import pandas as pd

# importa o módulo numpy
import numpy as np 

# criando uma lista de valores
values = [2, 10, np.nan, 4, 3, 0, 1]

# criando uma serie a partir de uma lista
series = pd.Series(values) 

# chamando o método cumprod
cumprod = series.cumprod() 

# mostrando o resultado
print(cumprod)

Saída:

0      2.0
1     20.0
2      NaN
3     80.0
4    240.0
5      0.0
6      0.0
dtype: float64

Explicação: cumprod é a multiplicação dos valores atuais e de todos os valores anteriores. Portanto, o primeiro elemento é sempre igual ao primeiro da série do chamador.

2
20 (2 x 10)
NaN (20 x NaN = NaN, qualquer coisa multiplicado por Nan retorna NaN)
80 (20 x 4)
240 (80 x 3)
0 (240 x 0)
0 (0 x 1)

Exemplo #2: skipna=False. Neste exemplo, uma série é criada como no exemplo acima. Mas o parâmetro skipna é mantido como False. Portanto, os valores NULL não serão ignorados e serão comparados sempre que ocorrer.

# importa o módulo pandas
import pandas as pd

# importa o módulo numpy
import numpy as np 

# criando uma lista de valores
values = [9, 4, 33, np.nan, 0, 1, 76, 5]

# criando uma serie a partir de uma lista
series = pd.Series(values) 

# chamando o método cumprod
cumprod = series.cumprod(skipna=False) 

# mostrando o resultado
print(cumprod)

Saída:

0       9.0
1      36.0
2    1188.0
3       NaN
4       NaN
5       NaN
6       NaN
7       NaN
dtype: float64

Explicação: Assim como no exemplo acima, o produto do valor atual e todos os valores anteriores foram retornados em todas as posições. Como NaN Multiplied com qualquer coisa também é NaN, e o parâmetro skipna foi mantido como False, portanto, todos os valores após a ocorrência de NaN também são NaN.

Artigo escrito por Kartikaybhutani e traduzido por Acervolima de Python | Pandas series.cumprod() to find Cumulative product of a Series.

Licença

Python - Utilizando o método Series.cummin() para encontrar o mínimo cumulativo de uma série

O método Series.cummin() é usado para encontrar o mínimo cumulativo de uma série. No mínimo cumulativo, o comprimento da série retornada é o mesmo da série de entrada e cada elemento é igual ao menor entre o elemento atual e o elemento anterior.

Sintaxe: Series.cummin(axis=None, skipna=True)

Parâmetros:

  • axis: 0 ou 'index' para operação em linha e 1 ou 'columns' para operação em coluna.
  • skipna: Ignora a adição de NaN para elementos após o próximo se definido como True.

Tipo de retorno: Series

Exemplo #1: Neste exemplo, uma série é criada a partir de uma lista python. A lista também contém um valor Nulo e o parâmetro skipna é mantido como padrão, ou seja, True.

# importa o módulo pandas
import pandas as pd

# importa o módulo numpy
import numpy as np 

# criando uma lista de valores
values = [3, 4, np.nan, 7, 2, 0]

# criando uma serie a partir de uma lista
series = pd.Series(values) 

# chamando o método cummin
cummin = series.cummin() 

# mostrando o resultado
print(cummin)

Saída:

0    3.0
1    3.0
2    NaN
3    3.0
4    2.0
5    0.0
dtype: float64

Explicação: Series.cummin() é uma comparação do valor atual com o valor anterior. O primeiro elemento é sempre igual ao primeiro da série do chamador.

3
3  (3<4)
NaN (Não pode ser comparado com valores inteiros)
3  (3<7)
2  (2<3)
0  (0<2)

Exemplo #2: skipna=False. Neste exemplo, uma série é criada como no exemplo acima. Mas o parâmetro skipna é mantido como False. Portanto, os valores NULL não serão ignorados e serão comparados sempre que ocorrer.

# importa o módulo pandas
import pandas as pd

# importa o módulo numpy
import numpy as np 

# criando uma lista de valores
values = [12, 4, 33, np.nan, 0, 1, 76, 5]

# criando uma serie a partir de uma lista
series = pd.Series(values) 

# chamando o método cummin
cummin = series.cummin(skipna=False) 

# mostrando o resultado
print(cummin)

Saída:

0    12.0
1     4.0
2     4.0
3     NaN
4     NaN
5     NaN
6     NaN
7     NaN
dtype: float64

Explicação: Assim como no exemplo acima, o mínimo dos valores atuais e anteriores foram armazenados em todas as posições até que NaN ocorresse. Uma vez que NaN comparado com qualquer coisa retorna NaN e o parâmetro skipna é mantido como False, o mínimo cumulativo após sua ocorrência é NaN devido à comparação de todos os valores com NaN.

Artigo escrito por Kartikaybhutani e traduzido por Acervolima de Python | Pandas Series.cummin() to find cumulative minimum of a series.

Licença