quarta-feira, 28 de abril de 2021

Como selecionar várias colunas em um dataframe do pandas

Vamos discutir todas as maneiras diferentes de selecionar várias colunas em um DataFrame do pandas.

Método #1: Método Básico

Dado um dicionário que contém a entidade Employee como chaves e uma lista dessas entidades como valores.

# importando a biblioteca pandas
import pandas as pd

# Define a dictionary containing employee data
data = {
	'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj'],
    'Age': [27, 24, 22, 32],
    'Address': ['Delhi', 'Kanpur', 'Allahabad', 'Kannauj'],
    'Qualification': ['Msc', 'MA', 'MCA', 'Phd']
}

# Criando um dataframe a partir de um dicionário
df = pd.DataFrame(data)

# selecionando duas colunas
print(df[['Name', 'Qualification']])

Saída:

     Name Qualification
0     Jai           Msc
1  Princi            MA
2  Gaurav           MCA
3    Anuj           Phd

Selecione a segunda à quarta coluna.

# importando a biblioteca pandas
import pandas as pd

# Define a dictionary containing employee data
data = {
	'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj'],
    'Age': [27, 24, 22, 32],
    'Address': ['Delhi', 'Kanpur', 'Allahabad', 'Kannauj'],
    'Qualification': ['Msc', 'MA', 'MCA', 'Phd']
}

# Criando um dataframe a partir de um dicionário
df = pd.DataFrame(data)

# selecionando da segunda a quarta coluna
print(df[df.columns[1:4]])

Saída:

   Age    Address Qualification
0   27      Delhi           Msc
1   24     Kanpur            MA
2   22  Allahabad           MCA
3   32    Kannauj           Phd

Método #2: Usando o método loc[]

Exemplo 1: Selecione duas colunas

# importando a biblioteca pandas
import pandas as pd

# Define a dictionary containing employee data
data = {
	'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj'],
    'Age': [27, 24, 22, 32],
    'Address': ['Delhi', 'Kanpur', 'Allahabad', 'Kannauj'],
    'Qualification': ['Msc', 'MA', 'MCA', 'Phd']
}

# Criando um dataframe a partir de um dicionário
df = pd.DataFrame(data)

# selecionando três linhas e duas colunas
print(df.loc[1:3, ['Name', 'Qualification']])

Saída:

     Name Qualification
1  Princi            MA
2  Gaurav           MCA
3    Anuj           Phd

Exemplo 2: Selecione uma coluna para outra. No nosso caso, selecionamos o nome da coluna “Name” para “Address”.

# importando a biblioteca pandas
import pandas as pd

# Define a dictionary containing employee data
data = {
	'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj'],
    'Age': [27, 24, 22, 32],
    'Address': ['Delhi', 'Kanpur', 'Allahabad', 'Kannauj'],
    'Qualification': ['Msc', 'MA', 'MCA', 'Phd']
}

# Criando um dataframe a partir de um dicionário
df = pd.DataFrame(data)

# selecionando duas linhas e três colunas
print(df.loc[0:1, 'Name':'Address'])

Saída:

     Name  Age Address
0     Jai   27   Delhi
1  Princi   24  Kanpur

Exemplo 3: primeiro filtrando linhas e selecionando colunas por formato de rótulo e, em seguida, selecione todas as colunas.

# importando a biblioteca pandas
import pandas as pd

# Define a dictionary containing employee data
data = {
	'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj'],
    'Age': [27, 24, 22, 32],
    'Address': ['Delhi', 'Kanpur', 'Allahabad', 'Kannauj'],
    'Qualification': ['Msc', 'MA', 'MCA', 'Phd']
}

# Criando um dataframe a partir de um dicionário
df = pd.DataFrame(data)

# linha 1, todas as colunas
print(df.loc[0, :])

Saída:

Name               Jai
Age                 27
Address          Delhi
Qualification      Msc
Name: 0, dtype: object

Método #3: usando o método iloc[]

Exemplo 1: Selecione as duas primeiras colunas.

# seleciona todas as linhas
# e seleciona as duas primeiras colunas
print(df.iloc[:, 0:2])

Saída:

     Name  Age
0     Jai   27
1  Princi   24
2  Gaurav   22
3    Anuj   32

Artigo escrito por Rajput-Ji e traduzido por Acervolima de How to select multiple columns in a pandas dataframe.

Licença

Analisando velocidades de dados móveis do TRAI com Pandas

Vamos usar um conjunto de dados real do TRAI para analisar as velocidades de dados móveis e tentar ver as velocidades médias de uma operadora ou estado específico naquele mês. Isso também mostrará como o Pandas pode ser facilmente usado em quaisquer dados do mundo real para obter resultados interessantes.

Sobre o conjunto de dados

A Autoridade Reguladora de Telecomunicações da Índia (TRAI) lança um conjunto de dados mensal das velocidades da internet que mede por meio do aplicativo MySpeed (TRAI). Isso inclui testes de velocidade iniciados pelo próprio usuário ou testes periódicos em segundo plano feitos pelo aplicativo. Tentaremos analisar esse conjunto de dados e ver as velocidades médias de uma determinada operadora ou estado naquele mês.

Inspecionando a estrutura bruta dos dados

NOTA:

Como o conjunto de dados é enorme, o software pode avisar que não foi possível carregar todas as linhas. Isto é bom. Além disso, se você estiver usando o Microsoft Excel, pode haver um aviso sobre a abertura de um arquivo SYLK. Esse erro pode ser ignorado, pois é um bug comum no Excel. Agora, vamos dar uma olhada na organização dos dados.

  • 1ª coluna é do Operador de Rede - JIO, Airtel etc.
  • 2ª coluna é da Tecnologia de Rede - 3G ou 4G.
  • A 3ª coluna é o tipo de teste iniciado - upload ou download.
  • A quarta coluna é a velocidade medida em kilobytes por segundo.
  • A 5ª coluna é a intensidade do sinal durante a medição.
  • A 6ª coluna é a Área de Serviço Local (LSA) , ou o círculo onde o teste foi feito - Delhi, Orissa etc. Iremos nos referir a isso simplesmente como 'estados'.

NOTA:

A intensidade do sinal pode ter valores na (Not Available) devido a alguns dispositivos incapazes de capturar o sinal. Ignoraremos o uso desse parâmetro em nossos cálculos para tornar as coisas mais simples. No entanto, ele pode ser facilmente adicionado como uma condição durante a filtragem.

Pacotes necessários

  • pandas: um popular kit de ferramentas de análise de dados. Muito poderoso para processar grandes conjuntos de dados.
  • Numpy: fornece operações rápidas e eficientes em matrizes de dados homogêneos. Usaremos isso junto com pandas e matplotlib.
  • Matplotlib: é uma biblioteca de plotagem. Usaremos sua função de gráfico de barras para fazer gráficos de barras.

Vamos começar a analisar os dados

Etapa #1: importe os pacotes e defina algumas constantes.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# vamos definir algumas constantes

# nome do conjunto de dados csv
DATASET_FILENAME = 'sept18_publish.csv'

