+ - 0:00:00
Notes for current slide
Notes for next slide





Introdução à análise de dados



Adriano Pereira, Felipe Carvalho & Felipe Menino

Julho 2021

1 / 58

Agenda



  • Introdução ao R

    • Tidyverse
  • Introdução ao Python

    • Pandas
  • Visualização de dados


2 / 58





Introdução ao Python

3 / 58

Introdução ao Python




Python é uma linguagem de programação multiparadigma, que através de uma sintaxe simples, permite a seus utilizadores focar na solução de problemas, não os impedindo com complexidades além do necessário.



4 / 58





Conceitos básicos da linguagem

5 / 58

Comandos básicos da linguagem

Declarações de variáveis

A declaração de variáveis no Python é feita com o sinal =

variavel = valor da variável

Os valores das variáveis podem ser de diferentes tipos:

inteiro = 123
flutuante = 1.1234
booleano = True
lista = [1, 2, 3, 4, 5]
dicionario = {'chave': 'valor'}
string = 'Um texto legal'

Manipulação de números (Inteiro e Float)

inteiro + 2 # 125
inteiro * 2 # 246
flutuante / 2 # 0.5617

Manipulação de listas

lista[0] # 1 (Primeiro valor)
lista[0:3] # Do valor `0` à `2`
lista[-1] # Último valor

Manipulação de dicionário (Chave-Valor)

dicionario['chave'] # 'valor'
6 / 58

Estrutura de controle de decisão

As estruturas de controle de decisão são utilizadas para determinar quais ações/códigos serão executados com base na verificação de testes lógicos.

if

if (2 > 1):
print("Dois é maior que um!")
## Dois é maior que um!

else

if (2 < 1):
print('Dois é menor que um')
else:
print('Dois é maior que um')
## Dois é maior que um


elif

if (1 > 1):
print('Um é maior que um')
elif(1 > 0.5):
print('Um é maior que meio')
## Um é maior que meio
7 / 58

Estrutura de repetição

Estruturas de repetição permitem que um determinado bloco de código seja executado por diversas vezes.

Iterando com testes lógicos (while)

i = 0
while i < 5:
print(i)
i += 1
## 0
## 1
## 2
## 3
## 4

Iterando em elementos (for-each)

Iterando em uma lista de valores:

for i in [11, 22]:
print(i)
# 1° Iteração (i = 11)
# 2° Iteração (i = 22)

Iterando em um intervalo de valores:

for i in range(0, 9, 3): # range(inicio, fim, passo)
print(i)
# 1° Iteração (i = 0)
# 2° Iteração (i = 3)
# 3° Iteração (i = 6)
8 / 58





Pandas 🐼

9 / 58

Pandas 🐼


Pandas é uma biblioteca para a linguagem de programação Python, que fornece recursos rápidos, poderosos, flexíveis e fáceis de usar para a manipulação e análise de dados.


Para importar a biblioteca, utilize:

import pandas as pd

Para instalar a biblioteca, utilize o comando pip install pandas

10 / 58

Pandas 🐼


Qual tipo de dado é possível manipular com Pandas ?


As funcionalidades do Pandas ajudam na exploração, limpeza e processamento de dados tabulares, como os armazenados em planilhas Excel, CSV ou bancos de dados tabulares.

11 / 58





Estruturas de dados 🎲

12 / 58

Estruturas de dados 🎲



Series

DataFrames
13 / 58

Estruturas de dados 🎲

Series são estruturas de dados unidimensionais que permitem o armazenamento de sequências de valores.

14 / 58

Estruturas de dados 🎲

Cada uma das linhas são associadas a nomes (ou índices), que podem ser utilizados para a busca e recuperação dos dados.

15 / 58

Estruturas de dados 🎲

Diferentes tipos de dados podem ser armazenados (e.g. Inteiro, String, Float) e utilizados para a criação dos índices de uma Series.

16 / 58

Estruturas de dados 🎲

Diferentes tipos de dados podem ser armazenados (e.g. Inteiro, String, Float) e utilizados para a criação dos índices de uma Series.

17 / 58

Estruturas de dados 🎲

Diferentes tipos de dados podem ser armazenados (e.g. Inteiro, String, Float) e utilizados para a criação dos índices de uma Series.

18 / 58

Estruturas de dados 🎲

Exemplos de manipulação das Series

Criando uma Series

