Série pandas é um array rotulado unidimensional capaz de conter dados de qualquer tipo (inteiro, string, float, objetos python, etc.). Os rótulos dos eixos são chamados coletivamente de índice. Uma série pandas nada mais é do que uma coluna em uma planilha do Excel.
Os rótulos não precisam ser exclusivos, mas devem ser do tipo hashable. O objeto é compatível com indexação inteira e baseada em rótulo e fornece uma série de métodos para executar operações envolvendo o índice.
Neste artigo, estamos usando o arquivo nba.csv.
Teremos uma breve visão sobre todas essas operações básicas que podem ser realizadas no Pandas série:
- Criando uma série
- Elemento de acesso da série
- Indexação e seleção de dados em série
- Operação binária na série
- Operação de conversão em série
Criando uma série
No mundo real, uma série Pandas será criada carregando os conjuntos de dados do armazenamento existente, o armazenamento pode ser banco de dados SQL, arquivo CSV e arquivo Excel. As séries Pandas podem ser criadas a partir de listas, dicionário e de um valor escalar, etc. As séries podem ser criadas de diferentes maneiras, aqui estão algumas maneiras pelas quais criamos uma série:
Criando uma série de array: Para criar uma série de array, temos que importar o módulo numpy
e usar a função array()
.
# importando pandas com o alias pd
import pandas as pd
# importando numpy com o alias np
import numpy as np
# uma matriz simples
data = np.array(['A', 'c', 'e', 'r','v', 'o'])
ser = pd.Series(data)
print(ser)
Saída:
0 A
1 c
2 e
3 r
4 v
5 o
dtype: object
Criação de uma série a partir de uma listas:
Para criar uma série a partir de uma lista, temos que primeiro criar uma lista e depois podemos criar uma série da lista.
import pandas as pd
# uma lista simples
lista = ['A', 'c', 'e', 'r','v', 'o']
# criando uma série a partir de uma lista
ser = pd.Series(lista)
print(ser)
Saída:
0 A
1 c
2 e
3 r
4 v
5 o
dtype: object
Acessando elementos de uma série
Existem duas maneiras pelas quais podemos acessar o elemento da série, são elas:
- Acessando Elemento da Série com Posição.
- Acessando elemento usando rótulo (índice)
Acessando elemento de uma série com a posição: Para acessar o elemento da série refere-se ao número do índice. Use o operador de índice []
para acessar um elemento em uma série. O índice deve ser um número inteiro. Para acessar vários elementos de uma série, usamos a operação Slice.
# Código para acessar os 5
# primeiros elementos de uma série do pandas
import pandas as pd
import numpy as np
# criando uma matriz simples
data = np.array(['A', 'c', 'e', 'r', 'v', 'o', ' ', 'L', 'i', 'm', 'a'])
ser = pd.Series(data)
# Mostra os cinco primeiros elementos da série
print(ser[:5])
Saída:
0 A
1 c
2 e
3 r
4 v
dtype: object
Acessando elemento usando rótulo (índice): Para acessar um elemento da série, temos que definir valores por rótulo de índice. Uma série é como um dicionário de tamanho fixo em que você pode obter e definir valores por rótulo de índice.
import pandas as pd
import numpy as np
# Criando matrizes simples
data = np.array(['A', 'c', 'e', 'r', 'v', 'o', ' ', 'L', 'i', 'm', 'a'])
ser = pd.Series(data, index=[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
# acessando elemento pelo índice
print(ser[17])
Saída:
L
Indexação e seleção de dados em série
Indexar em pandas significa simplesmente selecionar dados específicos de uma série. A indexação pode significar selecionar todos os dados, alguns dos dados de colunas específicas. A indexação também pode ser conhecida como Seleção de subconjunto.
Indexando uma série usando o operador de indexação []
: O operador de indexação é usado para referir-se aos colchetes após um objeto. Os indexadores .loc
e .iloc
também usam o operador de indexação para fazer seleções. Neste operador de indexação para se referir a df[]
.
import pandas as pd
# Criando um dataframe
df = pd.read_csv("nba.csv")
ser = pd.Series(df['Name'])
data = ser.head(10)
data
Saída:
0 Avery Bradley
1 Jae Crowder
2 John Holland
3 R.J. Hunter
4 Jonas Jerebko
5 Amir Johnson
6 Jordan Mickey
7 Kelly Olynyk
8 Terry Rozier
9 Marcus Smart
Name: Name, dtype: object
Agora acessamos o elemento da série usando o operador de índice []
.
# Usando o operador de índice
data[3:6]
Saída:
3 R.J. Hunter
4 Jonas Jerebko
5 Amir Johnson
Name: Name, dtype: object
Indexando uma série usando .loc[]
: Esta função seleciona dados referindo-se ao índice explícito. O indexador df.loc
seleciona dados de uma maneira diferente do que apenas o operador de indexação. Ele pode selecionar subconjuntos de dados.
import pandas as pd
# Criando o dataframe
df = pd.read_csv("nba.csv")
ser = pd.Series(df['Name'])
data = ser.head(10)
data
Saída:
0 Avery Bradley
1 Jae Crowder
2 John Holland
3 R.J. Hunter
4 Jonas Jerebko
5 Amir Johnson
6 Jordan Mickey
7 Kelly Olynyk
8 Terry Rozier
9 Marcus Smart
Name: Name, dtype: object
Agora acessamos o elemento da série usando a função .loc[]
.
# usando a função .loc[]
data.loc[3:6]
Saída:
3 R.J. Hunter
4 Jonas Jerebko
5 Amir Johnson
6 Jordan Mickey
Name: Name, dtype: object
Indexando uma série usando .iloc[]
: Esta função nos permite recuperar dados por posição. Para fazer isso, precisamos especificar as posições dos dados que queremos. O indexador df.iloc
é muito semelhante ao df.loc
, mas usa apenas localizações de inteiros para fazer suas seleções.
import pandas as pd
# Criando um dataframe
df = pd.read_csv("nba.csv")
ser = pd.Series(df['Name'])
data = ser.head(10)
data
Saída:
0 Avery Bradley
1 Jae Crowder
2 John Holland
3 R.J. Hunter
4 Jonas Jerebko
5 Amir Johnson
6 Jordan Mickey
7 Kelly Olynyk
8 Terry Rozier
9 Marcus Smart
Name: Name, dtype: object
Agora acessamos o elemento de Series usando a função .iloc[]
.
# usando a função .iloc[]
data.iloc[3:6]
Saída:
3 R.J. Hunter
4 Jonas Jerebko
5 Amir Johnson
Name: Name, dtype: object
Operação binária na série
Podemos realizar operações binárias em séries como adição, subtração e muitas outras operações. Para realizar a operação binária em série, temos que usar algumas funções como .add()
, .sub()
etc.
Código #1:
import pandas as pd
# Criando uma série
data = pd.Series([5, 2, 3,7], index=['a', 'b', 'c', 'd'])
# Criando outra série
data1 = pd.Series([1, 6, 4, 9], index=['a', 'b', 'd', 'e'])
print(data, "\n\n", data1)
Saída:
a 5
b 2
c 3
d 7
dtype: int64
a 1
b 6
d 4
e 9
dtype: int64
Agora adicionamos duas séries usando a função .add()
.
# Adicionando duas séries usando a função .add()
data.add(data1, fill_value=0)
Saída:
a 6.0
b 8.0
c 3.0
d 11.0
e 9.0
dtype: float64
Código #2:
import pandas as pd
# Criando uma série
data = pd.Series([5, 2, 3,7], index=['a', 'b', 'c', 'd'])
# Criando outra série
data1 = pd.Series([1, 6, 4, 9], index=['a', 'b', 'd', 'e'])
print(data, "\n\n", data1)
Saída:
a 5
b 2
c 3
d 7
dtype: int64
a 1
b 6
d 4
e 9
dtype: int64
Agora subtraímos duas séries usando a função .sub()
.
# Subtraindo duas séries usando a função .sub()
data.sub(data1, fill_value=0)
Saída:
a 4.0
b -4.0
c 3.0
d 3.0
e -9.0
dtype: float64
Operação de conversão em série
Na operação de conversão, realizamos várias operações, como alterar o tipo de dados de uma série, alterar uma série para listar etc. Para realizar a operação de conversão, temos várias funções que ajudam na conversão, como .astype()
, .tolist()
etc.
Código #1:
# Programa Python usando astype
# para converter um tipo de dados de série
import pandas as pd
# Cria o dataframe a partir de um arquivo css
data = pd.read_csv("nba.csv")
# descartando colunas de valor nulo para evitar erros
data.dropna(inplace = True)
# armazenar dtype antes de converter
before = data.dtypes
# convertendo dtypes usando astype
data["Salary"]= data["Salary"].astype(int)
data["Number"]= data["Number"].astype(str)
# armazenar dtype após a conversão
after = data.dtypes
# Imprime para comparação
print("Antes da conversão\n", before, "\n")
print("Depois da conversão\n", after, "\n")
Saída:
Antes da conversão
Name object
Team object
Number float64
Position object
Age float64
Height object
Weight float64
College object
Salary float64
dtype: object
Depois da conversão
Name object
Team object
Number object
Position object
Age float64
Height object
Weight float64
College object
Salary int32
dtype: object
Código #2:
# Programa python para converter uma série pasdas numa lista
import pandas as pd
import re
# Criando um dataframe a partir de uma arquivo csv
data = pd.read_csv("nba.csv")
# removendo valores nulos para evitar erros
data.dropna(inplace = True)
# guardando dtype antes da operação
dtype_before = type(data["Salary"])
# Convertendo para lista
salary_list = data["Salary"].tolist()
# guardando dtype depois da operação
dtype_after = type(salary_list)
# imprimindo dtypes
print("Tipo de dado antes da conversão = {}\nTipode dado depois da conversão = {}"
.format(dtype_before, dtype_after))
# monstrando lista
salary_list
Saída:
[7730337.0, 6796117.0, 1148640.0, 1170960.0, 2165160.0, 1824360.0, 3431040.0, 2569260.0, 6912869.0, 3425510.0, 1749840.0, 2616975.0, 845059.0, 1500000.0, 1335480.0, 6300000.0, 134215.0, 1500000.0, 19689000.0, 1140240.0, 947276.0, 981348.0, 947276.0, 947276.0, 11235955.0, 8000000.0, 1635476.0, 22875000.0, 845059.0, 845059.0, 1572360.0, 12650000.0, 3750000.0, 1636842.0, 4000000.0, 167406.0, 947276.0, 1000000.0, 4626960.0, 845059.0, 1074169.0, 6500000.0, 2144772.0, 525093.0, 3457800.0, 4582680.0, 947276.0, 2869440.0, 947276.0, 525093.0, 13600000.0, 10050000.0, 2500000.0, 7000000.0, 12000000.0, 6268675.0, 650000.0, 3553917.0, 245177.0, 1509360.0, 3873398.0, 13800000.0, 947276.0, 11370786.0, 2008748.0, 14260870.0, 11710456.0, 1131960.0, 845059.0, 1270964.0, 3815000.0, 15501000.0, 1100602.0, 111444.0, 5675000.0, 525093.0, 9650000.0, 18907726.0, 1100602.0, 19689000.0, 947276.0, 21468695.0, 3376000.0, 7085000.0, 3110796.0, 1159680.0, 3000000.0, 845059.0, 700000.0, 845059.0, 15592217.0, 1724250.0, 1155600.0, 3132240.0, 5103120.0, 981348.0, 947276.0, 5219169.0, 13500000.0, 2127840.0, 206192.0, 1160160.0, 981348.0, 13500000.0, 3807120.0, 1035000.0, 55722.0, 947276.0, 5500000.0, 2041080.0, 83397.0, 981348.0, 1015421.0, 1449187.0, 3398280.0, 5013559.0, 15851950.0, 947276.0, 525093.0, 12403101.0, 7700000.0, 3156600.0, 845059.0, 9500000.0, 845059.0, 2250000.0, 16407500.0, 4500000.0, 8500000.0, 947276.0, 2380440.0, 1015421.0, 13400000.0, 1391160.0, 20093064.0, 1535880.0, 1147276.0, 8193029.0, 16407501.0, 947276.0, 947276.0, 1276000.0, 19689000.0, 111196.0, 8988765.0, 14260870.0, 2100000.0, 2500000.0, 6500000.0, 2170465.0, 111444.0, 1252440.0, 2891760.0, 845059.0, 3272091.0, 16000000.0, 600000.0, 13913044.0, 2841960.0, 6270000.0, 5000000.0, 3000000.0, 4050000.0, 1007026.0, 17120106.0, 8000000.0, 4000000.0, 1358880.0, 211744.0, 1100000.0, 7000000.0, 2357760.0, 845059.0, 1007026.0, 3000000.0, 2399040.0, 947276.0, 1662360.0, 2943221.0, 8000000.0, 14700000.0, 16407500.0, 295327.0, 845059.0, 5152440.0, 2109294.0, 6600000.0, 1733040.0, 1449000.0, 4290000.0, 1100602.0, 3950313.0, 4053446.0, 2085671.0, 16407500.0, 1270964.0, 15361500.0, 845059.0, 947276.0, 5378974.0, 8193030.0, 306527.0, 6486486.0, 8229375.0, 1646400.0, 200600.0, 15756438.0, 1000000.0, 2489530.0, 3189794.0, 947276.0, 1404600.0, 5158539.0, 5000000.0, 3542500.0, 4088019.0, 9588426.0, 700902.0, 845059.0, 1201440.0, 1230840.0, 9638555.0, 9000000.0, 5464000.0, 8500000.0, 1100602.0, 3036927.0, 2850000.0, 7070730.0, 169883.0, 1164858.0, 845059.0, 10734586.0, 845059.0, 1320000.0, 15514031.0, 1015421.0, 10595507.0, 55722.0, 3382023.0, 19689000.0, 1142880.0, 947276.0, 5250000.0, 10000000.0, 16407500.0, 200600.0, 250750.0, 3578947.0, 525093.0, 1499187.0, 2000000.0, 1304520.0, 2854940.0, 12000000.0, 1000000.0, 5746479.0, 18671659.0, 947276.0, 525093.0, 3333333.0, 8000000.0, 947276.0, 189455.0, 947276.0, 525093.0, 6110034.0, 2612520.0, 6331404.0, 3034356.0, 5675000.0, 2139000.0, 12000000.0, 7000000.0, 4204200.0, 22192730.0, 10151612.0, 2854940.0, 261894.0, 845059.0, 5543725.0, 525093.0, 20000000.0, 981348.0, 2481720.0, 947276.0, 4171680.0, 845059.0, 1294440.0, 2380593.0, 5192520.0, 2505720.0, 4300000.0, 11250000.0, 5000000.0, 4000000.0, 5694674.0, 4375000.0, 561716.0, 3300000.0, 273038.0, 8000000.0, 1920240.0, 4662960.0, 2170465.0, 1100602.0, 200600.0, 15851950.0, 2814000.0, 3000000.0, 3533333.0, 10449438.0, 11235955.0, 1584480.0, 947276.0, 4345000.0, 258489.0, 1474440.0, 1282080.0, 2148360.0, 2056920.0, 1938840.0, 947276.0, 5703600.0, 5758680.0, 2279040.0, 3750000.0, 20158622.0, 3135000.0, 1140240.0, 16407500.0, 1463040.0, 222888.0, 3344000.0, 2021520.0, 1210800.0, 4500000.0, 5138430.0, 16744218.0, 525093.0, 8042895.0, 625093.0, 947276.0, 6980802.0, 2894059.0, 6000000.0, 5016000.0, 3075880.0, 4236287.0, 2525160.0, 525093.0, 1415520.0, 2854940.0, 2637720.0, 4775000.0, 2658240.0, 9463484.0, 12000000.0, 15409570.0, 1348440.0, 981348.0, 2239800.0, 2433333.0, 947276.0]
Métodos de operação binária em série:
Função |
Descrição |
add() |
O método é usado para adicionar séries ou listas de objetos com o mesmo comprimento à série do chamador. |
sub() |
O método é usado para subtrair séries ou listar objetos semelhantes com o mesmo comprimento da série do chamador. |
mul() |
O método é usado para multiplicar séries ou listar objetos semelhantes com o mesmo comprimento da série do chamador. |
div() |
O método é usado para dividir séries ou listar objetos semelhantes com o mesmo comprimento pela série do chamador. |
sum() |
Retorna a soma dos valores do eixo solicitado. |
prod() |
Retorna o produto dos valores para o eixo solicitado. |
mean() |
Retorna a média dos valores para o eixo solicitado. |
pow() |
O método é usado para colocar cada elemento da série passada como potência exponencial da série do chamador e retornar os resultados. |
abs() |
O método é usado para obter o valor numérico absoluto de cada elemento em Series / DataFrame |
cov() |
O método é usado para encontrar a covariância de duas séries. |
Método da série Pandas:
Função |
Descrição |
Series() |
Uma série pandas pode ser criada com o método do construtor Series() . Este método de construtor aceita uma variedade de entradas. |
combine_first() |
O método é usado para combinar duas séries em uma. |
count() |
Retorna o número de observações não NA / nulas na série. |
size() |
Retorna o número de elementos nos dados subjacentes. |
name() |
Método permite dar um nome a um objeto Série, ou seja, à coluna. |
is_unique() |
O método retorna booleano se os valores no objeto forem únicos. |
idxmax() |
Método para extrair as posições de índice dos valores mais altos em uma Série. |
idxmin() |
Método para extrair as posições de índice dos valores mais baixos em uma Série. |
sort_values() |
O método é chamado em uma série para classificar os valores em ordem crescente ou decrescente. |
sort_index() |
O método é chamado em uma série pandas para classificá-lo pelo índice em vez de seus valores. |
head() |
Método é usado para retornar um número especificado de linhas desde o início de uma série. O método retorna uma nova série. |
tail() |
O método é usado para retornar um número especificado de linhas do final de uma série. O método retorna uma nova série. |
le() |
Usado para comparar todos os elementos da série do chamador com as séries passadas. Ele retorna True para cada elemento que é Menor ou Igual ao elemento na série passada. |
ne() |
Usado para comparar cada elemento da série do autor da chamada com as séries aprovadas. Ele retorna True para cada elemento que não é igual ao elemento na série passada. |
ge() |
Usado para comparar cada elemento da série do autor da chamada com as séries aprovadas. Ele retorna True para cada elemento que é maior ou igual ao elemento na série passada. |
eq() |
Usado para comparar cada elemento da série do autor da chamada com as séries aprovadas. Ele retorna True para cada elemento que é igual ao elemento na série passada. |
gt() |
Usado para comparar duas séries e retornar o valor booleano para cada elemento respectivo. |
lt() |
Usado para comparar duas séries e retornar o valor booleano para cada elemento respectivo. |
clip() |
Usado para cortar o valor abaixo e acima para o valor mínimo e máximo passado. |
clip_lower() |
Usado para recortar valores abaixo de um valor mínimo aprovado. |
clip_upper() |
Usado para recortar valores acima de um valor máximo aprovado. |
astype() |
O método é usado para alterar o tipo de dados de uma série. |
tolist() |
O método é usado para converter uma série em lista. |
get() |
O método é chamado em uma série para extrair valores de uma série. Esta é uma sintaxe alternativa à sintaxe tradicional de colchetes. |
unique() |
Pandas unique() é usado para ver os valores únicos em uma coluna particular. |
nunique() |
Pandas nunique() é usado para obter uma contagem de valores únicos. |
value_counts() |
Método para contar o número de vezes que cada valor exclusivo ocorre em uma série. |
factorize() |
O método ajuda a obter a representação numérica de uma matriz identificando valores distintos. |
map() |
Método para unir os valores de um objeto a outro. |
between() |
O método Pandas between () é usado em séries para verificar quais valores estão entre o primeiro e o segundo argumento. |
apply() |
O método é chamado e alimentado com uma função Python como um argumento para usar a função em cada valor de série. Este método é útil para executar operações personalizadas que não estão incluídas no pandas ou numpy. |
Artigo traduzido por Acervo Lima de Python | Pandas Series.