0% acharam este documento útil (0 voto)
5 visualizações63 páginas

Slide de Python 09

O documento apresenta uma introdução ao pacote Pandas, uma biblioteca de Python para manipulação e análise de dados, destacando suas principais estruturas, como DataFrame e Series. Ele aborda a instalação, criação de DataFrames, modificação de rótulos, atributos e indexadores para acessar dados. O Pandas é descrito como uma ferramenta poderosa para trabalhar com dados multidimensionais, oferecendo funcionalidades robustas para limpeza e análise de dados.

Enviado por

Saulo Tiburtius
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações63 páginas

Slide de Python 09

O documento apresenta uma introdução ao pacote Pandas, uma biblioteca de Python para manipulação e análise de dados, destacando suas principais estruturas, como DataFrame e Series. Ele aborda a instalação, criação de DataFrames, modificação de rótulos, atributos e indexadores para acessar dados. O Pandas é descrito como uma ferramenta poderosa para trabalhar com dados multidimensionais, oferecendo funcionalidades robustas para limpeza e análise de dados.

Enviado por

Saulo Tiburtius
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

INTRODUÇÃO AO PYTHON PARA

CIÊNCIA DE DADOS

Prof. Dr. Anderson Ara

Prof. Dr. José Jairo de S. e Silva

Slide 09
Pacote Pandas

2 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Pandas é um nome derivado de “Panel Data”, um termo de econometria para dados multidimensionais.

Iniciado em 2008, por Wes McKinney, o Pandas é um pacote de código aberto de alto desempenho para
manipulação e análise de dados em Python.

O Pandas utiliza principalmente seus objetos DataFrame (estrutura de dados tabular bidimensional
com rótulos) e Series (unidimensional com rótulos), e oferece um conjunto vasto de ferramentas para
trabalhar com essas estruturas.

Fornece recursos para limpeza de dados, filtragem, agrupamento (group by), junção (merge/join),
tratamento de dados ausentes e análise de séries temporais.

Documentação em: [Link]

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 3 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Pandas

Instalar o Pandas é simples, basta usar o pip: pip install pandas

Usando o RStudio:

py_require("pandas") e py_install("pandas")
Para usar o Pandas, primeiro precisamos importá-lo.

import pandas

Para evitar a repetição do nome completo, é comum importar o Pandas com o alias pd:

# Forma mais comum de importar a biblioteca com alias


import pandas as pd

A seguir utilizaremos sempre o alias pd para acessar as funcionalidades do Pandas.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 4 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

DataFrame

O DataFrame é a estrutura de dados mais importante do Pandas.

Uma instância do tipo DataFrame é um objeto de duas (ou mais ) dimensões com as seguintes
características:

Suas dimensões podem ser modificadas decorrente da modificação dos dados.


Possui rótulos para linhas e colunas, ao invés de exclusivamente por índices.
Pode conter diferentes tipos de dados (numéricos, strings, booleanos, etc.) em diferentes
colunas.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 5 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

DataFrame (Pandas) vs. Array (NumPy)

Um DataFrame é construído sobre os Arrays do NumPy, mas adiciona funcionalidades para a análise de
dados reais.

Característica Array (NumPy) DataFrame (Pandas)


Tipos de Homogêneo: todos os elementos Heterogêneo: colunas podem ter tipos diferentes
Dados do mesmo tipo. (números, texto, etc.).
Rótulos Acesso por índices numéricos (ex: Rótulos explícitos para linhas (index) e colunas
(Índices) array[0, 1]). (columns).
Dados Suporte básico com [Link].
Funções robustas e integradas para tratar dados
Faltantes faltantes (ex: fillna(), dropna()).
Computação numérica e álgebra Manipulação, limpeza e análise de dados tabulares.
Uso Principal linear. O "motor". O "veículo".
Tamanho pode ser alterado (novas colunas/linhas
Flexibilidade Tamanho fixo após a criação.
podem ser adicionadas).

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 6 / 63
Pense no NumPy como a base para operações matemáticas rápidas em matrizes e no Pandas como a
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