# definir o operador a ser filtrado
CONST_OPERATOR = 'JIO'

# definir o estado a ser filtrado
CONST_STATE = 'Delhi'

# definir a tecnologia a ser filtrada
CONST_TECHNOLOGY = '4G'

Etapa #2: Defina algumas listas que armazenarão os resultados calculados finais, de forma que possam ser passados ​​para a função de plotagem de barras facilmente. O estado (ou operador), velocidade de download e velocidade de upload serão armazenados em série de forma que para um índice, o estado (ou operador), suas velocidades de download e upload correspondentes possam ser acessados.

Por exemplo, final_states[2], final_download_speeds[2] e final_upload_speeds[2] fornecerá os valores correspondentes para o 3º estado.

Etapa #3: Importe o arquivo usando a método read_csv() do pandas e armazene-o em 'codedf'. Isso criará um DataFrame do conteúdo do arquivo csv no qual trabalharemos.

df = pd.read_csv(DATASET_FILENAME)
  
# atribuir cabeçalhos para cada uma das colunas com base nos dados,
# o que nos permite acessar as colunas facilmente
  
df.columns = [
    'Service Provider', 'Technology', 'Test Type',
    'Data Speed', 'Signal Strength', 'State'
]

Etapa #4: Primeiro, vamos encontrar todos os estados e operadores exclusivos neste conjunto de dados e armazená-los na lista de estados e operadores correspondentes.

Usaremos o método unique() do dataframe do pandas para selecionar os valores únicos.

# encontre e exiba os estados únicos
states = df['State'].unique()
print('ESTADOS encontrados: ', states)
  
# encontre e exiba os operadores exclusivos
operators = df['Service Provider'].unique()
print('OPERADORES encontrados: ', operators)

Saída:

ESTADOS encontrados:  ['Kerala' 'Rajasthan' 'Maharashtra' 'UP East' 'Karnataka' nan
 'Madhya Pradesh' 'Kolkata' 'Bihar' 'Gujarat' 'UP West' 'Orissa'
 'Tamil Nadu' 'Delhi' 'Assam' 'Andhra Pradesh' 'Haryana' 'Punjab'
 'North East' 'Mumbai' 'Chennai' 'Himachal Pradesh' 'Jammu & Kashmir'
 'West Bengal']
OPERADORES encontrados:  ['IDEA' 'JIO' 'AIRTEL' 'VODAFONE' 'CELLONE']

Etapa #5: Definir a função fixed_operator, que manterá o operador constante e iterará por todos os estados disponíveis para aquele operador. Podemos construir uma função semelhante para um estado fixo.

# filtrar o operador e a tecnologia
# primeiro, pois isso será comum para todos
filtered = df[(df['Service Provider'] == CONST_OPERATOR) & (df['Technology'] == CONST_TECHNOLOGY)]

# iterar em cada um dos estados
for state in states:

    # criar um novo dataframe que contém
    # apenas os dados do estado atual
    base = filtered[filtered['State'] == state]

    # filtrar apenas velocidades de download com base no tipo de teste
    down = base[base['Test Type'] == 'download']

    # filtrar apenas velocidades de upload com base no tipo de teste
    up = base[base['Test Type'] == 'upload']

    # calcular a média das velocidades na coluna
    # Data Speed usando o método pandas.mean()
    avg_down = down['Data Speed'].mean()

    # calcular a média das velocidades
    # na coluna Velocidade de dados
    avg_up = up['Data Speed'].mean()

    # descarte os valores se a média não for um número (nan)
    # e acrescente apenas os válidos
    if (pd.isnull(avg_down) or pd.isnull(avg_up)):
        down, up = 0, 0

    else:
        final_states.append(state)
        final_download_speeds.append(avg_down)
        final_upload_speeds.append(avg_up)

        # saída de impressão com até 2 casas decimais
        print(str(state) + ' -- Média de Download: ' +
                          str('%.2f' % avg_down) + 
         '  Média de Upload: ' + str('%.2f' % avg_up))

Saída:

Kerala -- Média de Download: 26129.27  Média de Upload: 5193.46
Rajasthan -- Média de Download: 27784.86  Média de Upload: 5736.18
Maharashtra -- Média de Download: 20707.88  Média de Upload: 4130.46
UP East -- Média de Download: 22451.35  Média de Upload: 5727.95
Karnataka -- Média de Download: 16950.36  Média de Upload: 4720.68
Madhya Pradesh -- Média de Download: 23594.85  Média de Upload: 4802.89
Kolkata -- Média de Download: 26747.80  Média de Upload: 5655.55
Bihar -- Média de Download: 31730.54  Média de Upload: 6599.45
Gujarat -- Média de Download: 16377.43  Média de Upload: 3642.89
UP West -- Média de Download: 23720.82  Média de Upload: 5280.46
Orissa -- Média de Download: 31502.05  Média de Upload: 6895.46
Tamil Nadu -- Média de Download: 16689.28  Média de Upload: 4107.44
Delhi -- Média de Download: 20308.30  Média de Upload: 4877.40
Assam -- Média de Download: 5653.49  Média de Upload: 2864.47
Andhra Pradesh -- Média de Download: 32444.07  Média de Upload: 5755.95
Haryana -- Média de Download: 7170.63  Média de Upload: 2680.02
Punjab -- Média de Download: 14454.45  Média de Upload: 4981.15
North East -- Média de Download: 6702.29  Média de Upload: 2966.84
Mumbai -- Média de Download: 14070.97  Média de Upload: 4118.21
Chennai -- Média de Download: 20054.47  Média de Upload: 4602.35
Himachal Pradesh -- Média de Download: 7436.99  Média de Upload: 4020.09
Jammu & Kashmir -- Média de Download: 8759.20  Média de Upload: 4418.21
West Bengal -- Média de Download: 16821.17  Média de Upload: 3628.78

Traçando os dados

Use o método arange() da biblioteca Numpy que retorna valores uniformemente espaçados dentro de um determinado intervalo. Aqui, passando o comprimento final_stateslista, obtemos valores de 0 ao número de estados na lista como [0, 1, 2, 3...]

Podemos então usar esses índices para traçar uma barra naquele local. A segunda barra é plotada deslocando a localização da primeira barra pela largura da barra.

fig, ax = plt.subplots()

# a largura de cada barra
bar_width = 0.25

# a opacidade de cada barra
opacity = 0.8

# guarda as posições
index = np.arange(len(final_states))

# o método plt.bar() recebe a posição das barras,
# dados a serem plotados, largura de cada barra e
# alguns outros parâmetros opcionais, como a opacidade e cor

# traçar as barras de download
bar_download = plt.bar(
    index, final_download_speeds,
    bar_width, alpha=opacity,
    color='b', label='Download'
)

# traçar as barras de upload  
bar_upload = plt.bar(
    index + bar_width, final_upload_speeds, 
    bar_width, alpha=opacity, color='g',
    label='Upload'
)

# Título do gráfico
plt.title('Média da velocidade de Download/Upload para ' + str(CONST_OPERATOR))
   
# rótulo do eixo x
plt.xlabel('States')

