10 Pandas PUC Flashcards
import pandas as pd
padrão da comunidade, assim como np para NumPy
idades = [68, 23, 17, 39, 25, 58] idades s = pd.Series(idades) s ==> 0 68 1 23 2 17 3 39 4 25 5 58 dtype: int64
s[3]
==>
39
s = pd.Series([68, 23, 17, 39, 25, 58]) s ==> 0 68 1 23 2 17 3 39 4 25 5 58 dtype: int64
igual anterior mesmo
pessoas = ['Eni', 'Bia', 'Flávio', 'Carlos', 'Dedé', 'Abigail'] idades = [68, 23, 17, 39, 25, 58] s1 = pd.Series(idades, pessoas) s1 ==> Eni 68 Bia 23 Flávio 17 Carlos 39 Dedé 25 Abigail 58 dtype: int64
idades são dados, pessoas são rótulos
s1[‘Carlos’]
==>
39
s1[39]
==>
ERROR
s2 = pd.Series(index = idades, data = pessoas)
s2[39]
==>
‘Carlos’
padrão é primeiro dados e depois index/rótulos
nomes = ("Mnas Gerais", "Amazonas", "Maranhão", "Goiás", "Santa Catarina") siglas = ("MG", "AM", "MA", "GO", "SC") estados = pd.Series(nomes, siglas) estados ==> MG Mnas Gerais AM Amazonas MA Maranhão GO Goiás SC Santa Catarina dtype: object
estados["MG"] = "Minas Gerais" estados ==> MG Minas Gerais AM Amazonas MA Maranhão GO Goiás SC Santa Catarina dtype: object
precos = np.array([25, 22, 18.5, 4.75, 3, 4.5, 2.3])
lanches = np.array([‘X-tudo’, ‘X-Bacon’, ‘Bauru’, ‘Misto-quente’, ‘Pão-de-queijo’, ‘Coxinha’, ‘Pastel’])
cardapio = pd.Series(precos, lanches)
cardápio
==>
X-tudo 25.00 X-Bacon 22.00 Bauru 18.50 Misto-quente 4.75 Pão-de-queijo 3.00 Coxinha 4.50 Pastel 2.30 dtype: float64
dic_estados = {“MG”: “Minas Gerais”, “CE”: “Ceará”, “MT”: “Mato Grosso”, “RR”: “Roraima”}
serie_estados = pd.Series(dic_estados)
serie estados
==>
MG Minas Gerais CE Ceará MT Mato Grosso RR Roraima dtype: object
dic_estados2 = {“MG”: {“Estado”:”Minas Gerais”, “Capital”:”Belo Horizonte”, “População (2014)”:20777672},
“CE”: {“Estado”:”Ceará”, “Capital”:”Fortaleza”, “População (2014)”:8867448},
“MT”: {“Estado”:”Mato Grosso”, “Capital”:”Cuiabá”, “População (2014)”:3236578},
“RR”: {“Estado”:”Roraima”, “Capital”:”Boa Vista”, “População (2014)”:500826},}
serie_estados2 = pd.Series(dic_estados2)
serie_estados2
==>
m
CE {‘Estado’: ‘Ceará’, ‘Capital’: ‘Fortaleza’, ‘P…
MT {‘Estado’: ‘Mato Grosso’, ‘Capital’: ‘Cuiabá’,…
RR {‘Estado’: ‘Roraima’, ‘Capital’: ‘Boa Vista’, …
dtype: object
serie_estados2[“MT”]
==>
{‘Estado’: ‘Mato Grosso’, ‘Capital’: ‘Cuiabá’, ‘População (2014)’: 3236578}
serie_estados2[“RR”][“Capital”]
==>
‘Boa Vista’
Criando Series a partir de arquivos .csv:
O arquivo idades.csv contém as idades de 100 pessoas (apenas 1 coluna)
idadescsv = pd.read_csv("idades.csv") idadescsv.head() ==> Idades 0 55 1 45 2 74 3 18 4 21
# mostra as 5 primeiras linhas de uma Series ou DataFrame, se head(60) mostraria as 60 primeiras linhas # 60 é o limite, se 61, mostra as 5 primeiras e 5 últimas até 61 # se colocar número acima do limite não dá erro, mostra as 5 últimas normalmente
idadescsv[3]
==>
ERROR
type(idadescsv)
==>
pandas.core.frame.DataFrame
idadescsv[‘Idades’][3]
==>
18
# Passando o argumento squeeze = True (por default squeeze = False) # Quando squeeze = True, se os dados estiverem em apenas 1 dimensão, é então retornado uma Series
idadescsv = pd.read_csv("idades.csv", squeeze=True) idadescsv.head() ==> 0 55 1 45 2 74 3 18 4 21 Name: Idades, dtype: int64
idadescsv[3]
==>
18
type(idadescsv)
==>
pandas.core.series.Series
O arquivo idades2.csv contém o nomes e idade de 100 pessoas. A coluna nome será usada como índice.
idadescsv2 = pd.read_csv("idades2.csv", squeeze=True) idadescsv2.head() ==> Nome Idade 0 Agatha 24 1 Alice 27 2 Alícia 18 3 Amanda 18 4 Ana Beatriz 44
type(idadescsv2)
==>
pandas.core.frame.DataFrame
Índice, Dados
idadescsv3 = pd.read_csv("idades2.csv", index_col = 0, squeeze=True) idadescsv3.head() ==> Nome Agatha 24 Alice 27 Alícia 18 Amanda 18 Ana Beatriz 44 Name: Idade, dtype: int64
idadescsv4 = pd.read_csv("idades2.csv", index_col = 1, squeeze=True) idadescsv4.head() ==> Idade 24 Agatha 27 Alice 18 Alícia 18 Amanda 44 Ana Beatriz Name: Nome, dtype: object
idadesxls = pd.read_excel("idades2.xlsx", squeeze=True) idadesxls.head() ==> 0 55 1 45 2 74 3 18 4 21 Name: Idades, dtype: int64
Abre a primeira planilha por padrão
idadesxls2 = pd.read_excel("idades2.xlsx", sheet_name="Planilha2") idadesxls2.head() ==> Nome Idade 0 Agatha 24 1 Alice 27 2 Alícia 18 3 Amanda 18 4 Ana Beatriz 44
type(idadesxls2)
==>
pandas.core.frame.DataFrame
idadesxls3 = pd.read_excel("idades2.xlsx", sheet_name="Planilha2", index_col = 0, squeeze=True) idadesxls3.head() ==> Nome Agatha 24 Alice 27 Alícia 18 Amanda 18 Ana Beatriz 44 Name: Idade, dtype: int64
type(idadesxls3)
==>
pandas.core.series.Series
Métodos do objeto Series: indexação e iteração
Método Descrição Exemplo
at() Acessa o elemento da chave passada por parâmetro s.iat[“chave”]
iat() Acessa o elemento no índice passado por parâmetro s.iat(0)
get() Retorna um valor para a chave passada por parâmetro s.get(2)
loc() Acessa os elementos para as chaves passadas por parâmetro s.loc[“chave1”, “chave2”]
iloc() Acesso via índice s.iloc[0] ou s.iloc[[1,3]]
keys() Retorna o índice (rótulos) de um objeto Series s.keys()
cardápio ==> X-tudo 25.00 X-Bacon 22.00 Bauru 18.50 Misto-quente 4.75 Pão-de-queijo 3.00 Coxinha 4.50 Pastel 2.30 Name: Cardápio, dtype: float64
cardapio. at[“X-tudo”] ==> 25.0
cardapio. iat[0] ==> 25.0
Métodos do objeto Series: indexação e iteração
Método Descrição Exemplo
at() Acessa o elemento da chave passada por parâmetro s.iat[“chave”]
iat() Acessa o elemento no índice passado por parâmetro s.iat(0)
get() Retorna um valor para a chave passada por parâmetro s.get(2)
loc() Acessa os elementos para as chaves passadas por parâmetro s.loc[“chave1”, “chave2”]
iloc() Acesso via índice s.iloc[0] ou s.iloc[[1,3]]
keys() Retorna o índice (rótulos) de um objeto Series s.keys()
cardápio ==> X-tudo 25.00 X-Bacon 22.00 Bauru 18.50 Misto-quente 4.75 Pão-de-queijo 3.00 Coxinha 4.50 Pastel 2.30 Name: Cardápio, dtype: float64
cardapio. at[“X-tudo”] ==> 25.0
cardapio. iat[0] ==> 25.0
cardapio.iat[0] = 25.5
cardapio.get(0) # não permite alterar
==>
25.5
cardapio.loc[["Bauru", "Pastel"]] ==> Bauru 18.5 Pastel 2.3 Name: Cardápio, dtype: float64
cardapio.iloc[[0,2,3]] ==> X-tudo 25.50 Bauru 18.50 Misto-quente 4.75 Name: Cardápio, dtype: float64
cardapio.keys() ==> Index(['X-tudo', 'X-Bacon', 'Bauru', 'Misto-quente', 'Pão-de-queijo', 'Coxinha', 'Pastel'], dtype='object')
Métodos do objetos Series: operações matemáticas e estatísticas
Método Descrição Exemplo
add() Retorna a soma com outra Series ou escalar, elemento por elemento c = a.add(b, fill_value=0)
a = pd.Series([4, 8, 2, 5, 7]) b = pd.Series([1, 2, 3, 4, 5]) c = a.add(b) print(" ",a.values) print("+",b.values) print("="*16) print(c.values) ==> [4 8 2 5 7] \+ [1 2 3 4 5] ================ [ 5 10 5 9 12]
a2 = a.add(3) print(" ",a.values) print("+",3) print("="*16) print(a2.values) ==> [4 8 2 5 7] \+ 3 ================ [ 7 11 5 8 10]
sub() Retorna a subtração com outra Series ou escalar, elemento por elemento c = a.sub(b, fill_value=3)
d = a.sub(b) print(" ",a.values) print("-",b.values) print("="*16) print(d.values) ==> [4 8 2 5 7] - [1 2 3 4 5] ================ [ 3 6 -1 1 2]
mul() Retorna a multiplicação com outra Series ou escalar, elemento por elemento c = a.mul(b, fill_value=1)
e = a.mul(b) print(" ",a.values) print("*",b.values) print("="*16) print(e.values) ==> [4 8 2 5 7] * [1 2 3 4 5] ================ [ 4 16 6 20 35]
div() Retorna a divisão com outra Series ou escalar, elemento por elemento c = a.div(b, fill_value=1)
f = a.div(b) print(" ",a.values) print("/",b.values) print("="*16) print(f.values) ==> [4 8 2 5 7] / [1 2 3 4 5] ================ [4. 4. 0.66666667 1.25 1.4 ]
floordiv() Retorna a divisão inteira com outra Series ou escalar, elemento por elemento c = a.floordiv(b, fill_value=1)
g = a.floordiv(b) print(" ",a.values) print("//",b.values) print("="*16) print(" ",g.values) ==> [4 8 2 5 7] // [1 2 3 4 5] ================ [4 4 0 1 1]
mod() Retorna o resto da divisão com outra Series ou escalar, elemento por elemento c = a.mod(b, fill_value=1)
h = a.mod(b) print(" ",a.values) print("%",b.values) print("="*16) print(" ",h.values) ==> [4 8 2 5 7] % [1 2 3 4 5] ================ [0 0 2 1 2]
pow() Retorna a potenciação com outra Series ou escalar, elemento por elemento c = a.pow(b, fill_value=1)
i = a.pow(b) print(" ",a.values) print("**",b.values) print("="*16) print(" ",i.values) ==> [4 8 2 5 7] ** [1 2 3 4 5] ================ [ 4 64 8 625 16807]
j = a.pow(2) print(" ",a.values) print("**",2) print("="*16) print(" ",j.values) ==> [4 8 2 5 7] ** 2 ================ [16 64 4 25 49]
round() Arredonda os valores de uma Series para uma quantidade determinada de casas decimais s = a.round(2)
a ==> 0 7.745967 1 2.645751 2 6.403124 3 8.717798 4 7.937254 5 7.745967 6 5.385165 7 9.380832 8 5.385165 9 7.681146 dtype: float64
a = a.round(2) ==> 0 7.75 1 2.65 2 6.40 3 8.72 4 7.94 5 7.75 6 5.39 7 9.38 8 5.39 9 7.68 dtype: float64
a = a.round() ==> 0 8.0 1 3.0 2 6.0 3 9.0 4 8.0 5 8.0 6 5.0 7 9.0 8 5.0 9 8.0 dtype: float64
Default é 0
lt() Retorna o resultado da comparação menor que, aplicada elemento por elemento, entre duas Series c = a.lt(b, fill_value=0)
LOWER THAN
a ==> 0 9 1 5 2 0 3 9 4 5 dtype: int32
b ==> 0 7 1 0 2 8 3 8 4 6 dtype: int32
a.lt(b) 0 False 1 False 2 True 3 False 4 True dtype: bool
gt() Retorna o resultado da comparação maior que, aplicada elemento por elemento, entre duas Series c = a.gt(b, fill_value=0) GREATHER THAN
le() Retorna o resultado da comparação menor ou igual, aplicada elemento por elemento, entre duas Series c = a.le(b, fill_value=0) LOWER OR EQUAL THAN
ge() Retorna o resultado da comparação maior ou igual, aplicada elemento por elemento, entre duas Series c = a.ge(b, fill_value=0) GREATER OR EQUAL THAN
ne() Retorna o resultado da comparação não igual a, aplicada elemento por elemento, entre duas Series c = a.ne(b, fill_value=0) NOT EQUAL
eq() Retorna o resultado da comparação igual a, aplicada elemento por elemento, entre duas Series c = a.eq(b, fill_value=0) EQUAL
product() Retorna o produto entre todos os elementos de um objeto Series s.product()
mutiplica todos os elementos de s por eles mesmos e dá um resultado final
sum() Retorna a soma entre todos os elementos de um objeto Series s.sum()
soma todos os elementos de s por eles mesmos e dá um resultado final