DataFrame

A classe DataFrame da biblioteca pandas possui um método construtor com alguns parâmetros:
data: recebe os dados em formato de lista dicionário ou até um DataFrame.
index: recebe uma string que definem os rótulos das linhas.
columns: recebe uma string que definem os rótulos das colunas.
dtype: recebe um tipo de dados com intuito de forçar a conversão do tipo de dados do
DataFrame. Por default, esse parâmetro é None e os tipos são inferidos automaticamente.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 7 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Criando um DataFrame a partir de uma lista de tuplas:

import pandas as pd
nomes = ['Ana', 'Bruno', 'Carla']
idades = [23, 35, 29]
dados = list(zip(nomes, idades))
print(dados)

## [('Ana', 23), ('Bruno', 35), ('Carla', 29)]

df = [Link](dados)
print(df)

## 0 1
## 0 Ana 23
## 1 Bruno 35
## 2 Carla 29

Note que o DataFrame cria automaticamente rótulos padrões (índices) para que os dados sejam
acessados.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 8 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Criando um DataFrame a partir de um dicionário:

import pandas as pd
dados = {'Nome': ['Ana', 'Bruno', 'Carla'],
'Idade': [23, 35, 29]}
df = [Link](dados)
print(df)

## Nome Idade
## 0 Ana 23
## 1 Bruno 35
## 2 Carla 29

Note que o DataFrame criado possui as colunas com nomes indicados nas chaves do dicionário.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 9 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Criando um DataFrame com Rótulos Personalizados

DataFrame permitem a criação de rótulos personalizados para as linhas e para as colunas de forma a
facilitar o acesso aos dados.

import pandas as pd
dados = [('Ana', 23), ('Bruno', 35), ('Carla', 29)]
colunas = ['Nome', 'Idade']
linhas = ['A', 'B', 'C']
df = [Link](dados, columns=colunas, index=linhas)
print(df)

## Nome Idade
## A Ana 23
## B Bruno 35
## C Carla 29

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 10 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Modificando os Rótulos de uma DataFrame

import pandas as pd
dados = [('Ana', 21), ('Bruno', 20), ('Carla', 22)]
df = [Link](data = dados)
print(df)

## 0 1
## 0 Ana 21
## 1 Bruno 20
## 2 Carla 22

[Link] = ['Nome', 'Idade'] # Modificando os rótulos das colunas


[Link] = ['A', 'B', 'C'] # Modificando os rótulos das linhas
print(df)

## Nome Idade
## A Ana 21
## B Bruno 20
## C Carla 22

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 11 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Atributos de um DataFrame

Objetos do tipo DataFrame possuem diversos atributos que são bastante úteis:

index: retorna os rótulos das linhas em fotmato de lista

columns: retorna os rótulos das colunas em formato de lista

ndim: retorna o número de dimensões do DataFrame

shape: retorna uma tupla com o número de linhas e colunas do DataFrame

size: retorna o número total de elementos do DataFrame

dtypes: retorna os tipos de dados de cada coluna do DataFrame

empty: retorna True se o DataFrame estiver vazio e False caso contrário

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 12 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Atributos de um DataFrame

Exemplos:

import pandas as pd
print(df)

## Nome Idade
## A Ana 21
## B Bruno 20
## C Carla 22

print(list([Link])) # Rótulos das linhas

## ['A', 'B', 'C']

print(list([Link])) # Rótulos das colunas

## ['Nome', 'Idade']

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 13 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Atributos de um DataFrame

Exemplo:

print([Link]) # Número de dimensões

## 2

print([Link]) # Número de linhas e colunas

## (3, 2)

print([Link]) # Número total de elementos

## 6

print([Link]) # Verifica se o DataFrame está vazio

## False

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 14 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Acessando os Dados de um DataFrame

Diferentemente dos arrays do NumPy, os dados de um DataFrame podem ser acessados tanto pelos
rótulos (índices) quanto pelos índices numéricos. A forma de acessa um dado de um DataFrame é a
seguinte:

