10 Pandas PUC Flashcards

1
Q

import pandas as pd

A

padrão da comunidade, assim como np para NumPy

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q
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

A
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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q
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

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q
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
A
estados["MG"] = "Minas Gerais"
estados
==>
MG      Minas Gerais
AM          Amazonas
MA          Maranhão
GO             Goiás
SC    Santa Catarina
dtype: object
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

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
==>

A
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

dic_estados = {“MG”: “Minas Gerais”, “CE”: “Ceará”, “MT”: “Mato Grosso”, “RR”: “Roraima”}
serie_estados = pd.Series(dic_estados)
serie estados
==>

A
MG    Minas Gerais
CE           Ceará
MT     Mato Grosso
RR         Roraima
dtype: object
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

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

A

serie_estados2[“MT”]
==>
{‘Estado’: ‘Mato Grosso’, ‘Capital’: ‘Cuiabá’, ‘População (2014)’: 3236578}

serie_estados2[“RR”][“Capital”]
==>
‘Boa Vista’

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

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
A

idadescsv[3]
==>
ERROR

type(idadescsv)
==>
pandas.core.frame.DataFrame

idadescsv[‘Idades’][3]
==>
18

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
# 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
A

idadescsv[3]
==>
18

type(idadescsv)
==>
pandas.core.series.Series

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

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

A

Í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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q
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

A
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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

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()

A
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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

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
A

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')
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Métodos do objetos Series: operações matemáticas e estatísticas

A

Método Descrição Exemplo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

add() Retorna a soma com outra Series ou escalar, elemento por elemento c = a.add(b, fill_value=0)

A
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]
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

sub() Retorna a subtração com outra Series ou escalar, elemento por elemento c = a.sub(b, fill_value=3)

A
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]
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

mul() Retorna a multiplicação com outra Series ou escalar, elemento por elemento c = a.mul(b, fill_value=1)

A
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]
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

div() Retorna a divisão com outra Series ou escalar, elemento por elemento c = a.div(b, fill_value=1)

A
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       ]
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

floordiv() Retorna a divisão inteira com outra Series ou escalar, elemento por elemento c = a.floordiv(b, fill_value=1)

A
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]
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

mod() Retorna o resto da divisão com outra Series ou escalar, elemento por elemento c = a.mod(b, fill_value=1)

A
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]
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

pow() Retorna a potenciação com outra Series ou escalar, elemento por elemento c = a.pow(b, fill_value=1)

A
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]
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

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 = 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

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
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

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

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

product() Retorna o produto entre todos os elementos de um objeto Series s.product()

A

mutiplica todos os elementos de s por eles mesmos e dá um resultado final

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

sum() Retorna a soma entre todos os elementos de um objeto Series s.sum()

A

soma todos os elementos de s por eles mesmos e dá um resultado final

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

abs() Retorna valor absoluto de todos os elementos de um objeto Series s.abs()

A

absoluto de cada elemento

28
Q

count() Retorna a quantidade de elementos não nulos s.count()

A

idadescsv3.count()
==>
100

29
Q

describe() Gera um relatório com diversas medidas estatísticas como média, percentis, etc… s.describe()

A
idadescsv3.describe()
==>
count    100.000000
mean      35.570000
std       10.766817
min       18.000000
25%       26.750000
50%       34.000000
75%       45.250000
max       55.000000
Name: Idade, dtype: float64
30
Q

nlargest() Retorna os n maiores elementos s.nlargest(3)

A
idadescsv3.nlargest(3) ==>
Nome
Lucas        55
Valentina    54
Lucca        53
Name: Idade, dtype: int64
31
Q

nsmallest() Retorna os n menores elementos s.nsmallest(5)

A
idadescsv3.nsmallest(5) ==>
Nome
Alícia            18
Amanda            18
Bernardo          18
Heloísa           18
Maria Fernanda    18
Name: Idade, dtype: int64
32
Q

quantile() Retorna o valor de determinado quantil passado por parâmetro s.quantile(0.25)

A

Percentil 25% etc…

33
Q

std() Retorna o desvio padrão s.std()

A

idadescsv3.std()
==>
10.766816773510332

34
Q

unique() Retorna valores únicos s.unique()

A

idadescsv3.unique()
==>
array([24, 27, 18, 44, 46, 49, 47, 41, 19, 25, 31, 42, 23, 39, 21, 33, 45,
34, 43, 29, 36, 40, 32, 22, 48, 52, 51, 55, 53, 26, 54],
dtype=int64)