# rótulo do eixo y
plt.ylabel('Velocidades médias em Kbps')

# o rótulo abaixo de cada uma das barras, correspondendo aos estados
plt.xticks(index + bar_width, final_states, rotation=90)

# desenhe a legenda
plt.legend()

# faça o layout do gráfico estreito
plt.tight_layout()

# mostre o gráfico
plt.show()

Saída:

Média de velocidade de download e upload

Comparando dados de dois meses

Vamos pegar alguns dados de outro mês também e representá-los juntos para observar a diferença nas velocidades de dados.

Para este exemplo, o conjunto de dados do mês anterior será o mesmo sept18_publish.csv e o conjunto de dados do mês seguinte será oct18_publish.csv.

Só precisamos executar as mesmas etapas novamente. Leia os dados do outro mês. Filtre-o para dataframes subsequentes e, em seguida, plote-o usando um método ligeiramente diferente. Durante a plotagem das barras, incrementaremos a 3ª e 4ª barras (correspondentes ao upload e download do segundo arquivo) em 2 e 3 vezes a largura da barra, de modo que fiquem em suas posições corretas.

Abaixo está a implementação para comparar 2 meses de dados:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import time

# mês mais velho
DATASET_FILENAME = 'https://myspeed.trai.gov.in/download/sept18_publish.csv'

# mês mais recente
DATASET_FILENAME2 = 'https://myspeed.trai.gov.in/download/oct18_publish.csv'

CONST_OPERATOR = 'JIO'
CONST_STATE = 'Delhi'
CONST_TECHNOLOGY = '4G'

# leia o arquivo com o pandas e armazene como dataframe
df = pd.read_csv(DATASET_FILENAME)
df2 = pd.read_csv(DATASET_FILENAME2)

# atribuir nomes de coluna
df.columns = [
    'Service Provider', 'Technology', 'Test Type',
	'Data Speed', 'Signal Strength', 'State'
]
df2.columns = [
    'Service Provider', 'Technology', 'Test Type',
	'Data Speed', 'Signal Strength', 'State'
]

# encontre e exiba os estados únicos
states = df['State'].unique()
print('ESTADOS encontrados: ', states)

# encontre e exiba os operadores exclusivos
operators = df['Service Provider'].unique()
print('OPERADORES encontrados: ', operators)

# define listas
final_download_speeds = []
final_upload_speeds = []

final_download_speeds_second =[]
final_upload_speeds_second = []

final_states = []
final_operators = []

# atribuir nomes de coluna aos dados
df.columns = [
    'Service Provider', 'Technology', 'Test Type',
	'Data Speed', 'Signal Strength', 'State'
]
df2.columns = [
    'Service Provider', 'Technology', 'Test Type',
	'Data Speed', 'Signal Strength', 'State'
]

print('\n\nComparando dados para' + str(CONST_OPERATOR))
filtered = df[(df['Service Provider'] == CONST_OPERATOR)
			& (df['Technology'] == CONST_TECHNOLOGY)]

filtered2 = df2[(df2['Service Provider'] == CONST_OPERATOR)
				& (df2['Technology'] == CONST_TECHNOLOGY)]

for state in states:
	base = filtered[filtered['State'] == state]

	# calcular a média das velocidades de download
	avg_down = base[base['Test Type'] ==
			'download']['Data Speed'].mean()

	# calcular a média das velocidades de upload
	avg_up = base[base['Test Type'] ==
				'upload']['Data Speed'].mean()

	base2 = filtered2[filtered2['State'] == state]

	# calcular a média das velocidades de download
	avg_down2 = base2[base2['Test Type'] ==
			'download']['Data Speed'].mean()

	# calcular a média das velocidades de upload
	avg_up2 = base2[base2['Test Type'] ==
				'upload']['Data Speed'].mean()


	# descarte os valores se a média não for um número (nan)
    # e acrescente apenas as velocidades necessárias
	if (pd.isnull(avg_down) or pd.isnull(avg_up) or
		pd.isnull(avg_down2) or pd.isnull(avg_up2)):
		avg_down = 0
		avg_up = 0
		avg_down2 = 0
		avg_up2 = 0
	else:
		final_states.append(state)
		final_download_speeds.append(avg_down)
		final_upload_speeds.append(avg_up)
		final_download_speeds_second.append(avg_down2)
		final_upload_speeds_second.append(avg_up2)
		
		print('Mais velho: ' + str(state) + ' -- Download: ' +
			str('%.2f' % avg_down) + ' Upload: ' +
			str('%.2f' % avg_up))

		print('Recente: ' + str(state) + ' -- Download: ' +
			str('%.2f' % avg_down2) + ' Upload: ' +
			str('%.2f' % avg_up2))

fig, ax = plt.subplots()
index = np.arange(len(final_states))
bar_width = 0.2
opacity = 0.8

rects1 = plt.bar(index, final_download_speeds,
				bar_width, alpha=opacity, color='b',
					label='Download do mês anterior')

rects2 = plt.bar(index + bar_width, final_upload_speeds,
					bar_width, alpha=opacity, color='g',
						label='Upload do mês anterior')

rects3 = plt.bar(index + 2 * bar_width, final_download_speeds_second,
								bar_width, alpha=opacity, color='y',
									label='Download do mês mais recente')

rects4 = plt.bar(index + 3 * bar_width, final_upload_speeds_second,
							bar_width, alpha=opacity, color='r',
									label='Upload do mês mais recente')

plt.xlabel('States')
plt.ylabel('Velocidades Médias')
plt.title('Velocidade média de download/upload para '
					+ str(CONST_OPERATOR))

plt.xticks(index + bar_width, final_states, rotation=90)
plt.legend()
plt.tight_layout()

plt.show()

Resultado:

ESTADOS encontrados:  ['Kerala' 'Rajasthan' 'Maharashtra' 'UP East' 'Karnataka' nan
 'Madhya Pradesh' 'Kolkata' 'Bihar' 'Gujarat' 'UP West' 'Orissa'
 'Tamil Nadu' 'Delhi' 'Assam' 'Andhra Pradesh' 'Haryana' 'Punjab'
 'North East' 'Mumbai' 'Chennai' 'Himachal Pradesh' 'Jammu & Kashmir'
 'West Bengal']
OPERADORES encontrados:  ['IDEA' 'JIO' 'AIRTEL' 'VODAFONE' 'CELLONE']