series = pd.Series([1, 2])
print(series)
## 0 1
## 1 2
## dtype: int64

Series com índice

series = pd.Series([1, 2, 3],
index = [9, 'ultimo', 'tres'])
print(series)
## 9 1
## ultimo 2
## tres 3
## dtype: int64

Recuperando dados

Pode-se recuperar os dados com o operador []

serie[nome da linha]

Recuperação de uma linha única:

series[9]
## 1

Intervalos de valores também são permitidos:

series[9: 'tres']
## 9 1
## ultimo 2
## tres 3
## dtype: int64
19 / 58

Exemplo de utilização: Trajetória de uso e cobertura da Terra (LULC).

Trajetória: Variação temporal de classes de LULC de uma coleção de dados em uma determinada localização no espaço geográfico.

Criando a trajetória como uma Series

trajectory = pd.Series([
"Pastagem", "Pastagem",
"Outras Lavouras Temporárias",
"Soja", "Soja"
], index = [2014, 2015, 2016, 2017, 2018])
trajectory
## 2014 Pastagem
## 2015 Pastagem
## 2016 Outras Lavouras Temporárias
## 2017 Soja
## 2018 Soja
## dtype: object

Trajetória extraída da localização (-10.710, -55.612) com o serviço WLTS (Coleção MapBiomas 5).

Mais formas de acessar os dados

Recuperando os primeiros valores com head

trajectory.head(n = 2) # padrão (n = 5)
## 2014 Pastagem
## 2015 Pastagem
## dtype: object

Recuperando os últimos valores com tail

trajectory.tail(n = 2)
## 2017 Soja
## 2018 Soja
## dtype: object
20 / 58

Estruturas de dados 🎲

Questão: Como tratar os casos em que há mais colunas ?

21 / 58

Estruturas de dados 🎲

Questão: Como tratar os casos em que há mais colunas ?

22 / 58

Estruturas de dados 🎲

DataFrames são estruturas de dados bidimensionais, representando tabelas, formadas por conjuntos de Series. É a estrutura de dados principal do Pandas.

23 / 58

Estruturas de dados 🎲

Exemplo de manipulação dos DataFrames

Criando um DataFrame

df = pd.DataFrame([[1, 2, 3, 4], [11, 12, 13, 14]])
print(df)
## 0 1 2 3
## 0 1 2 3 4
## 1 11 12 13 14

DataFrame com índice

df = pd.DataFrame([[1, 2, 3, 4], [11, 12, 13, 14]],
index = ['um', 'dois'])
print(df)
## 0 1 2 3
## um 1 2 3 4
## dois 11 12 13 14

Índices e colunas

df = pd.DataFrame([[1, 2, 3, 4], [11, 12, 13, 14]],
index = ['um', 'dois'],
columns = ['a', 'b', 'c', 'd'])
print(df)
## a b c d
## um 1 2 3 4
## dois 11 12 13 14
24 / 58

Estruturas de dados 🎲

Exemplo de manipulação dos DataFrames

Recuperando dados

Como as Series, nos DataFrames a recuperação básica de dados ocorre com o operador [].

dataframe[nome da coluna]

DataFrame de exemplo

df = pd.DataFrame([[1, 2, 3, 4], [11, 12, 13, 14]],
index = ['um', 'dois'],
columns = ['a', 'b', 'c', 'd'])
print(df)
## a b c d
## um 1 2 3 4
## dois 11 12 13 14

Recuperando uma coluna

df['a'] # <class 'pandas.core.series.Series'>
## um 1
## dois 11
## Name: a, dtype: int64

Recuperando mais colunas

df[['a', 'b']] # <class 'pandas.core.frame.DataFrame'>
## a b
## um 1 2
## dois 11 12
25 / 58

Exemplo de utilização: Séries temporais de imagens de satélite (SITS)

SITS: Variação temporal de valores de bandas espectrais em uma determinada localização no espaço geográfico.

DataFrame com SITS de vários pontos

sits = pd.DataFrame({
"P1_NDVI": [0.578, 0.653, 0.691, 0.451], # Ponto 1
"P2_NDVI": [0.592, 0.617, 0.580, 0.578], # Ponto 2
"P3_NDVI": [0.574, 0.591, 0.570, 0.385] # Ponto 3
}, index = ["2017-01-01", "2017-01-17",
"2017-02-02", "2017-02-18"])
sits
## P1_NDVI P2_NDVI P3_NDVI
## 2017-01-01 0.578 0.592 0.574
## 2017-01-17 0.653 0.617 0.591
## 2017-02-02 0.691 0.580 0.570
## 2017-02-18 0.451 0.578 0.385