# dataframe[<coluna>][<linha>]

Exemplo:

dados = [('Ana', 21), ('Bruno', 20), ('Carla', 22)]


df = [Link](data = dados)
print(df[0][0], df[0][1], df[0][2])

## Ana Bruno Carla

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 15 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Indexadores

Os DataFrames possuem indexadores para seleção de dados.


Esses indexadores fornecem formas fáceis e intuitivas de acessar os dados.

Alguns dos indexadores mais comuns são:

.T[]: Transpõe o DataFrame (troca linhas por colunas).

.loc[]: Acessa dados por rótulos (índices).

.iloc[]: Acessa dados por posições (índices numéricos).

.at[]: Acessa um único valor por rótulo.

.iat[]: Acessa um único valor por posição.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 16 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Indexadores

O indexador .T[] retorna o DataFrame transposto, ou seja, troca as linhas pelas colunas.

import pandas as pd
dados = [('Ana', 21), ('Bruno', 20), ('Carla', 22)]
df = [Link](data = dados, columns=['Nome', 'Idade'], index=['A', 'B', 'C'])
print(df)

## Nome Idade
## A Ana 21
## B Bruno 20
## C Carla 22

print(df.T)

## A B C
## Nome Ana Bruno Carla
## Idade 21 20 22

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 17 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Indexadores

O indexador .at[] é usado para acessar um único valor em um DataFrame, utilizando rótulos
(índices) para especificar a linha e a coluna.

print(df)

## Nome Idade
## A Ana 21
## B Bruno 20
## C Carla 22

[Link]['C', 'Nome'] # Acessa o valor na linha 'C' e coluna 'Nome'

## 'Carla'

[Link]['A', 'Idade'] # Acessa o valor na linha 'A' e coluna 'Idade'

## np.int64(21)

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 18 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Indexadores

O indexador .at[] opera apenas com rótulos e não com os índices dos elementos.
Caso os índices de um elemento sejam fornecidos, ao invés dos seus rótulos um erro é gerado

import pandas as pd
# ...
print(df)
# Nome Idade
# A Ana 21
# B Bruno 20
# C Carla 22

print([Link]['C', 'Nome'])
# Carla

print([Link][2, 0])
# ValueError: At based indexing on an non-integer index
# can only have non-integer indexers

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 19 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Indexadores

O indexador .iat[] é usado para acessar um único valor em um DataFrame, utilizando índices
numéricos para especificar a linha e a coluna.
Caso rótulos de um elemento sejam fornecidos, ao invés de seus índices um erro é gerado.

print(df)
# Nome Idade
# A Ana 21
# B Bruno 20
# C Carla 22
print([Link][2, 0])
# Carla
print([Link]['C', 'Nome'])
# ValueError: iAt based indexing on an integer index

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 20 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Indexadores

O indexador .loc[] é usado para acessar um grupo de linhas e colunas por rótulos ou uma matriz
booleana.

print(df)

## Nome Idade
## A Ana 21
## B Bruno 20
## C Carla 22

print([Link][['B','C']]) # Acessa a linhas com rótulos 'B' e 'C'

## Nome Idade
## B Bruno 20
## C Carla 22

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 21 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Indexadores

O indexador .loc[] também pode ser usado para acessar linhas e colunas específicas ou ainda usar
Booleanos.

print([Link][['A','C'], ['Nome']]) # Acessa as linhas 'A' e 'C' e a coluna 'Nome'

## Nome
## A Ana
## C Carla

print([Link]['B', ['Nome', 'Idade']]) # Acessa a linha 'B' e as colunas 'Nome' e 'Idade'

## Nome Bruno
## Idade 20
## Name: B, dtype: object

print([Link][[True , False , True], 'Nome'])

## A Ana
## C Carla
## Name: Nome, dtype: object
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 22 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Indexadores

O operador opera apenas com rótulos e não com os índices dos elementos.
Caso os índices de um elemento sejam fornecidos, ao invés dos seus rótulos um erro é gerado.