Comparando dados paraJIO
Mais velho: Kerala -- Download: 26129.27 Upload: 5193.46
Recente: Kerala -- Download: 18917.46 Upload: 4290.13
Mais velho: Rajasthan -- Download: 27784.86 Upload: 5736.18
Recente: Rajasthan -- Download: 13973.66 Upload: 4721.17
Mais velho: Maharashtra -- Download: 20707.88 Upload: 4130.46
Recente: Maharashtra -- Download: 26285.47 Upload: 5848.77
Mais velho: UP East -- Download: 22451.35 Upload: 5727.95
Recente: UP East -- Download: 24368.81 Upload: 6101.20
Mais velho: Karnataka -- Download: 16950.36 Upload: 4720.68
Recente: Karnataka -- Download: 33521.31 Upload: 5871.38
Mais velho: Madhya Pradesh -- Download: 23594.85 Upload: 4802.89
Recente: Madhya Pradesh -- Download: 16614.49 Upload: 4135.70
Mais velho: Kolkata -- Download: 26747.80 Upload: 5655.55
Recente: Kolkata -- Download: 23761.85 Upload: 5153.29
Mais velho: Bihar -- Download: 31730.54 Upload: 6599.45
Recente: Bihar -- Download: 34196.09 Upload: 5215.58
Mais velho: Gujarat -- Download: 16377.43 Upload: 3642.89
Recente: Gujarat -- Download: 9557.90 Upload: 2684.55
Mais velho: UP West -- Download: 23720.82 Upload: 5280.46
Recente: UP West -- Download: 35035.84 Upload: 5797.93
Mais velho: Orissa -- Download: 31502.05 Upload: 6895.46
Recente: Orissa -- Download: 31826.96 Upload: 6968.59
Mais velho: Tamil Nadu -- Download: 16689.28 Upload: 4107.44
Recente: Tamil Nadu -- Download: 27306.54 Upload: 5537.58
Mais velho: Delhi -- Download: 20308.30 Upload: 4877.40
Recente: Delhi -- Download: 25198.16 Upload: 6228.81
Mais velho: Assam -- Download: 5653.49 Upload: 2864.47
Recente: Assam -- Download: 5243.34 Upload: 2676.69
Mais velho: Andhra Pradesh -- Download: 32444.07 Upload: 5755.95
Recente: Andhra Pradesh -- Download: 19898.16 Upload: 4002.25
Mais velho: Haryana -- Download: 7170.63 Upload: 2680.02
Recente: Haryana -- Download: 8496.27 Upload: 2862.61
Mais velho: Punjab -- Download: 14454.45 Upload: 4981.15
Recente: Punjab -- Download: 17960.28 Upload: 4885.83
Mais velho: North East -- Download: 6702.29 Upload: 2966.84
Recente: North East -- Download: 6008.06 Upload: 3052.87
Mais velho: Mumbai -- Download: 14070.97 Upload: 4118.21
Recente: Mumbai -- Download: 26898.04 Upload: 5539.71
Mais velho: Chennai -- Download: 20054.47 Upload: 4602.35
Recente: Chennai -- Download: 36086.70 Upload: 6675.70
Mais velho: Himachal Pradesh -- Download: 7436.99 Upload: 4020.09
Recente: Himachal Pradesh -- Download: 9277.45 Upload: 4622.25
Mais velho: Jammu & Kashmir -- Download: 8759.20 Upload: 4418.21
Recente: Jammu & Kashmir -- Download: 9290.38 Upload: 4533.08
Mais velho: West Bengal -- Download: 16821.17 Upload: 3628.78
Recente: West Bengal -- Download: 9763.05 Upload: 2627.28
Gráfico de barras da saída

Acabamos de aprender como analisar alguns dados do mundo real e desenhar algumas observações interessantes a partir deles. Mas note que nem todos os dados serão tão bem formatados e simples de lidar, o Pandas torna incrivelmente fácil de trabalhar com esses conjuntos de dados.

Artigo escrito por sayantanm19 e traduzido por Acervolima de Analyzing Mobile Data Speeds from TRAI with Pandas.

Licença

terça-feira, 27 de abril de 2021

Como selecionar aleatoriamente linhas do Pandas DataFrame

Vamos discutir como selecionar aleatoriamente linhas do Pandas DataFrame . Uma seleção aleatória de linhas de um DataFrame pode ser obtida de diferentes maneiras.

Crie um dataframe simples com dicionário de listas.

import pandas as pd

data = {
    'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj', 'Geeku'],
    'Age': [27, 24, 22, 32, 15],
    'Address': ['Delhi', 'Kanpur', 'Allahabad', 'Kannauj', 'Noida'],
    'Qualification':['Msc', 'MA', 'MCA', 'Phd', '10th']
}

df = pd.DataFrame(data)

print(df)

Saída:

     Name  Age    Address Qualification
0     Jai   27      Delhi           Msc
1  Princi   24     Kanpur            MA
2  Gaurav   22  Allahabad           MCA
3    Anuj   32    Kannauj           Phd
4   Geeku   15      Noida          10th

Método #1: Usando o método sample()

O método sample() retorna uma amostra aleatória de itens de um eixo do objeto e este objeto é do mesmo tipo de seu chamador.

Exemplo #1:

# Selecione uma linha aleatoriamente usando sample()
# sem fornecer nenhum parâmetro.

import pandas as pd

data = {
    'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj', 'Geeku'],
    'Age': [27, 24, 22, 32, 15],
    'Address': ['Delhi', 'Kanpur', 'Allahabad', 'Kannauj', 'Noida'],
    'Qualification':['Msc', 'MA', 'MCA', 'Phd', '10th']
}

df = pd.DataFrame(data)

# Seleciona uma linha do dataframe aleatoriamente
print(df.sample())
    Name  Age Address Qualification
4  Geeku   15   Noida          10th

Exemplo #2: usando o parâmetro n, que seleciona n números de linhas aleatoriamente.

Selecione n números de linhas aleatoriamente usando sample(n) ou sample(n=n). Cada vez que você executa isso, obtém n linhas diferentes.

# Seleciona três linhas do dataframe aleatoriamente
print(df.sample(n=3))
     Name  Age    Address Qualification
2  Gaurav   22  Allahabad           MCA
0     Jai   27      Delhi           Msc
1  Princi   24     Kanpur            MA

Exemplo #3: Usando o parâmetro frac.

Pode-se fazer a fração dos itens do eixo e obter linhas. Por exemplo, se for passado o valor .5 para o parâmetro frac o método sample retornar 50% das linhas.

# Seleciona três linhas do dataframe aleatoriamente
print(df.sample(frac=.5))
    Name  Age  Address Qualification
3   Anuj   32  Kannauj           Phd
4  Geeku   15    Noida          10th

Exemplo #4: selecione algumas linhas aleatoriamente com replace=false

A substituição de parâmetro dá permissão para selecionar uma linha várias vezes (como). O valor padrão do parâmetro de substituição do método sample() é False, então você nunca seleciona mais do que o número total de linhas.

# o dataframe df tem apenas 4 linhas

# se tentarmos selecionar mais de 4 linhas, ocorrerá um erro
# Não é possível obter uma amostra maior do que a população quando 'replace = False'
print(df.sample(n=3, replace=False))

Saída:

    Name  Age  Address Qualification
0    Jai   27    Delhi           Msc
3   Anuj   32  Kannauj           Phd
4  Geeku   15    Noida          10th

Exemplo #5: Selecione mais de n linhas, onde n é o número total de linhas com a ajuda do parâmetro replace.

# o dataframe df tem apenas 4 linhas

# Selecione mais de 4 linhas com o uso do parâmetro replace
# o valor padrão é False
print(df.sample(n=6, replace=True))

Saída:

     Name  Age    Address Qualification