SITS extraídas com o serviço WTSS (Coverage CBERS-4/AWFI).

Visão geral dos dados com describe

sits.describe() # Informações estatísticas
## P1_NDVI P2_NDVI P3_NDVI
## count 4.000000 4.000000 4.000000
## mean 0.593250 0.591750 0.530000
## std 0.105819 0.017933 0.097094
## min 0.451000 0.578000 0.385000
## 25% 0.546250 0.579500 0.523750
## 50% 0.615500 0.586000 0.572000
## 75% 0.662500 0.598250 0.578250
## max 0.691000 0.617000 0.591000
26 / 58





Seleção e filtro de dados com Pandas

27 / 58

Seleção e filtro de dados com Pandas

Durante o processo de análise, faz-se necessário a realização de seleção e filtro dos dados para a captura de comportamentos específicos. O Pandas fornece diferentes métodos para essas operações.

28 / 58

Seleção e filtro de dados com Pandas

Durante o processo de análise, faz-se necessário a realização de seleção e filtro dos dados para a captura de comportamentos específicos. O Pandas fornece diferentes métodos para essas operações.

loc e iloc

Dentre os métodos disponíveis, tem-se o loc e o iloc que permitem a seleção e filtro de dados armazenados em Series e DataFrames.


Series DataFrames
.loc[Nome da linha] .loc[Nome da linha, Nome da coluna]
.iloc[Posição da linha] .iloc[posição da linha, posição da coluna]
28 / 58

Seleção e filtro de dados com Pandas

Exemplo de utilização do loc

DataFrame de exemplo

df = pd.DataFrame({
'nome': ['Joana', 'Maria', 'Josefa'],
'idade': [15, 18, 21],
'nota': [8, 9, 10]
}, index = [7, 8, 9])
df
## nome idade nota
## 7 Joana 15 8
## 8 Maria 18 9
## 9 Josefa 21 10

Selecionando dados pelo nome das linhas e colunas

Recuperando a linha de nome "9"

print(df.loc[9])
## nome Josefa
## idade 21
## nota 10
## Name: 9, dtype: object

Recuperando a linha de nome "9" e a coluna de nome "idade"

print(df.loc[9, 'idade'])
## 21
29 / 58

Seleção e filtro de dados com Pandas

Exemplo de utilização do iloc

DataFrame de exemplo

df = pd.DataFrame({
'nome': ['Joana', 'Maria', 'Josefa'],
'idade': [15, 18, 21],
'nota': [8, 9, 10]
}, index = [7, 8, 9])
df
## nome idade nota
## 7 Joana 15 8
## 8 Maria 18 9
## 9 Josefa 21 10

Selecionando dados pela posição das linhas e colunas

Recuperando a linha de posição "2"

print(df.iloc[2])
## nome Josefa
## idade 21
## nota 10
## Name: 9, dtype: object

Recuperando a linha de posição "2" e a coluna de posição "1"

print(df.iloc[2, 1])
## 21
30 / 58

Seleção e filtro de dados com Pandas

Comparação entre loc e iloc

DataFrame de exemplo

df = pd.DataFrame({
'nome': ['Joana', 'Maria', 'Josefa'],
'idade': [15, 18, 21],
'nota': [8, 9, 10]
}, index = [7, 8, 9])
df
## nome idade nota
## 7 Joana 15 8
## 8 Maria 18 9
## 9 Josefa 21 10

Selecionando dados pela posição e nome

Recuperando a linha de nome "9" com loc

print(df.loc[9])
## nome Josefa
## idade 21
## nota 10
## Name: 9, dtype: object

Recuperando a linha de posição "2" com iloc

print(df.iloc[2])
## nome Josefa
## idade 21
## nota 10
## Name: 9, dtype: object
31 / 58

Seleção e filtro de dados com Pandas

Comparação entre loc e iloc

DataFrame com SITS de vários pontos

print(sits)
## P1_NDVI P2_NDVI P3_NDVI
## 2017-01-01 0.578 0.592 0.574
## 2017-01-17 0.653 0.617 0.591
## 2017-02-02 0.691 0.580 0.570
## 2017-02-18 0.451 0.578 0.385