import pandas as pd
# ...
print(df)
# Nome Idade
# A Ana 21
# B Bruno 20
# C Carla 22
print([Link][[1, 2]])
# KeyError: '[1 2] not in index'

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 23 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Indexadores

O indexador .iloc[] é usado para acessar um grupo de linhas e colunas por índices inteiros
(posições).

print(df)

## Nome Idade
## A Ana 21
## B Bruno 20
## C Carla 22

print([Link][[1, 2]]) # Acessa a linhas nas posições 1 e 2

## Nome Idade
## B Bruno 20
## C Carla 22

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 24 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Indexadores

Mais exemplos de

print([Link][-1]) # Acessa a última linha do DataFrame

## Nome Carla
## Idade 22
## Name: C, dtype: object

print([Link][[0, 2], [0]]) # Acessa as linhas nas posições 0 e 2 e a coluna na posição 0

## Nome
## A Ana
## C Carla

o indexador opera apenas com índices e não com os rótulos dos elementos. Caso os rótulos de um
elemento sejam fornecidos, ao invés de seus índices um erro é gerado (chequem!).

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 25 / 63
Manipulando Dados com Pandas
26 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Adicionando e Modificando Colunas em um DataFrame

Para adicionar uma nova coluna a um DataFrame, basta atribuir uma lista ou uma série de valores a
um novo rótulo de coluna.

print(df)

## Nome Idade
## A Ana 21
## B Bruno 20
## C Carla 22

df['Cidade'] = 'São Paulo' # Adiciona uma nova coluna 'Cidade' com valor padrão
print(df)

## Nome Idade Cidade


## A Ana 21 São Paulo
## B Bruno 20 São Paulo
## C Carla 22 São Paulo

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 27 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Adicionando e Modificando Colunas em um DataFrame

print(df)

## Nome Idade Cidade


## A Ana 21 São Paulo
## B Bruno 20 São Paulo
## C Carla 22 São Paulo

df['Cidade'] = ['São Paulo', 'Rio de Janeiro', 'Belo Horizonte']


print(df)

## Nome Idade Cidade


## A Ana 21 São Paulo
## B Bruno 20 Rio de Janeiro
## C Carla 22 Belo Horizonte

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 28 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Adicionando e Modificando Linhas de um DataFrame

Para adicionar novas linhas a um DataFrame, podemos usar o método [Link]().


Esse método concatena dois ou mais DataFrames ao longo de um eixo (linhas ou colunas).

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 29 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Adicionando e Modificando Linhas de um DataFrame

Concatenando dois DataFrames por linhas (axis=0):

dados1 = [('Ana', 21,'F'), ('Bruno', 20,'M')]


df1 = [Link](data = dados1, columns=['Nome', 'Idade','Sexo'])
print(df1)

## Nome Idade Sexo


## 0 Ana 21 F
## 1 Bruno 20 M

dados = [ {'Nome': 'Carla', 'Idade': 22, 'Sexo': 'F'}, {'Nome': 'Daniel', 'Idade': 18, 'Sexo':
df2 = [Link](data = dados)
df3 = [Link]([df1, df2], ignore_index=True)
print(df3)

## Nome Idade Sexo


## 0 Ana 21 F
## 1 Bruno 20 M
## 2 Carla 22 F
## 3 Daniel 18 M

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 30 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Adicionando e Modificando Linhas de um DataFrame

Concatenando dois DataFrames por colunas (axis=1):

dados1 = [('Ana', 21), ('Bruno', 20)]


df1 = [Link](data = dados1, columns=['Nome', 'Idade'])
print(df1)

## Nome Idade
## 0 Ana 21
## 1 Bruno 20

dados2 = [('F'), ('M')]


df2 = [Link](data = dados2, columns=['Sexo'])
df3 = [Link]([df1, df2], axis=1)
print(df3)

## Nome Idade Sexo


## 0 Ana 21 F
## 1 Bruno 20 M

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 31 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Removendo linhas e Colunas de um DataFrame

Para remover linhas ou colunas de um DataFrame, podemos usar o método drop().

Esse método retorna um novo DataFrame com as linhas ou colunas especificadas removidas.

Alguns dos parâmetros mais comuns do método drop() são:

index: rótulos das linhas a serem removidas.

columns: rótulos das colunas a serem removidas.

inplace: se True, modifica o DataFrame original; se False (default), retorna um novo DataFrame.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 32 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Removendo linhas e Colunas de um DataFrame

Removendo linhas:

print(df)

## Nome Idade Cidade


## A Ana 21 São Paulo
## B Bruno 20 Rio de Janeiro
## C Carla 22 Belo Horizonte

[Link](index=['B'], inplace=True) # Remove a linha com rótulo 'B' no DataFrame original


print(df)

## Nome Idade Cidade


## A Ana 21 São Paulo
## C Carla 22 Belo Horizonte

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 33 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Operadores

Pandas possui diversos operadores para realizar operações matemáticas e lógicas nas colunas dos
DataFrames.

Alguns dos operadores mais comuns são:

Aritméticos: +,+=, - -=, *,*=, etc.

Comparação: ==, !=, <, >, <=, >=

Lógicos: & (AND), | (OR), ~ (NOT)

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 34 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Operadores

Exemplo de uso do operador += para incrementar a idade de cada pessoa em 1 ano:

dados1 = [('Ana', 21,'F'), ('Bruno', 20,'M'), ('Carla', 22,'F'), ('Daniel', 18,'M')]


df1 = [Link](data = dados1, columns=['Nome', 'Idade','Sexo'])
print(df1)

## Nome Idade Sexo


## 0 Ana 21 F
## 1 Bruno 20 M
## 2 Carla 22 F
## 3 Daniel 18 M

df1['Idade'] += 1
print(df1)

## Nome Idade Sexo


## 0 Ana 22 F
## 1 Bruno 21 M
## 2 Carla 23 F
## 3 Daniel 19 M

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 35 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Operadores

Exemplo de como verificar as pessoas do sexo masculino (M)

print(df1)

## Nome Idade Sexo


## 0 Ana 22 F
## 1 Bruno 21 M
## 2 Carla 23 F
## 3 Daniel 19 M

resultado = list(df1['Sexo'] == 'M')


print(resultado)

## [False, True, False, True]

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 36 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Seleção de Dados em um DataFrame

A aplicação de operadores lógicos em colunas junto com o indexador .loc[] permite a seleção de
dados em um DataFrame de forma ágil.

Como vimos anteriormente, o resultado da aplicação de um operador lógico em uma coluna é uma
lista de valores booleanos (True/False).

Essa lista pode ser usada para selecionar linhas específicas de um DataFrame.

O indexador .loc[] permite selecionar linhas com base em uma lista booleana.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 37 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Seleção de Dados em um DataFrame

Exemplo de como selecionar pessoas do sexo masculino (M) usando o operador == e o indexador
.loc[]:

print(df1)

## Nome Idade Sexo


## 0 Ana 22 F
## 1 Bruno 21 M
## 2 Carla 23 F
## 3 Daniel 19 M

df_masculino = [Link][df1['Sexo'] == 'M']


print(df_masculino)

## Nome Idade Sexo


## 1 Bruno 21 M
## 3 Daniel 19 M

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 38 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Ordenando um DataFrame

Para ordenar um DataFrame, podemos usar o método sort_values().

Esse método retorna um novo DataFrame ordenado com base nos valores de uma ou mais colunas.

Alguns dos parâmetros mais comuns do método sort_values() são:

axis: define o eixo para ordenação (0 para linhas, 1 para colunas). Default é 0.
ascending: se True (default), ordena em ordem crescente; se False, ordena em ordem
decrescente.
kind: define o tipo de ordenação (ex: 'quicksort', 'mergesort', etc.). Default é 'quicksort'.
inplace: se True, modifica o DataFrame original; se False (default), retorna um novo DataFrame.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 39 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Ordenando um DataFrame

Exemplo de como ordenar um DataFrame pela coluna 'Idade' em ordem crescente:

print(df1)

## Nome Idade Sexo


## 0 Ana 22 F
## 1 Bruno 21 M
## 2 Carla 23 F
## 3 Daniel 19 M

df_ordenado = df1.sort_values(by='Idade')
print(df_ordenado)

## Nome Idade Sexo


## 3 Daniel 19 M
## 1 Bruno 21 M
## 0 Ana 22 F
## 2 Carla 23 F

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 40 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Ordenando um DataFrame

Exemplo de como ordenar um DataFrame pelos rótulos das linhas de forma decrescente:

print(df1)

## Nome Idade Sexo


## 0 Ana 22 F
## 1 Bruno 21 M
## 2 Carla 23 F
## 3 Daniel 19 M

df_ordenado = df1.sort_index(ascending=False)
print(df_ordenado)

## Nome Idade Sexo


## 3 Daniel 19 M
## 2 Carla 23 F
## 1 Bruno 21 M
## 0 Ana 22 F

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 41 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Métodos Estatísticos

Pandas possui diversos métodos estatísticos para realizar operações estatísticas nas colunas dos
DataFrames.
Alguns dos métodos estatísticos mais comuns são:
mean(): calcula a média dos valores.
median(): calcula a mediana dos valores.
std(): calcula o desvio padrão dos valores.
var(): calcula a variância dos valores.
min(): retorna o valor mínimo.
max(): retorna o valor máximo.
sum(): calcula a soma dos valores.
count(): conta o número de valores não nulos.
describe(): gera estatísticas descritivas resumidas.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 42 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Outros Métodos

Alguns outros métodos úteis para manipulação de DataFrames são:


head(n): retorna as primeiras n linhas do DataFrame.
tail(n): retorna as últimas n linhas do DataFrame.
info(): exibe um resumo conciso do DataFrame, incluindo o número de entradas, colunas, tipos
de dados e uso de memória.
value_counts(): conta a frequência de valores únicos em uma coluna.
isnull(): retorna um DataFrame booleano indicando a presença de valores nulos.
dropna(): remove linhas ou colunas com valores nulos.
fillna(value): preenche valores nulos com um valor especificado.
apply(func): aplica uma função ao longo de um eixo do DataFrame (linhas ou colunas).
groupby(by): agrupa o DataFrame por uma ou mais colunas e permite a aplicação de funções
agregadas.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 43 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Exemplo:

Vamos criar um DataFrame com dados fictícios de alunos e suas notas em diferentes disciplinas.

import pandas as pd
dados = {
'Nome': ['Ana', 'Bruno', 'Carla', 'Daniel', 'Eva'],
'Matemática': [85, 92, 78, 90, 88],
'Física': [80, 95, 82, 88, 91],
'Química': [78, 89, 85, 87, 90]
}
df = [Link](dados)
print(df)

## Nome Matemática Física Química


## 0 Ana 85 80 78
## 1 Bruno 92 95 89
## 2 Carla 78 82 85
## 3 Daniel 90 88 87
## 4 Eva 88 91 90

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 44 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Exemplo:

Agora, vamos calcular a média das notas em cada disciplina usando o método mean() e desvio
padrão usando o método std().

medias = list(df[['Matemática','Física','Química']].mean())
desviosp = list(df[['Matemática','Física','Química']].std())
print(medias)

## [86.6, 87.2, 85.8]

print(desviosp)

## [5.458937625582473, 6.220932405998316, 4.764451699828639]

mean_std = [Link]([medias, desviosp], columns=['Matemática','Física','Química'], index=['


print(mean_std)

## Matemática Física Química


## Média 86.600000 87.200000 85.800000
## Desvio Padrão 5.458938 6.220932 4.764452

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 45 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Operações com Matrizes

Pandas também permite realizar operações com matrizes, como soma, subtração, multiplicação e
divisão.
Essas operações podem ser realizadas entre DataFrames ou entre um DataFrame e um escalar.
As operações são realizadas elemento por elemento, ou seja, cada elemento do DataFrame é
operado com o elemento correspondente do outro DataFrame ou com o escalar.
Algumas das operações mais comuns são:
add(): soma dois DataFrames ou um DataFrame e um escalar.
sub(): subtrai dois DataFrames ou um DataFrame e um escalar.
mul(): multiplica dois DataFrames ou um DataFrame e um escalar.
div(): divide dois DataFrames ou um DataFrame e um escalar.
pow(): eleva os elementos de um DataFrame a uma potência especificada.
eq(): verifica a igualdade entre dois DataFrames ou entre um DataFrame e um escalar.
ne(): verifica a desigualdade entre dois DataFrames ou entre um DataFrame e um escalar.
dot(): realiza o produto escalar entre dois DataFrames.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 46 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Operações com Matrizes. Exemplo:

import pandas as pd
df1 = [Link]([ [19, 23, 34],
[15, 55, 60],
[7, 32, 15] ])
print(df1)

## 0 1 2
## 0 19 23 34
## 1 15 55 60
## 2 7 32 15

df2 = [Link]([ [2, 3, 4],


[5, 6, 7],
[8, 9, 10] ])
print(df2)

## 0 1 2
## 0 2 3 4
## 1 5 6 7
## 2 8 9 10

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 47 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Operações com Matrizes. Exemplo:

df3 = [Link](df2) # Soma df1 e df2


print(df3)

## 0 1 2
## 0 21 26 38
## 1 20 61 67
## 2 15 41 25

df4 = [Link](2) # Multiplica df1 por 2


print(df4)

## 0 1 2
## 0 38 46 68
## 1 30 110 120
## 2 14 64 30

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 48 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Transformação em Matriz NumPy

Para transformar um DataFrame em uma matriz NumPy, podemos usar o atributo to_numpy.
Esse atributo retorna os dados do DataFrame como uma matriz NumPy.

import pandas as pd
dados = [('Ana', 21), ('Bruno', 20), ('Carla', 22)]
df = [Link](data = dados, columns=['Nome', 'Idade'])
print(df)

## Nome Idade
## 0 Ana 21
## 1 Bruno 20
## 2 Carla 22

matriz = df.to_numpy()
print(matriz)

## [['Ana' 21]
## ['Bruno' 20]
## ['Carla' 22]]

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 49 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Transformação em Matriz NumPy

Exemplo de como transformar uma coluna específica de um DataFrame em uma matriz NumPy:

print([Link][:, 'Idade'].to_numpy())

## [21 20 22]

print([Link][:, 'Nome'].to_numpy())

## ['Ana' 'Bruno' 'Carla']

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 50 / 63
Importando e Exportando Dados com
Pandas
51 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Exportando Dados

Pandas permite exportar DataFrames para diversos formatos de arquivo, como CSV, Excel, JSON,
SQL, entre outros.
Alguns dos métodos mais comuns para exportar dados são:
to_csv(): exporta o DataFrame para um arquivo CSV.
to_excel(): exporta o DataFrame para um arquivo Excel.
to_json(): exporta o DataFrame para um arquivo JSON.
to_sql(): exporta o DataFrame para uma tabela em um banco de dados SQL.
Esses métodos possuem diversos parâmetros para personalizar a exportação, como o nome do
arquivo, o separador, se deve incluir o índice, entre outros.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 52 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Exportando Dados

Exemplo de como exportar um DataFrame para um arquivo CSV:

import pandas as pd
dados = [('Ana', 21), ('Bruno', 20), ('Carla', 22)]
df = [Link](data = dados, columns=['Nome', 'Idade'])
print(df)

## Nome Idade
## 0 Ana 21
## 1 Bruno 20
## 2 Carla 22

df.to_csv('[Link]', index=False) # Exporta o DataFrame para um arquivo CSV sem o índice

Aqui será criado um arquivo chamado [Link] no diretório atual.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 53 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Importando Dados

Pandas permite importar dados de diversos formatos de arquivo, como CSV, Excel, JSON, SQL, entre
outros.
Alguns dos métodos mais comuns para importar dados são:
read_csv(): importa dados de um arquivo CSV para um DataFrame.
read_excel(): importa dados de um arquivo Excel para um DataFrame.
read_json(): importa dados de um arquivo JSON para um DataFrame.
read_sql(): importa dados de uma tabela em um banco de dados SQL para um DataFrame.
Esses métodos possuem diversos parâmetros para personalizar a importação, como o nome do
arquivo, o separador, se deve incluir o índice, entre outros.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 54 / 63
Importando Dados

55 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Importando Dados

Exemplo de como importar um arquivo CSV para um DataFrame a partir de um site:

import pandas as pd
import ucimlrepo
from ucimlrepo import fetch_ucirepo
student_performance = fetch_ucirepo(id=320)

df = [Link]([student_performance.[Link], student_performance.[Link]], axis=1)

No laboratório utilize o reticulate e py_require('ucimlrepo') e py_install('ucimlrepo')


para instalar o pacote ucimlrepo.

Na sua máquina pessoal utilize pip install ucimlrepo no terminal.

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 56 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Trabalhando com os Dados Importados

Após importar os dados, podemos manipular e análisar os dados utilizando os métodos que vimos
anteriormente.

print([Link]()) # Mostra as primeiras 5 linhas do DataFrame

## school sex age address famsize Pstatus ... Walc health absences G1 G2 G3
## 0 GP F 18 U GT3 A ... 1 3 4 0 11 11
## 1 GP F 17 U GT3 T ... 1 3 2 9 11 11
## 2 GP F 15 U LE3 T ... 3 3 6 12 13 12
## 3 GP F 15 U GT3 T ... 1 5 0 14 14 14
## 4 GP F 16 U GT3 T ... 2 5 0 11 13 13
##
## [5 rows x 33 columns]

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 57 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Trabalhando com os Dados Importados

print([Link]()) # Mostra as últimas 5 linhas do DataFrame

## school sex age address famsize Pstatus ... Walc health absences G1 G2 G3
## 644 MS F 19 R GT3 T ... 2 5 4 10 11 10
## 645 MS F 18 U LE3 T ... 1 1 4 15 15 16
## 646 MS F 18 U GT3 T ... 1 5 6 11 12 9
## 647 MS M 17 U LE3 T ... 4 2 6 10 10 10
## 648 MS M 18 R LE3 T ... 4 5 4 10 11 11
##
## [5 rows x 33 columns]

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 58 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Trabalhando com os Dados Importados

Vamos selecionar uma das colunas do DataFrame e calcular a média e o desvio padrão dos valores
dessa coluna.

import pandas as pd
import [Link] as plt
[Link]()

## np.float64(16.7442218798151)

[Link]()

## np.float64(1.2181376394800656)

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 59 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Trabalhando com os Dados Importados

Vamos plotar um histograma da coluna selecionada.

import [Link] as plt


[Link](figsize=(4, 2)) # Altura e largura da figura
[Link]([Link], bins=10)
[Link]('Histograma da Idade dos Alunos')
[Link]('Idade')
[Link]('Frequência')
[Link]()

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 60 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Trabalhando com os Dados Importados

Vamos plotar um boxplot da coluna selecionada.

import [Link] as plt


[Link](figsize=(4, 2))
[Link]([Link], vert=False)

## {'whiskers': [<[Link].Line2D object at 0x00000159E0E801D0>, <[Link].Line2D obj

[Link]('Boxplot')
[Link]('Idade dos Alunos')
[Link]()

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 61 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Trabalhando com os Dados Importados

Vamos plotar um gráfico de dispersão entre duas colunas do DataFrame.

[Link](figsize=(5, 4)) # Altura e largura da figura


[Link]([Link], [Link])
[Link]('Gráfico de Dispersão: Idade vs Tempo de Estudo')
[Link]('Idade')
[Link]('Tempo de Estudo (horas por semana)')
[Link]()

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 62 / 63
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS

Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 63 / 63

Você também pode gostar