np.sort(idadescsv3.unique()) ==>
array([18, 19, 21, 22, 23, 24, 25, 26, 27, 29, 31, 32, 33, 34, 36, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54, 55],
dtype=int64)

35
Q

nunique() Retorna a quantidade de elementos únicos s.nunique()

A

idadescsv3.nunique()
=>
31

36
Q

SHALLOW COPY

copy() Retorna uma cópia de um objetos Series s.copy() SHALLOW COPY (CÓPIA SUPERFICIAL, SÓ COPIA A REFERÊNCIA)

serie_estados2

0     9
1     5
2     0
3     9
4     5
5     0
6     5
7     4
8     9
9     5
10    5
11    4
12    4
13    3
14    6
dtype: int32
A

copia = serie_estados2.copy()
copia

0     9
1     5
2     0
3     9
4     5
5     0
6     5
7     4
8     9
9     5
10    5
11    4
12    4
13    3
14    6
dtype: int32

O que modificar em copia modifica também em serie_estados2

37
Q

DEEP COPY #

import pickle
copia = pickle.loads(pickle.dumps(serie_estados2))

A

SE MUDAR NA copia NÃO MODIFICA NA serie_estados2

38
Q

append() Concatena duas ou mais Series s = a.append(b)

a
0    9
1    5
2    0
3    9
4    5
dtype: int32
b
0    2.0
1    5.0
2    NaN
3    0.0
4    3.0
5    NaN
6    6.0
dtype: float64
A
ab = a.append(b)
ab ==>
0    9.0
1    5.0
2    0.0
3    9.0
4    5.0
0    2.0
1    5.0
2    NaN
3    0.0
4    3.0
5    NaN
6    6.0
dtype: float64
ab = a.append(b, ignore_index=True)
ab ==>
0     9.0
1     5.0
2     0.0
3     9.0
4     5.0
5     2.0
6     5.0
7     NaN
8     0.0
9     3.0
10    NaN
11    6.0
dtype: float64
39
Q

DEEP COPY # # CÓPIA DE VERDADE #

import pickle
copia = pickle.loads(pickle.dumps(serie_estados2))

A

SE MUDAR NA copia NÃO MODIFICA NA serie_estados2

40
Q

append() Concatena duas ou mais Series s = a.append(b)

a
0    9
1    5
2    0
3    9
4    5
dtype: int32
b
0    2.0
1    5.0
2    NaN
3    0.0
4    3.0
5    NaN
6    6.0
dtype: float64

Tem que conferir pra mudar o index

A
ab = a.append(b)
ab ==>
0    9.0
1    5.0
2    0.0
3    9.0
4    5.0
0    2.0
1    5.0
2    NaN
3    0.0
4    3.0
5    NaN
6    6.0
dtype: float64
ab = a.append(b, ignore_index=True)
ab ==>
0     9.0
1     5.0
2     0.0
3     9.0
4     5.0
5     2.0
6     5.0
7     NaN
8     0.0
9     3.0
10    NaN
11    6.0
dtype: float64
41
Q

replace() Substitui valor da Series por outro passado por parâmetro

ab
==>
ab ==>
0     9.0
1     5.0
2     0.0
3     9.0
4     5.0
5     2.0
6     5.0
7     NaN
8     0.0
9     3.0
10    NaN
11    6.0
dtype: float64
A
c = ab.replace(0, 1)
c ==>
0     9.0
1     5.0
2     1.0
3     9.0
4     5.0
5     2.0
6     5.0
7     NaN
8     1.0
9     3.0
10    NaN
11    6.0
dtype: float64
42
Q

update() Modifica uma série por valores de outra série passada por parâmetro

c ==>
0     9.0
1     5.0
2     1.0
3     9.0
4     5.0
5     2.0
6     5.0
7     NaN
8     1.0
9     3.0
10    NaN
11    6.0
dtype: float64
A
d = pd.Series([4, 10, 11, 12], index=[9, 7, 10, 4])
d ==>
9      4
7     10
10    11
4     12
dtype: int64
c.update(d)
c
=>
0      9.0
1      5.0
2      1.0
3      9.0
4     12.0 ###
5      2.0
6      5.0
7     10.0 ###
8      1.0
9      4.0 ###
10    11.0 ###
11     6.0
dtype: float64
43
Q