Selecionando dados com intervalos

Recuperando intervalo de nomes das linhas

print(sits.loc["2017-01-01":"2017-01-17", "P2_NDVI"])
## 2017-01-01 0.592
## 2017-01-17 0.617
## Name: P2_NDVI, dtype: float64

Recuperando intervalo de posições das linhas

print(sits.iloc[0:2, 1])
## 2017-01-01 0.592
## 2017-01-17 0.617
## Name: P2_NDVI, dtype: float64
32 / 58

Seleção e filtro de dados com Pandas

Filtro de dados

Indexação booleana

É possível fazer o filtro de dados com um índice booleano

df = pd.DataFrame({
'nome': ['A1', 'A2', 'A3', 'A4'],
'valor': [5, 12, 8, 30]
})
df
## nome valor
## 0 A1 5
## 1 A2 12
## 2 A3 8
## 3 A4 30

O filtro dos dados pode ser feito com loc e iloc

loc

df.loc[[False, True, False, True]]
## nome valor
## 1 A2 12
## 3 A4 30

iloc

df.iloc[[False, True, False, True]]
## nome valor
## 1 A2 12
## 3 A4 30
33 / 58

Seleção e filtro de dados com Pandas

Filtro de dados

Expressões booleanas

Testes lógicos podem ser adicionados no filtro para a geração das listas booleanas

dataframe.loc[(teste 1)]


Filtrando valores maiores que "5"

df.loc[df['valor'] > 5]
## nome valor
## 1 A2 12
## 2 A3 8
## 3 A4 30

A expressão retorna os valores booleanos do teste feito

df['valor'] > 5
## 0 False
## 1 True
## 2 True
## 3 True
## Name: valor, dtype: bool
34 / 58

Seleção e filtro de dados com Pandas

Filtro de dados

Expressões booleanas mais complexas

Mais testes lógicos podem ser adicionados ao filtro. Cada teste é separado por um operador lógico e parênteses.

dataframe.loc[(teste 1) operador (teste 2)]


Os operadores lógicos são:

  • e (&);
  • ou (|).

Filtrando valores maiores ou igual a 5 e menores que 12

df.loc[(df['valor'] >= 5) & (df['valor'] < 12)]
## nome valor
## 0 A1 5
## 2 A3 8

O método query pode ser mais amigável

df.query('valor >= 5 & valor < 12')
## nome valor
## 0 A1 5
## 2 A3 8
35 / 58





Agrupamento e agregação de dados

36 / 58

Agrupamento e agregação




Agrupar e agregar são técnicas que facilitam a análise de dados. Em etapas exploratórias, essas operações podem ser essenciais para a identificação e entendimento de padrões nos dados.

37 / 58

Agrupamento e agregação

Agregações são operações aplicadas sobre os dados que resultam em conjuntos de valores. Esses valores podem variar em seu tipo de acordo com a estrutura de dados em que é aplicado.



Algumas funções de agregação

  • sum();
  • max();
  • min();
  • mean().
38 / 58

Agrupamento e agregação

Agregação de dados

Series

s = pd.Series([1, 2, 3])

Calculando o somatório com sum

s.sum()
## 6

Valor mínimo com min

s.min()
## 1

DataFrames

df = pd.DataFrame([[1, 2, 3], [4, 5, 6]])

Calculando o valor médio com mean

df.mean()
## 0 2.5
## 1 3.5
## 2 4.5
## dtype: float64

Valor máximo com max.

df.max()
## 0 4
## 1 5
## 2 6
## dtype: int64
39 / 58

Agrupamento e agregação

Agrupamento de dados

Agrupando dados com groupby

É possível agrupar instâncias do conjunto de dados com base na igualdade de seus atributos.

df = pd.DataFrame({
'nome': ['Tel1', 'Tel2', 'Tel3'],
'tipo': ['antigo', 'novo', 'novo']
})
df
## nome tipo
## 0 Tel1 antigo
## 1 Tel2 novo
## 2 Tel3 novo

Agrupando pela coluna/atributo tipo

telefones_agrupados = df.groupby('tipo')


Recuperando os grupos gerados

telefones_agrupados.groups
## {'antigo': [0], 'novo': [1, 2]}
40 / 58





Agrupamento + Agregação =

41 / 58