4   Geeku   15      Noida          10th
2  Gaurav   22  Allahabad           MCA
2  Gaurav   22  Allahabad           MCA
4   Geeku   15      Noida          10th
2  Gaurav   22  Allahabad           MCA
4   Geeku   15      Noida          10th

Exemplo #6: Usando o parâmetro random_state

Com um determinado DataFrame, a amostra sempre buscará as mesmas linhas. Se random_state for None ou np.random, um objeto RandomState inicializado aleatoriamente será retornado.

print(df.sample(n=2, random_state=2))

Saída:

     Name  Age    Address Qualification
2  Gaurav   22  Allahabad           MCA
4   Geeku   15      Noida          10th

Artigo escrito por Rajput-Ji e traduzido por Acervolima de How to randomly select rows from Pandas DataFrame.

Licença

Redefinir o índice no Dataframe do pandas

Vamos discutir como redefinir o índice no DataFrame do pandas. Frequentemente, começamos com um grande dataframe no pandas e depois de manipular/filtrar o dataframe, terminamos com um dataframe muito menor.

Quando olhamos para o dataframe menor, ele ainda pode carregar o índice de linha do dataframe original. Se o índice original são números, agora temos índices que não são contínuos. Bem, os pandas têm o método reset_index(). Portanto, para redefinir o índice para o índice inteiro padrão começando em 0, podemos simplesmente usar o método reset_index().

Portanto, vamos ver as diferentes maneiras de redefinir o índice de um DataFrame.

Primeiro, veja o DataFrame original.

import pandas as pd

# Defina um dicionário contendo dados de funcionários
data = {
    'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj', 'Geeku'],
    'Age': [27, 24, 22, 32, 15],
    'Address': ['Delhi', 'Kanpur', 'Allahabad', 'Kannauj', 'Noida'],
    'Qualification': ['Msc', 'MA', 'MCA', 'Phd', '10th']
}

# Criando um dataframe a partir de um dicionário
df = pd.DataFrame(data)

print(df)

Saída:

     Name  Age    Address Qualification
0     Jai   27      Delhi           Msc
1  Princi   24     Kanpur            MA
2  Gaurav   22  Allahabad           MCA
3    Anuj   32    Kannauj           Phd
4   Geeku   15      Noida          10th

Exemplo #1: Faça o próprio índice sem remover o índice padrão.

import pandas as pd

# Defina um dicionário contendo dados de funcionários
data = {
    'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj', 'Geeku'],
    'Age': [27, 24, 22, 32, 15],
    'Address': ['Delhi', 'Kanpur', 'Allahabad', 'Kannauj', 'Noida'],
    'Qualification': ['Msc', 'MA', 'MCA', 'Phd', '10th']
}

index = {'a', 'b', 'c', 'd', 'e'}

# Criando um dataframe a partir de um dicionário
df = pd.DataFrame(data, index)

# Faça o próprio índice como índice
# Neste caso, o índice padrão existe
df.reset_index(inplace=True)

print(df)

Saída:

  index    Name  Age    Address Qualification
0     d     Jai   27      Delhi           Msc
1     a  Princi   24     Kanpur            MA
2     e  Gaurav   22  Allahabad           MCA
3     c    Anuj   32    Kannauj           Phd
4     b   Geeku   15      Noida          10th

Exemplo #2: Faça o próprio índice e removendo o índice padrão.

import pandas as pd

# Defina um dicionário contendo dados de funcionários
data = {
    'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj', 'Geeku'],
    'Age': [27, 24, 22, 32, 15],
    'Address': ['Delhi', 'Kanpur', 'Allahabad', 'Kannauj', 'Noida'],
    'Qualification': ['Msc', 'MA', 'MCA', 'Phd', '10th']
}

index = {'a', 'b', 'c', 'd', 'e'}

# Criando um dataframe a partir de um dicionário
# Faça o próprio índice e remova o índice padrão
df = pd.DataFrame(data, index)

print(df)

Saída:

     Name  Age    Address Qualification
b     Jai   27      Delhi           Msc
a  Princi   24     Kanpur            MA
e  Gaurav   22  Allahabad           MCA
d    Anuj   32    Kannauj           Phd
c   Geeku   15      Noida          10th

Exemplo #3: redefina o próprio índice e torne o índice padrão como índice.

import pandas as pd

# Defina um dicionário contendo dados de funcionários
data = {
    'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj', 'Geeku'],
    'Age': [27, 24, 22, 32, 15],
    'Address': ['Delhi', 'Kanpur', 'Allahabad', 'Kannauj', 'Noida'],
    'Qualification': ['Msc', 'MA', 'MCA', 'Phd', '10th']
}

index = {'a', 'b', 'c', 'd', 'e'}

# Criando um dataframe a partir de um dicionário
# Faça o próprio índice e remova o índice padrão
df = pd.DataFrame(data, index)

# remover o próprio índice com o índice padrão
df.reset_index(inplace=True, drop=True)

print(df)

Saída:

     Name  Age    Address Qualification
0     Jai   27      Delhi           Msc
1  Princi   24     Kanpur            MA
2  Gaurav   22  Allahabad           MCA
3    Anuj   32    Kannauj           Phd
4   Geeku   15      Noida          10th

Exemplo #4: Faça uma coluna de dataframe como índice com a remoção do índice padrão.

import pandas as pd

# Defina um dicionário contendo dados de funcionários
data = {
    'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj', 'Geeku'],
    'Age': [27, 24, 22, 32, 15],
    'Address': ['Delhi', 'Kanpur', 'Allahabad', 'Kannauj', 'Noida'],
    'Qualification': ['Msc', 'MA', 'MCA', 'Phd', '10th']
}

index = {'a', 'b', 'c', 'd', 'e'}

# Criando um dataframe a partir de um dicionário
# Faça o próprio índice e remova o índice padrão
df = pd.DataFrame(data, index)

# definir o índice de qualquer coluna do nosso dataframe e remover o índice padrão
df.set_index(['Age'], inplace=True)

print(df)

Saída:

       Name    Address Qualification
Age
27      Jai      Delhi           Msc
24   Princi     Kanpur            MA
22   Gaurav  Allahabad           MCA
32     Anuj    Kannauj           Phd
15    Geeku      Noida          10th

Exemplo #5: Faça uma coluna de dataframe como índice sem remover o índice padrão.

import pandas as pd

# Defina um dicionário contendo dados de funcionários
data = {
    'Name': ['Jai', 'Princi', 'Gaurav', 'Anuj', 'Geeku'],
    'Age': [27, 24, 22, 32, 15],
    'Address': ['Delhi', 'Kanpur', 'Allahabad', 'Kannauj', 'Noida'],
    'Qualification': ['Msc', 'MA', 'MCA', 'Phd', '10th']
}

index = {'a', 'b', 'c', 'd', 'e'}

# Criando um dataframe a partir de um dicionário
# Faça o próprio índice e remova o índice padrão
df = pd.DataFrame(data, index)

# definir o índice de qualquer coluna do nosso dataframe e remover o índice padrão
df.set_index(['Age'], inplace=True)