head() Retorna as n primeiras linhas s.head(n)

default = 5, max é 60, a partir disso retorna 5 primeiras e 5 últimas

A

idadescsv3.head()

44
Q

tail() Retorna as n últimas linhas s.tail(n)

default = 5, max é 60, a partir disso retorna 5 primeiras e 5 últimas

A

idadescsv3.tail()

45
Q

sample() Retorna uma amostra s.sample()

A

idadescsv3. sample() # Por default retorna 1 linha de amostra
idadescsv3. sample(5)

46
Q

where() Retorna uma Series onde valores para os quais a condição é False são substituídos por outro passado por parâmetro s.where(s <= 0, 5)

A

d = c.where(c > 3, 10) # Troca valores por 10 se a condição for falsa
e = c.where(c <= 3, 0) # Troca valores por 0 se a condição for falsa
print(“c.values”, c.values)
print(“d.values”, d.values)
print(“e.values”, e.values)
==>
c.values [ 9. 5. 0. 9. 5. 2. 5. nan 0. 3. nan 6.]
d.values [ 9. 5. 10. 9. 5. 10. 5. 10. 10. 10. 10. 6.]
e.values [0. 0. 0. 0. 0. 2. 0. 0. 0. 3. 0. 0.]

47
Q

mask() Retorna uma Series onde valores para os quais a condição é True são substituídos por outro passado por parâmetro s.mask(s > 0, 5)

A

d = c.mask(c > 3, 10) # Troca valores por 10 se a condição for verdadeira
e = c.mask(c <= 3, 0) # Troca valores por 0 se a condição for verdadeira
print(“c.values”, c.values)
print(“d.values”, d.values)
print(“e.values”, e.values)
==>
c.values [ 9. 5. 0. 9. 5. 2. 5. nan 0. 3. nan 6.]
d.values [10. 10. 0. 10. 10. 2. 10. nan 0. 3. nan 10.]
e.values [ 9. 5. 0. 9. 5. 0. 5. nan 0. 0. nan 6.]

48
Q

Métodos do objetos Series: manipulação de dados ausentes

Método Descrição Exemplo

isna()

notna()

dropna()

fillna()

A

isna() Retorna quais valores estão ausentes s.isna()

notna() Retorna quais valores estão presentes s.notna()

dropna() Retorna uma nova Series com valores ausentes removidos s.dropna()

fillna() Substitui valores ausentes por um valor ou usando um método de substituição s.fillna(0)

49
Q

isna() Retorna quais valores estão ausentes s.isna()

s = pd.Series([2, 5, np.nan, 0, 3, None, 6])
s.isna()
==>

A
0    False
1    False
2     True
3    False
4    False
5     True
6    False
dtype: bool
50
Q

notna() Retorna quais valores estão presentes s.notna()

s = pd.Series([2, 5, np.nan, 0, 3, None, 6])
s.notna()
==>

A
0     True
1     True
2    False
3     True
4     True
5    False
6     True
dtype: bool
51
Q

dropna() Retorna uma nova Series com valores ausentes removidos s.dropna()

s = pd.Series([2, 5, np.nan, 0, 3, None, 6])
s1 = s.dropna()
s1
==>
0    2.0
1    5.0
3    0.0
4    3.0
6    6.0
dtype: float64
A
s.dropna(inplace=True)
s
==>
0    2.0
1    5.0
3    0.0
4    3.0
6    6.0
dtype: float64

(modifica a série original)

52
Q

fillna() Substitui valores ausentes por um valor ou usando um método de substituição s.fillna(0)

s = pd.Series([2, 5, np.nan, 0, 3, None, 6])
s1 = s.fillna(-1)
print(s.values)
print(s1.values)
==>
[ 2.  5. nan  0.  3. nan  6.]
[ 2.  5. -1.  0.  3. -1.  6.]
# se quiser modificar série original
s.fillna(-1, inplace=True)
s
==>
0    2.0
1    5.0
2   -1.0
3    0.0
4    3.0
5   -1.0
6    6.0
dtype: float64
A
# Preenche com o elemento posterior ao NaN
s2 = s.fillna(method='bfill')
print(s.values)
print(s2.values)
==>
[ 2.  5. nan  0.  3. nan  6.]
[2. 5. 0. 0. 3. 6. 6.]
# Preenche com o elemento anterior ao NaN
s3 = s.fillna(method='ffill')
print(s.values)
print(s3.values)
==>
[ 2.  5. nan  0.  3. nan  6.]
[2. 5. 5. 0. 3. 3. 6.]
53
Q

Métodos do objetos Series: ordenação

Método Descrição Exemplo

sort_values() Retorna uma Series ordenada pelos valores s.sort_values()

sort_index() Retorna uma Series ordenada pelos rótulos s.sort_index()

idadescsv3.head(10)
==>
Nome
Agatha         24
Alice          27
Alícia         18
Amanda         18
Ana Beatriz    44
Ana Clara      46
Ana Julia      49
Ana Luiza      47
Antônio        47
Arthur         41
Name: Idade, dtype: int64
A
ordenado_id = idadescsv3.sort_values()
ordenado_id.head(10)
==>
Nome
Bernardo          18
Alícia            18
Amanda            18
Heloísa           18
Maria Fernanda    18
Benjamin          19
Rodrigo           19
Daniel            19
Cecília           21
Julia             21
Name: Idade, dtype: int64
ordenado_nome = ordenado_id.sort_index()
ordenado_nome.head(10)
==>
Nome
Agatha         24
Alice          27
Alícia         18
Amanda         18
Ana Beatriz    44
Ana Clara      46
Ana Julia      49
Ana Luiza      47
Antônio        47
Arthur         41
Name: Idade, dtype: int64
54
Q

Métodos do objetos Series: manipulando strings

str. capitalize() Retorna uma Series com os Strings convertidos para a forma capitalizada: primeiro caractere maiúsculo e caracteres restantes em minúsculo s.str.capitalize()
str. lower() Retorna uma Series com os Strings convertidos para letras minúsculas s.str.lower()
str. upper() Retorna uma Series com os Strings convertidos para letras maiúsculas s.str.upper()
str. title() Retorna uma Series com os Strings convertidos para o formato de título: primeira letra de cada palavra convertida para maiúscula s.str.title()

A

livros = pd.Series([“Introdução à programação com Python”,
“Curso Intensivo de Python”,
“Python para análise de dados”])
livros
==>
0 Introdução à programação com Python
1 Curso Intensivo de Python
2 Python para análise de dados
dtype: object

livros.str.title()
==>
0    Introdução À Programação Com Python
1              Curso Intensivo De Python
2           Python Para Análise De Dados
dtype: object
# Não modifica a série original
livros
==>
0    Introdução à programação com Python
1              Curso Intensivo de Python
2           Python para análise de dados
dtype: object
55
Q
linhas = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
colunas = ["A", "B", "C", "D", "E"]
np.random.seed(1)
dados = np.random.randint(0,100,(10,5))
df = pd.DataFrame(dados, linhas, colunas)
df
==>
A
A	B	C	D	E
1	37	12	72	9	75
2	5	79	64	16	1
3	76	71	6	25	50
4	20	18	84	11	28
5	29	14	50	68	87
6	87	94	96	86	13
7	9	7	63	61	22
8	57	1	0	60	81
9	8	88	13	47	72
10	30	71	3	70	21
56
Q
df = pd.DataFrame(dados, linhas, colunas)
df
==>
	A	B	C	D	E
1	37	12	72	9	75
2	5	79	64	16	1
3	76	71	6	25	50
4	20	18	84	11	28
5	29	14	50	68	87
6	87	94	96	86	13
7	9	7	63	61	22
8	57	1	0	60	81
9	8	88	13	47	72
10	30	71	3	70	21
A

type(df)
==>
pandas.core.frame.DataFrame

Informações sobre o DataFrame
df.info()
==>

Int64Index: 10 entries, 1 to 10
Data columns (total 5 columns):
A    10 non-null int32
B    10 non-null int32
C    10 non-null int32
D    10 non-null int32
E    10 non-null int32
dtypes: int32(5)
memory usage: 280.0 bytes
57
Q
df = pd.DataFrame(dados, linhas, colunas)
df
==>
	A	B	C	D	E
1	37	12	72	9	75
2	5	79	64	16	1
3	76	71	6	25	50
4	20	18	84	11	28
5	29	14	50	68	87
6	87	94	96	86	13
7	9	7	63	61	22
8	57	1	0	60	81
9	8	88	13	47	72
10	30	71	3	70	21
A

Medidas estatísticas do DataFrame

CADA COLUNA NO DATAFRAME É TAMBÉM UM OBJETO DO TIPO SERIES

df.describe()
==>
A B C D E
count 10.000000 10.000000 10.000000 10.000000 10.000000
mean 35.800000 45.500000 45.100000 45.300000 45.000000
std 28.785799 37.880661 36.354581 27.912761 31.742016
min 5.000000 1.000000 0.000000 9.000000 1.000000
25% 11.750000 12.500000 7.750000 18.250000 21.250000
50% 29.500000 44.500000 56.500000 53.500000 39.000000
75% 52.000000 77.000000 70.000000 66.250000 74.250000
max 87.000000 94.000000 96.000000 86.000000 87.000000

58
Q
df = pd.DataFrame(dados, linhas, colunas)
df
==>
	A	B	C	D	E
1	37	12	72	9	75
2	5	79	64	16	1
3	76	71	6	25	50
4	20	18	84	11	28
5	29	14	50	68	87
6	87	94	96	86	13
7	9	7	63	61	22
8	57	1	0	60	81
9	8	88	13	47	72
10	30	71	3	70	21
A

Medidas estatísticas do DataFrame

CADA COLUNA NO DATAFRAME É TAMBÉM UM OBJETO DO TIPO SERIES

df.describe()
==>
A B C D E
count 10.000000 10.000000 10.000000 10.000000 10.000000
mean 35.800000 45.500000 45.100000 45.300000 45.000000
std 28.785799 37.880661 36.354581 27.912761 31.742016
min 5.000000 1.000000 0.000000 9.000000 1.000000
25% 11.750000 12.500000 7.750000 18.250000 21.250000
50% 29.500000 44.500000 56.500000 53.500000 39.000000
75% 52.000000 77.000000 70.000000 66.250000 74.250000
max 87.000000 94.000000 96.000000 86.000000 87.000000

59
Q
# Plotagem de gráficos
%matplotlib inline
df.plot.box()

df.plot.bar()

A
# # Selecionar uma coluna
df["A"] == df.A
# # Selecionando múltiplas colunas
df[["C", "D", "E"]]

Verificar tipo de cada coluna:
type(df[“A”])

pandas.core.series.Series

60
Q
df = pd.DataFrame(dados, linhas, colunas)
df
==>
	A	B	C	D	E
1	37	12	72	9	75
2	5	79	64	16	1
3	76	71	6	25	50
4	20	18	84	11	28
5	29	14	50	68	87
6	87	94	96	86	13
7	9	7	63	61	22
8	57	1	0	60	81
9	8	88	13	47	72
10	30	71	3	70	21
A
# Inclusão de colunas
df["Total"] = df.A + df.B + df.C + df.D + df.E
df
==>
A	B	C	D	E	Total
1	37	12	72	9	75	205
2	5	79	64	16	1	165
3	76	71	6	25	50	228
4	20	18	84	11	28	161
5	29	14	50	68	87	248
6	87	94	96	86	13	376
7	9	7	63	61	22	162
8	57	1	0	60	81	199
9	8	88	13	47	72	228
10	30	71	3	70	21	195
61
Q
df = pd.DataFrame(dados, linhas, colunas)
df
==>
	A	B	C	D	E
1	37	12	72	9	75
2	5	79	64	16	1
3	76	71	6	25	50
4	20	18	84	11	28
5	29	14	50	68	87
6	87	94	96	86	13
7	9	7	63	61	22
8	57	1	0	60	81
9	8	88	13	47	72
10	30	71	3	70	21
# Somatório de cada coluna
df.sum()
==>
A    358
B    455
C    451
D    453
E    450
dtype: int64

Adicionando um nova linha com o somatório
tot_coluna = pd.DataFrame(np.array(df.sum()).reshape(1,6), index=[‘Total’], columns=df.columns)
tot_coluna
==>
A B C D E Total
Total 358 455 451 453 450 2167

A
# Concatenando o DataFrame tot_coluna com o DataFrame df
df2 = df.append(tot_coluna)
df2
==>
	A	B	C	D	E	Total