Agrupamento + Agregação


42 / 58

Exemplo de utilização: Agrupando clientes.

Definindo conjunto de dados sintético

df = pd.DataFrame({
'nome': ['ana', 'maria', 'felipe', 'joão'],
'idade': [19, 19, 20, 20],
'dinheiro': [150, 150, 100, 100]
})
df
## nome idade dinheiro
## 0 ana 19 150
## 1 maria 19 150
## 2 felipe 20 100
## 3 joão 20 100

Agrupando pela idade

agrupado = df.groupby('idade')

Agregando com count (Contando elementos)

print(agrupado.count())
## nome dinheiro
## idade
## 19 2 2
## 20 2 2

Agregando com mean (Média salarial por idade)

agrupado['dinheiro'].mean()
## idade
## 19 150
## 20 100
## Name: dinheiro, dtype: int64
43 / 58





Leitura e escrita de dados

44 / 58

Leitura e escrita de dados

Além das estruturas de dados e funcionalidades para a manipulação e processamento dos dados, o Pandas fornece ainda um conjunto de opções para a leitura e escrita de dados.


Lista de formatos e operações de leitura/escrita do Pandas

45 / 58

Exemplo de utilização: Leitura de dados CSV.

Lendo e escrevendo dados CSV

data = pd.read_csv("data/titanic.csv", sep = ',')
data.head(n = 3)
## PassengerId Pclass Name ... Fare Cabin Embarked
## 0 892 3 Kelly, Mr. James ... 7.8292 NaN Q
## 1 893 3 Wilkes, Mrs. James (Ellen Needs) ... 7.0000 NaN S
## 2 894 2 Myles, Mr. Thomas Francis ... 9.6875 NaN Q
##
## [3 rows x 11 columns]

Os dados carregados são representados por Series e DataFrames.

type(data)
## "<class 'pandas.core.frame.DataFrame'>"

Verificando a quantidade de dados carregados com shape

data.shape # (linhas, colunas)
## (418, 11)


Escrevendo os dados em um arquivo CSV

data.to_csv('data/resultados.csv')
46 / 58




Exemplo de análise de dados

47 / 58

Exemplo de análise: Características de meteoritos.

Exemplo de análise de dados utilizando o conjunto de dados Meteorite Landings, disponibilizado no Kaggle pela NASA. O conjunto de dados é composto por mais de 45 mil registros, contendo diferentes informações sobre meteoritos que cairam na Terra.

Carregando os dados

import pandas as pd
data = pd.read_csv("data/meteorite-landings.csv")
type(data)
## "<class 'pandas.core.frame.DataFrame'>"

Verificando os atributos dos dados.

data.columns
## Index(['name', 'id', 'nametype', 'recclass', 'mass', 'fall', 'year', 'reclat',
## 'reclong', 'GeoLocation'],
## dtype='object')

Separando os dados por tipo de meteorito

df_valid = data.loc[data['nametype'] == 'Valid']
df_relict = data.loc[data['nametype'] == 'Relict']


Verificando as quantidades de cada tipo

print(df_valid.shape)
## (45641, 10)
print(df_relict.shape)
## (75, 10)
48 / 58

Exemplo de utilização: Características de meteoritos.

Verificando a massa média de cada tipo de meteorito

df_groupby_nametype = data.groupby('nametype')
df_groupby_nametype['mass'].mean()
## nametype
## Relict 0.121269
## Valid 13285.656127
## Name: mass, dtype: float64

Contando meteoritos por classe

df_groupedby_recclass = data.groupby('recclass')
df_groupedby_recclass['recclass'].count().head(n = 3)
## recclass
## Acapulcoite 54
## Acapulcoite/Lodranite 6
## Acapulcoite/lodranite 3
## Name: recclass, dtype: int64

Filtrando os dados pela quantidade de mass (Gramas)

df_gt_mass_500 = data.loc[data['mass'] > 500]
df_gt_mass_500.shape
## (7036, 10)


Salvando os dados filtrados

df_gt_mass_500.to_csv('data/meteorite_gt_500_mass.csv')
49 / 58



Visualização de dados

50 / 58

Pacotes de visualização

As bibliotecas de visualização de dados ggplot2 e plotnine são baseadas na obra The Grammar of Graphics, a qual apresenta uma grámatica para elaboração de gráficos. Tal gramática é composta por camadas, as quais descrevem os componentes do gráfico.