# redefinir o índice sem remover o índice padrão
df.reset_index(level=['Age'], inplace=True)

print(df)

Saída:

   Age    Name    Address Qualification
0   27     Jai      Delhi           Msc
1   24  Princi     Kanpur            MA
2   22  Gaurav  Allahabad           MCA
3   32    Anuj    Kannauj           Phd
4   15   Geeku      Noida          10th

Artigo escrito por Rajput-Ji e traduzido por Acervolima de Reset Index in Pandas Dataframe.

Licença

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

Python - Utilizando o método Series.cummax() para encontrar o máximo cumulativo de uma série

O método Series.cummax() do pandas é usado para encontrar o máximo cumulativo de uma série. No máximo cumulativo, o comprimento da série retornada é o mesmo da série de entrada e cada elemento é igual ao maior entre o elemento atual e o elemento anterior.

Sintaxe: Series.cummax(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 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 cummax
cummax = series.cummax() 

# mostrando o resultado
print(cummax)

Saída:

0    3.0
1    4.0
2    NaN
3    7.0
4    7.0
5    7.0
dtype: float64

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

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

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 cummax
cummax = series.cummax(skipna=False) 

# mostrando o resultado
print(cummax)

Saída:

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

Explicação: Assim como no exemplo acima, o máximo 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áximo 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.cummax() to find Cumulative maximum of a series.

Licença

quinta-feira, 22 de abril de 2021

Python - Altere os nomes das colunas e os índices das linhas no DataFrame pandas

Dado um DataFrame pandas, vamos ver como alterar seus nomes de coluna e índices de linha.

Sobre o DataFrame pandas

Os DataFrame pandas são grades retangulares usadas para armazenar dados. É fácil visualizar e trabalhar com dados quando armazenados em dataFrame.

  • Consiste em linhas e colunas.
  • Cada linha é uma medida de alguma instância, enquanto a coluna é um vetor que contém dados para algum atributo/variável específico.
  • Cada coluna de dataframe tem dados homogêneos em qualquer coluna específica, mas as linhas de dataframe podem conter dados homogêneos ou heterogêneos em qualquer linha específica.
  • Ao contrário da matriz bidimensional, os eixos do dataframe do pandas são rotulados.

O tipo Dataframe do Pandas tem dois atributos chamados "columns" e "index" que podem ser usados para alterar os nomes das colunas, bem como os índices das linhas.

Crie um DataFrame usando um dicionário.

import pandas as pd

df = pd.DataFrame({
    "Nome": ['Tom', 'Nick', 'John', 'Peter'],
    "Idade": [15, 26, 17, 28]
})

print(df)

Saída:

    Nome  Idade
0    Tom     15
1   Nick     26
2   John     17
3  Peter     28

Método #1: Alterar o nome da coluna e o índice da linha usando os atributo df.columns e df.index respectivamente.

Para alterar os nomes das colunas, fornecemos uma lista python contendo os nomes das colunasparra o atributo df.columns. Exemplo: df.columns = ['First_col', 'Second_col', 'Third_col', .....].

Para alterar os índices de linha, também fornecemos uma lista python para o atributo df.index. Exemplo: df.index = ['row1', 'row2', 'row3', ......]

import pandas as pd

df = pd.DataFrame({
    "Nome": ['Tom', 'Nick', 'John', 'Peter'],
    "Idade": [15, 26, 17, 28]
})

# Muda o nome das colunas
df.columns = ['Coluna_1', 'Coluna_2']

# Muda o nome dos index
df.index = ['Lina_1', 'Linha_2', 'Linha_3', 'Linha_4']

print(df)

Saída:

        Coluna_1  Coluna_2
Lina_1       Tom        15
Linha_2     Nick        26
Linha_3     John        17
Linha_4    Peter        28

Método #2: Usando a função rename() com dicionário para alterar uma única coluna

import pandas as pd

df = pd.DataFrame({
    "Nome": ['Tom', 'Nick', 'John', 'Peter'],
    "Idade": [15, 26, 17, 28]
})

# Alterar o nome da coluna 'Nome' para 'Coluna_1'
df = df.rename(columns={"Nome":"Coluna_1"})

print(df)

Saída:

  Coluna_1  Idade
0      Tom     15
1     Nick     26
2     John     17
3    Peter     28

Alterar vários nomes de coluna simultaneamente:

import pandas as pd

df = pd.DataFrame({
    "Nome": ['Tom', 'Nick', 'John', 'Peter'],
    "Idade": [15, 26, 17, 28]
})

# Alterar o nome da coluna 'Nome' para 'Coluna_1'
# e alterando o nome da coluna 'Idade' para 'Coluna_2'
df = df.rename({"Nome":"Coluna_1","Idade":"Coluna_2"}, axis='columns')

print(df)

Saída:

  Coluna_1  Coluna_2
0      Tom        15
1     Nick        26
2     John        17
3    Peter        28

Método #3: Usando a função Lambda para renomear as colunas.

Uma função lambda é uma pequena função anônima que pode receber qualquer número de argumentos, mas pode ter apenas uma expressão. Usando a função lambda, podemos modificar todos os nomes das colunas de uma vez. Vamos adicionar 'x' no final de cada nome de coluna usando a função lambda

import pandas as pd

df = pd.DataFrame({
    "Nome": ['Tom', 'Nick', 'John', 'Peter'],
    "Idade": [15, 26, 17, 28]
})

# Renomeando colunas usando uma função lambda
# Adiciona '_x' ao final do nome de cada coluna
df = df.rename(columns=lambda x: x+'_x')

print(df)

Saída:

   Nome_x  Idade_x
0    Tom      15
1   Nick      26
2   John      17
3  Peter      28

Método #4: Usando o atributo values para renomear as colunas.

Podemos usar o atributo values diretamente na coluna cujo nome queremos alterar.

import pandas as pd

df = pd.DataFrame({
    "Nome": ['Tom', 'Nick', 'John', 'Peter'],
    "Idade": [15, 26, 17, 28]
})

df.columns.values[1] = 'Estudantes_Idade'

print(df)

Saída:

    Nome  Estudantes_Idade
0    Tom                15
1   Nick                26
2   John                17
3  Peter                28

Vamos mudar o índice da linha usando a função Lambda.

import pandas as pd

df = pd.DataFrame({
    "A": ['Tom', 'Nick', 'John', 'Peter'],
    "B": [25, 16, 27, 18]
})

# isto aumentará o valor do índice da linha em 10 para cada linha
df = df.rename(index=lambda x: x + 10)

print(df)

Saída:

        A   B
10    Tom  25
11   Nick  16
12   John  27
13  Peter  18

Agora, se quisermos alterar os índices de linha e nomes de coluna simultaneamente, isso pode ser feito usando a função rename() e passando o atributo de coluna e índice como o parâmetro.

import pandas as pd

df = pd.DataFrame({
    "A": ['Tom', 'Nick', 'John', 'Peter'],
    "B": [25, 16, 27, 18]
})

df = df.rename(index=lambda x: x + 5, columns=lambda x: x + 'x')

print(df)

Saída:

import pandas as pd

df = pd.DataFrame({
    "A": ['Tom', 'Nick', 'John', 'Peter'],
    "B": [25, 16, 27, 18]
})

df = df.rename(index=lambda x: x + 5, columns=lambda x: x + 'x')

print(df)

Artigo escrito por Shubham__Ranjan e traduzido por Acervolima de Python | Change column names and row indexes in Pandas DataFrame.

Licença

Diferentes maneiras de criar um DataFrame pandas

DataFrame pandas é uma estrutura de dados rotulada bidimensional com colunas de tipos potencialmente diferentes. Geralmente é o objeto pandas mais comumente usado.

O DataFrame pandas pode ser criado de várias maneiras. Vamos discutir diferentes maneiras de criar um DataFrame, uma por uma.

Método #1: Criando Pandas DataFrame a partir de listas de listas.

# importando a biblioteca pandas
import pandas as pd

# inicializando uma lista com listas
data = [['tom', 10], ['nick', 15], ['juli', 14]]

# Criando um dataframe do pandas
df = pd.DataFrame(data, columns=['Nome', 'Idade'])

# mostrando o dataframe
print(df)

Saída:

   Nome  Idade
0   tom     10
1  nick     15
2  juli     14

Método #2: Criando DataFrame de um dicionário de narray/listas

Para criar DataFrame a partir de um dicionário de narray/listas, todos os narray devem ter o mesmo comprimento. Se o índice for passado, o índice de comprimento deve ser igual ao comprimento das matrizes. Se nenhum índice for passado, então, por padrão, o índice será o intervalo (n), onde n é o comprimento do array.

# importando a biblioteca pandas
import pandas as pd

dicionário = {
    'Nome': ['Tom', 'nick', 'krish', 'jack'],
    'Idade': [20, 21, 19, 18]
}

# Criando um dataframe a partir de um dicionário do python
df = pd.DataFrame(dicionário)

# mostrando o dataframe
print(df)

Saída:

    Nome  Idade
0    Tom     20
1   nick     21
2  krish     19
3   jack     18

Método #3: Cria um DataFrame de índices usando matrizes.

# importando a biblioteca pandas
import pandas as pd

# Inicializando um dicionário com arrays
data = {
    'Name': ['Tom', 'Jack', 'nick', 'juli'],
    'marks': [99, 98, 95, 90]
}

# criando um dataframe com index
df = pd.DataFrame(data, index=['rank1','rank2', 'rank3', 'rank4'])

# mostrando o dataframe
print(df)

Saída:

       Name  marks
rank1   Tom     99
rank2  Jack     98
rank3  nick     95
rank4  juli     90

Método #4: Criando Dataframe a partir de uma lista de dicionários

O DataFrame pandas pode ser criado passando listas de dicionários como dados de entrada. Por padrão, as chaves do dicionário são consideradas colunas.

# importando a biblioteca pandas
import pandas as pd

# inicializando uma lista com dicionários
data = [
    {'a': 1, 'b': 2, 'c':3},
    {'a':10, 'b': 20, 'c': 30}
]

# criando um dataframe
df = pd.DataFrame(data)

# mostrando o dataframe
print(df)

Saída:

    a   b   c
0   1   2   3
1  10  20  30

Outro exemplo para criar o DataFrame do pandas passando listas de dicionários e índices de linha.

# importando a biblioteca pandas
import pandas as pd

# inicializando uma lista com dicionários
data = [
    {'b': 2, 'c':3},
    {'a':10, 'b': 20, 'c': 30}
]

# criando um dataframe com index
df = pd.DataFrame(data, index=['primeiro', 'segundo'])

# mostrando o dataframe
print(df)

Saída:

           b   c     a
primeiro   2   3   NaN
segundo   20  30  10.0

Outro exemplo para criar o DataFrame do pandas a partir de listas de dicionários com índice de linha e índice de coluna.

import pandas as pd

data = [
    {'a': 1, 'b': 2},
    {'a': 5, 'b': 10, 'c': 20}
]
   
# Com dois índices de coluna, valores iguais às chaves de dicionário
df1 = pd.DataFrame(
    data,
    index=['first', 'second'],
    columns=['a', 'b']
)
   
# Com dois índices de coluna com um índice com outro nome
df2 = pd.DataFrame(
    data,
    index=['first', 'second'],
    columns=['a', 'b1']
)

# Mostra o primeiro dataframe
print (df1, "\n")

# Mostra o segundo dataframe
print (df2)

Saída:

        a   b
first   1   2
second  5  10 

        a  b1
first   1 NaN
second  5 NaN

Método #5: Criando DataFrame usando a função zip().

Duas listas podem ser mescladas usando a função list(zip()). Agora, crie o DataFrame do pandas chamando a função pd.DataFrame().

import pandas as pd 

Nome = ['tom', 'krish', 'nick', 'juli'] 

Idade = [25, 30, 26, 22] 

# obtenha a lista de tuplas de duas listas e mescle-as usando zip().
lista_de_tuplas = list(zip(Nome, Idade))  

# Convertendo listas de tuplas em Dataframe do pandas.
df = pd.DataFrame(
    lista_de_tuplas,
    columns=['Nome', 'Idade']
)

print(df)

Saída:

    Nome  Idade
0    tom     25
1  krish     30
2   nick     26
3   juli     22

Método #6: Criando DataFrame a partir de um cicionário de série.

Para criar DataFrame a partir de dicionários de série, o dicionário pode ser passado para formar um DataFrame. O índice resultante é a união de todas as séries de index passadas.

import pandas as pd 

d = {
    'one': pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd']),
    'two' : pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
}

# Criando dataframe
df = pd.DataFrame(d)

print(df)

Saída:

   one  two
a   10   10
b   20   20
c   30   30
d   40   40

Artigo escrito por Samdare B e traduzido por Acervolima de Different ways to create Pandas Dataframe.

Licença

Crie DataFrames do pandas a partir de listas usando a função zip do python

Uma das maneiras de criar DataFrame do pandas é usando a função zip().

Você pode usar as listas para criar listas de tuplas e criar um dicionário a partir delas. Então, este dicionário pode ser usado para construir um dataframe.

A função zip() cria os objetos e pode ser usada para produzir um único item por vez. Esta função pode criar DataFrames pandas mesclando duas listas.

Suponha que haja duas listas de dados de alunos, a primeira lista contém o nome do aluno e a segunda lista a idade do aluno. Então podemos ter,

Nome = ['tom', 'krish', 'nick', 'juli']

Idade = [25, 30, 26, 22]

As duas listas acima podem ser mescladas usando a função list(zip()). Agora, crie o DataFrame do pandas chamando a função pandas.DataFrame().

import pandas as pd

Nome = ['tom', 'krish', 'nick', 'juli']

Idade = [25, 30, 26, 22]

# obtenha a lista de tuplas de duas listas
# e mescle-as usando zip().
lista_de_tuplas = list(zip(Nome, Idade))

print(lista_de_tuplas)

Saída:

[('tom', 25), ('krish', 30), ('nick', 26), ('juli', 22)]
import pandas as pd

Nome = ['tom', 'krish', 'nick', 'juli']

Idade = [25, 30, 26, 22]

# obtenha a lista de tuplas de duas listas
# e mescle-as usando zip().
lista_de_tuplas = list(zip(Nome, Idade))

# converte uma lista de tuplas num DataFrame
df = pd.DataFrame(lista_de_tuplas, columns=['Nome', 'Idade'])

print(df)

Saída:

    Nome  Idade
0    tom     25
1  krish     30
2   nick     26
3   juli     22

Artigo escrito por Samdare B e traduzido por Acervolima de Create pandas dataframe from lists using zip.

Licença

Python - Series.cumsum() para encontrar a soma cumulativa de uma série do pandas

O método Series.cumsum() do pandas é usado para encontrar a soma cumulativa de uma série. Na soma cumulativa, o comprimento da série retornada é igual à entrada e cada elemento é igual à soma de todos os elementos anteriores.

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

Parâmetros:

  • axis: 0 ou 'índice' para operação em linha e 1 ou 'colunas' 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 usando o método pandas.Series(). A lista também contém um valor Nulo e o parâmetro skipna é mantido como padrão, ou seja, True.

# importando o módulo pandas
import pandas as pd

# importando o módulo numpy
import numpy as np

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

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

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

# imprimindo o resultado da chamada da função cumsum
print(cumsum)

Saída:

0     3.0     
1     7.0     
2     NaN     
3    14.0     
4    16.0     
5    16.0     
dtype: float64

Explicação: A soma cumulativa é a soma dos valores atuais e de todos os valores anteriores. Conforme mostrado na saída acima, a adição foi feita da seguinte forma:

3
3+4 = 7
7+NaN = NaN
7+7 = 14
14+2 = 16
16+0 = 16

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 adicionados todas as vezes após sua ocorrência.

# importando o módulo pandas
import pandas as pd

# importando o módulo numpy
import numpy as np

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

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

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

# imprimindo o resultado da chamada da função cumsum
print(cumsum)

Saída:

0    3.0
1    7.0
2    NaN
3    NaN
4    NaN
5    NaN
dtype: float64

Explicação: Como pode ser visto na saída, todos os valores após a primeira ocorrência de NaN também são NaN, pois qualquer número + NaN também é NaN.

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

Licença

Python - Utilizando o método Series.cov() para encontrar a covariância

O método Series.cov() do pandas é usado para encontrar a covariância de duas séries. No exemplo a seguir, a covariância é encontrada usando o método do pandas e manualmente e as respostas são comparadas.

Sintaxe: Series.cov(other, min_periods=None)

Parâmetros:

  • other: Outra série a ser usada para encontrar covariância.
  • min_periods: Número mínimo de observações a serem feitas para obter um resultado válido.

Tipo de retorno: Valor flutuante, retorna a covariância da série do autor da chamada e da série passada.

Exemplo: Neste exemplo, duas listas são feitas e convertidas em série usando o método pandas.Series(). A média se ambas as séries forem encontradas e uma função for criada para encontrar Covarience manualmente. pandas.cov() também é aplicado e os resultados de ambas as formas são armazenados em variáveis e impressos para comparar as saídas.

import pandas as pd

a = [2, 3, 2.7, 3.2, 4.1]

b = [10, 14, 12, 15, 20]

# armazenando média de a
av_a = sum(a)/len(a)

# armazenando média de b
av_b = sum(b)/len(b)

# fazendo série da lista a
a = pd.Series(a)

# fazendo série da lista b
b = pd.Series(b)

# covariância através do método do pandas
covar = a.cov(b)

# encontrar covariância manualmente
def covarfn(a, b, av_a, av_b):
    cov = 0

    for i in range(0, len(a)):
        cov += (a[i] - av_a) * (b[i] - av_b)
    return (cov / (len(a)-1))

# chamando função
cov = covarfn(a, b, av_a, av_b)

# imprimindo resultado
print("Resultados do método do pandas: ", covar)
print("Resultados do método de função manual: ", cov)

Como pode ser visto na saída, a saída de ambas as formas é a mesma. Portanto, este método é útil para encontrar a covariância para grandes séries.

Saída:

Resultados do método do pandas:  2.8499999999999996
Resultados do método de função manual:  2.8499999999999996

Artigo escrito por Kartikaybhutani e traduzido por Acervolima de Python | Pandas Series.cov() to find Covariance.

Licença

terça-feira, 20 de abril de 2021

Python - Utilizando o método astype() para converter o tipo de dados de uma Series pandas

O método astype() do pandas é um dos métodos mais importantes. É usado para alterar o tipo de dados de uma série. Quando o DataFrame é feito de um arquivo csv, as colunas são importadas e o tipo de dados é definido automaticamente, o que muitas vezes não é o que deveria. Por exemplo, uma coluna de salário pode ser importada como string, mas para fazer as operações temos que convertê-la em float.

astype() é usado para fazer tais conversões de tipo de dados.

Sintaxe: DataFrame.astype(dtype, copy=True, errors=’raise’)

Parâmetros:

  • dtype: Tipo de dados para o qual converter a série. (por exemplo str, float, int)
  • copy: Faz uma cópia do dataframe/série.
  • errors: Erro ao aumentar a conversão para tipo de dados inválido. Por exemplo, dict to string. 'raise' aumentará o erro e 'ignore' passará sem aumentar o erro.

Tipo de retorno: Series com os tipos de dados alterados.

Para baixar o conjunto de dados usado no exemplo a seguir, clique aqui.

Nos exemplos a seguir, o DataFrame usado contém dados de alguns jogadores da NBA. A imagem do DataFrame antes de qualquer operação é anexada abaixo.

Exemplo: Neste exemplo, o DataFrame é importado e .dtypes é chamado no DataFrame para visualizar os tipos de dados das séries. Depois disso, algumas colunas são convertidas usando o método .astype() e os dtypes são exibidos novamente para ver as mudanças.

# importa o modulo pandas
import pandas as pd

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

# Descarta valores null para evitar erros
data.dropna(inplace = True)

# Guardando dtype antes de converter
before = data.dtypes

# Convertendo dtype para inteiro
data["Salary"] = data["Salary"].astype(int)
# Convertendo dtype para string
data["Number"] = data["Number"].astype(str)

# Guardando dtype depois de converter
after = data.dtypes

# imprimindo o antes e depois da converção
print("Depois da converção\n", before, "\n")
print("Antes da converção\n", after, "\n")

Conforme mostrado na saída abaixo, os tipos de dados das colunas foram convertidos de acordo.

Depois da converção
 Name         object
Team         object
Number      float64
Position     object
Age         float64
Height       object
Weight      float64
College      object
Salary      float64
dtype: object 

Antes da converção
 Name         object
Team         object
Number       object
Position     object
Age         float64
Height       object
Weight      float64
College      object
Salary        int64
dtype: object

Artigo escrito por Kartikaybhutani e traduzido por Acervolima de Python | Pandas Series.astype() to convert Data type of series.

Licença