1	37	12	72	9	75	205
2	5	79	64	16	1	165
3	76	71	6	25	50	228
4	20	18	84	11	28	161
5	29	14	50	68	87	248
6	87	94	96	86	13	376
7	9	7	63	61	22	162
8	57	1	0	60	81	199
9	8	88	13	47	72	228
10	30	71	3	70	21	195
Total	358	455	451	453	450	2167
# Outra forma de inserir uma nova linha seria ignorar os rótulos (índices) das linhas
df3 = df2.append(df.mean(), ignore_index = True)
df3
==>
	A	B	C	D	E	Total
0	37.0	12.0	72.0	9.0	75.0	205.0
1	5.0	79.0	64.0	16.0	1.0	165.0
2	76.0	71.0	6.0	25.0	50.0	228.0
3	20.0	18.0	84.0	11.0	28.0	161.0
4	29.0	14.0	50.0	68.0	87.0	248.0
5	87.0	94.0	96.0	86.0	13.0	376.0
6	9.0	7.0	63.0	61.0	22.0	162.0
7	57.0	1.0	0.0	60.0	81.0	199.0
8	8.0	88.0	13.0	47.0	72.0	228.0
9	30.0	71.0	3.0	70.0	21.0	195.0
10	358.0	455.0	451.0	453.0	450.0	2167.0
11	35.8	45.5	45.1	45.3	45.0	216.7
62
Q
A	B	C	D	E	Total
0	37.0	12.0	72.0	9.0	75.0	205.0
1	5.0	79.0	64.0	16.0	1.0	165.0
2	76.0	71.0	6.0	25.0	50.0	228.0
3	20.0	18.0	84.0	11.0	28.0	161.0
4	29.0	14.0	50.0	68.0	87.0	248.0
5	87.0	94.0	96.0	86.0	13.0	376.0
6	9.0	7.0	63.0	61.0	22.0	162.0
7	57.0	1.0	0.0	60.0	81.0	199.0
8	8.0	88.0	13.0	47.0	72.0	228.0
9	30.0	71.0	3.0	70.0	21.0	195.0
10	358.0	455.0	451.0	453.0	450.0	2167.0
11	35.8	45.5	45.1	45.3	45.0	216.7
A
# Exclusão de colunas usando o drop
df4 = df.drop("Total", axis=1) # axis = 1, excluir a coluna
df4
==>
A	B	C	D	E
1	37	12	72	9	75
2	5	79	64	16	1
3	76	71	6	25	50
4	20	18	84	11	28
5	29	14	50	68	87
6	87	94	96	86	13
7	9	7	63	61	22
8	57	1	0	60	81
9	8	88	13	47	72
10	30	71	3	70	21

Não altera na coluna original, pra deletar de verdade inplace = True:

# Para excluir a coluna "Total" de df, é necessário usar o parâmetro inplace
df.drop("Total", axis = 1, inplace=True) # ou df = df.drop("Total", axis=1)
df
63
Q
# Exclusão de uma linha específica
df2.drop(10, inplace=True) # axis por padrão é 0 (eixo das linhas)
df2
A
A	B	C	D	E	Total
1	37	12	72	9	75	205
2	5	79	64	16	1	165
3	76	71	6	25	50	228
4	20	18	84	11	28	161
5	29	14	50	68	87	248
6	87	94	96	86	13	376
7	9	7	63	61	22	162
8	57	1	0	60	81	199
9	8	88	13	47	72	228
Total	358	455	451	453	450	2167
64
Q

Exclusão de múltiplas linhas
df2.drop([3, 7, 8], inplace=True)
df2
==>

A
A	B	C	D	E	Total
1	37	12	72	9	75	205
2	5	79	64	16	1	165
4	20	18	84	11	28	161
5	29	14	50	68	87	248
6	87	94	96	86	13	376
9	8	88	13	47	72	228
Total	358	455	451	453	450	2167
65
Q
df ==>
A	B	C	D	E
1	37	12	72	9	75
2	5	79	64	16	1
3	76	71	6	25	50
4	20	18	84	11	28
5	29	14	50	68	87
6	87	94	96	86	13
7	9	7	63	61	22
8	57	1	0	60	81
9	8	88	13	47	72
10	30	71	3	70	21
A
# Seleção de linhas e colunas através dos rótulos
df.loc[[1, 5, 6], ["D","E"]]
==>
	D	E
1	9	75
5	68	87
6	86	13
# Pelos índices
df.iloc[[0, 4, 5], [3,4]] # equivalente a df.loc[[1, 5, 6], ["D","E"]]
==>
	D	E
1	9	75
5	68	87
6	86	13