Camadas de componentes gráficos

51 / 58

Pacotes de visualização

As bibliotecas de visualização de dados ggplot2 e plotnine são baseadas na obra The Grammar of Graphics, a qual apresenta uma grámatica para elaboração de gráficos. Tal gramática é composta por camadas, as quais descrevem os componentes do gráfico.

Camadas de componentes gráficos

Sintaxe do ggplot/plotnine

ggplot(data = <DATA>, aes(<MAPPINGS>)) +
<GEOM_FUNCTION>(
mapping = aes(<MAPPINGS>),
stat = <STAT>,
position = <POSITION>) +
<COORDINATE_FUNCTION> +
<FACET_FUNCTION>
51 / 58

Mapeamento estético

A estética descreve cada aspecto de um dado elemento gráfico. Descrevemos as posições (position) por um valor x e y, mas outros sistemas de coordenadas são possíveis. É possível alterar a forma (shape), tamanho (size) e cor (size) dos elementos.

Fundamentals of Data Visualization - Claus O. Wilke

52 / 58

Objetos geométricos

Fundamentals of Data Visualization - Claus O. Wilke

53 / 58

Exemplo de visualização: Biblioteca plotnine

Visualizando dados com plotnine

from plotnine import * # funções
from plotnine.data import mtcars # dados de exemplo
print(mtcars.head(n = 3))
## name mpg cyl disp hp drat wt qsec vs am gear carb
## 0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## 1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## 2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1

Colunas do conjunto de dados

mtcars.columns
## Index(['name', 'mpg', 'cyl', 'disp', 'hp', 'drat', 'wt', 'qsec', 'vs', 'am',
## 'gear', 'carb'],
## dtype='object')
54 / 58

Exemplo de visualização: Biblioteca plotnine

Visualizando dados com plotnine

from plotnine import * # funções
from plotnine.data import mtcars # dados de exemplo
print(mtcars.head(n = 3))
## name mpg cyl disp hp drat wt qsec vs am gear carb
## 0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## 1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## 2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1

Colunas do conjunto de dados

mtcars.columns
## Index(['name', 'mpg', 'cyl', 'disp', 'hp', 'drat', 'wt', 'qsec', 'vs', 'am',
## 'gear', 'carb'],
## dtype='object')

Definindo os dados do plot

ggplot(mtcars)

54 / 58

Exemplo de visualização: Biblioteca plotnine

Visualizando dados com plotnine

from plotnine import * # funções
from plotnine.data import mtcars # dados de exemplo
print(mtcars.head(n = 3))
## name mpg cyl disp hp drat wt qsec vs am gear carb
## 0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## 1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## 2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1

Colunas do conjunto de dados

mtcars.columns
## Index(['name', 'mpg', 'cyl', 'disp', 'hp', 'drat', 'wt', 'qsec', 'vs', 'am',
## 'gear', 'carb'],
## dtype='object')

Mapeamento estético

ggplot(mtcars, aes(x = 'mpg', y = 'disp'))

55 / 58

Exemplo de visualização: Biblioteca plotnine

Visualizando dados com plotnine

from plotnine import * # funções
from plotnine.data import mtcars # dados de exemplo
print(mtcars.head(n = 3))
## name mpg cyl disp hp drat wt qsec vs am gear carb
## 0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## 1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## 2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1

Colunas do conjunto de dados

mtcars.columns
## Index(['name', 'mpg', 'cyl', 'disp', 'hp', 'drat', 'wt', 'qsec', 'vs', 'am',
## 'gear', 'carb'],
## dtype='object')

Adição de objeto geométrico

(
ggplot(mtcars, aes(x = 'mpg', y = 'disp'))
+ geom_point()
)

56 / 58

Exemplo de visualização: Biblioteca plotnine

Cores no objeto geométrico

(
ggplot(mtcars, aes(x = 'mpg', y = 'disp', color = 'factor(cyl)'))
+ geom_point()
)

Adicionando outros objetos geométricos

(
ggplot(mtcars, aes(x = 'mpg', y = 'disp', color = 'factor(cyl)'))
+ geom_point() + geom_line()
)

57 / 58





Hands-on

58 / 58

Agenda



  • Introdução ao R

    • Tidyverse
  • Introdução ao Python

    • Pandas
  • Visualização de dados


2 / 58
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow