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
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
26
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
27
abs() Retorna valor absoluto de todos os elementos de um objeto Series s.abs()
absoluto de cada elemento
28
count() Retorna a quantidade de elementos não nulos s.count()
idadescsv3.count() ==> 100
29
describe() Gera um relatório com diversas medidas estatísticas como média, percentis, etc... s.describe()
``` 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
nlargest() Retorna os n maiores elementos s.nlargest(3)
``` idadescsv3.nlargest(3) ==> Nome Lucas 55 Valentina 54 Lucca 53 Name: Idade, dtype: int64 ```
31
nsmallest() Retorna os n menores elementos s.nsmallest(5)
``` idadescsv3.nsmallest(5) ==> Nome Alícia 18 Amanda 18 Bernardo 18 Heloísa 18 Maria Fernanda 18 Name: Idade, dtype: int64 ```
32
quantile() Retorna o valor de determinado quantil passado por parâmetro s.quantile(0.25)
Percentil 25% etc...
33
std() Retorna o desvio padrão s.std()
idadescsv3.std() ==> 10.766816773510332
34
unique() Retorna valores únicos s.unique()
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
nunique() Retorna a quantidade de elementos únicos s.nunique()
idadescsv3.nunique() => 31
36
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 ```
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
# DEEP COPY # # import pickle copia = pickle.loads(pickle.dumps(serie_estados2))
SE MUDAR NA copia NÃO MODIFICA NA serie_estados2
38
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 ```
``` 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
# DEEP COPY # # CÓPIA DE VERDADE # # import pickle copia = pickle.loads(pickle.dumps(serie_estados2))
SE MUDAR NA copia NÃO MODIFICA NA serie_estados2
40
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
``` 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
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 ```
``` 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
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 ```
``` 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
head() Retorna as n primeiras linhas s.head(n) | default = 5, max é 60, a partir disso retorna 5 primeiras e 5 últimas
idadescsv3.head()
44
tail() Retorna as n últimas linhas s.tail(n) | default = 5, max é 60, a partir disso retorna 5 primeiras e 5 últimas
idadescsv3.tail()
45
sample() Retorna uma amostra s.sample()
idadescsv3. sample() # Por default retorna 1 linha de amostra idadescsv3. sample(5)
46
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)
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
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)
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
Métodos do objetos Series: manipulação de dados ausentes Método Descrição Exemplo isna() notna() dropna() fillna()
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
isna() Retorna quais valores estão ausentes s.isna() s = pd.Series([2, 5, np.nan, 0, 3, None, 6]) s.isna() ==>
``` 0 False 1 False 2 True 3 False 4 False 5 True 6 False dtype: bool ```
50
notna() Retorna quais valores estão presentes s.notna() s = pd.Series([2, 5, np.nan, 0, 3, None, 6]) s.notna() ==>
``` 0 True 1 True 2 False 3 True 4 True 5 False 6 True dtype: bool ```
51
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 ```
``` 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
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 ```
``` # 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
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 ```
``` 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
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()
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
``` 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 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
``` 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 ```
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
``` 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 ```
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
``` 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 ```
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
``` # Plotagem de gráficos %matplotlib inline df.plot.box() ``` df.plot.bar()
``` # # 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
``` 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 ```
``` # 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
``` 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
``` # 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
``` 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 ```
``` # 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
``` # Exclusão de uma linha específica df2.drop(10, inplace=True) # axis por padrão é 0 (eixo das linhas) 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 Total 358 455 451 453 450 2167 ```
64
Exclusão de múltiplas linhas df2.drop([3, 7, 8], inplace=True) df2 ==>
``` 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
``` 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 ```
``` # 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 ```