Buscar

Introdução ao Python 3.6 II

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introdução ao Python 3.6
March 11, 2018
1 Aula de introdução ao Python 3.6.1 II
1.1 Numpy
Numpy é um biblioteca do Python que nos permite trabalhar com vetores, matrizes e tensores
de forma geral (arrays) de forma mais eficiente que as ferramentas nativas da linguagem que usa
listas.
In [15]: #importando biblioteca
import numpy as np
Criando um array usando a biblioteca Numpy
In [16]: #Criando lista e a convertendo para o formato "Numpy array"
x=np.array([1,2])
print(x)
type(x)
[1 2]
Out[16]: numpy.ndarray
Quando trabalhamos com vetores e matrizes no Python com funções nativas, usamos o con-
ceito de listas e isso significa que o processo por trás é diferente do caso em usamos o conceito de
array do pacote Numpy, por exemplo. Geralmente, quando optamos por trabalhar com arrays ao
invés de listas, os processos ficam mais rápidos:
In [17]: #comparando
lista =[1,2,3,4,5,6,7,8,9]
array=np.arange(10) # função arange(Limite_inferior,Limite_Superior,passo),
# funciona iqual o range normal do python
print("Lista: ",lista)
#tempo de execução do comando
quadradoL=None
%timeit quadradoL = [el**2 for el in lista] #elevar todos elementos ao quadrado
1
Lista: [1, 2, 3, 4, 5, 6, 7, 8, 9]
3.86 µs ± 117 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
In [18]: print("Array: ",array)
#tempo de execução do comando
quadradoA=None
%timeit quadradoA = array**2 #elevar todos elementos ao quadrado
Array: [0 1 2 3 4 5 6 7 8 9]
776 ns ± 45.2 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
A diferença pode parecer pequena, mas quando passamos a trabalhar com processos mais
complexos, essa diferença passa a crescer exponencialmente. Por conta comodidade (tempo de
execução e funções) de se trabalhar com o pacote Numpy, vamos usá-lo daqui para frente. Agora
iremos conhecer alguns métodos do pacote para podermos utilizá-lo da melhor maneira.
Primeiramente, vamos aprender a inicializar um array de diversas maneiras com as funções do
Numpy:
In [22]: #inicializando um array
#array unidimencional (vetor)
arrayU=np.array([1,2,3])
print("Array unidimencional: ")
print(arrayU,'\n')
#array bidimencional(matriz)
arrayB=np.array([[1,2,3],[4,5,6],[7,8,9]])
print("Array Bidimencional(matriz): ")
print(arrayB,'\n')
Array unidimencional:
[1 2 3]
Array Bidimencional(matriz):
[[1 2 3]
[4 5 6]
[7 8 9]]
Podemos criar arrays apenas com zeros com o método np.zeros(). Mo argumento do método
colocamos o formato que o array assumirá:
In [23]: #podemos criar um array apenas com zeros
arrayZeros = np.zeros(3)
print("Array de zeros: ",arrayZeros)
#Automaticamente, a função faz com que os números sejam do tipo float
type(arrayZeros[0])
2
Array de zeros: [ 0. 0. 0.]
Out[23]: numpy.float64
In [24]: #basta fazer o seguinte para mudar o tipo da variável
arrayZeros = np.zeros(3,dtype=int)
print("Array de zeros Inteiros: ",arrayZeros)
Array de zeros Inteiros: [0 0 0]
Podemos criar também arrays de números 1 com o método np.ones() e arrays vazios com o
método np.empty():
In [25]: #Array de 1s
arrayOne = np.ones([3,2])
print("array de 1: ")
print(arrayOne)
array de 1:
[[ 1. 1.]
[ 1. 1.]
[ 1. 1.]]
In [26]: #Array vazio
arrayEmpty= np.empty(3) #inicializa com o endereço de memória da variável
print("array vazio: ")
print(arrayEmpty)
array vazio:
[ 0. 0. 0.]
Podemos criar uma matriz identidade facilmente com np.identity() ou np.eye():
In [27]: #Matriz identidade
MatrizIdentidade = np.eye(2) # argumento vai quantidade de 1 que queremos
print(MatrizIdentidade)
[[ 1. 0.]
[ 0. 1.]]
Podemos também criar uma matriz diagonal com o método np.diag:
In [28]: MatrizDiag= np.diag([1,2,3,4])
print("Matriz Diagonal:")
print(MatrizDiag)
3
Matriz Diagonal:
[[1 0 0 0]
[0 2 0 0]
[0 0 3 0]
[0 0 0 4]]
Outro comando interessante é o np.linspace(). Com ele nós podemos definir pontos de corte
equidistantes em um intervalo númerica, podendo escolher em quantas vezes queremos dividí-lo.
O Numpy retorna um array com os pontos de corte:
In [29]: #criando intervalo (dividino [0,1] em 5 pontos)
arrayIntervalo = np.linspace(0,1,5)
print("Array Intervalo: ",arrayIntervalo)
Array Intervalo: [ 0. 0.25 0.5 0.75 1. ]
Podemos também modificar um array já criado mudando seu formato (shape) como for
necessário. Usar método np.shape():
In [30]: #criando um array normal
arrayShape = np.array([1,2,3,4])
print("Array com formato inicial: ",arrayShape)
print("Dimensões do array: ",arrayShape.shape)
Array com formato inicial: [1 2 3 4]
Dimensões do array: (4,)
In [31]: #modificando
arrayShape.shape =(2,2)
print("Array modificado: ")
print(arrayShape)
print("Dimensões do array: ",arrayShape.shape)
Array modificado:
[[1 2]
[3 4]]
Dimensões do array: (2, 2)
In [32]: #modificando
arrayShape.shape =(4,1)
print("Array modificado: ")
print(arrayShape)
print("Dimensões do array: ",arrayShape.shape)
4
Array modificado:
[[1]
[2]
[3]
[4]]
Dimensões do array: (4, 1)
É possível também realizar cortes de diversas maneiras no array unidimensional. Agora estu-
daremos como fazer isso:
In [33]: #vamos criar array
arrayCortes = np.arange(1,10)
#podemos printar o array inteiro com [:]
print("Array inicial: ",arrayCortes[:])
#podemos printar o array ao contrário com [::-1]
print("Array ao contrario: ",arrayCortes[::-1])
#podemos cortar do meio pra frente
print("Array do meio pra frente: ",arrayCortes[5:])
#podemos criar um espaço pra cortar e o intervalo de cada corte
print("Array cortado compassado ",arrayCortes[2:7:2]) # no espaço entre os index 2 e 7,
#pega de 2 em 2 números
Array inicial: [1 2 3 4 5 6 7 8 9]
Array ao contrario: [9 8 7 6 5 4 3 2 1]
Array do meio pra frente: [6 7 8 9]
Array cortado compassado [3 5 7]
O mesmo vale para matrizes:
In [34]: #criando matriz bidimencional
arrayCortes.shape= (3,3)
print("Matriz inicial: ")
print(arrayCortes)
Matriz inicial:
[[1 2 3]
[4 5 6]
[7 8 9]]
In [35]: #podemos imprimir só uma coluna específica
print("Matriz Coluna: ")
print(arrayCortes[:,1])
5
Matriz Coluna:
[2 5 8]
In [36]: #ou uma linha específica
print("Matriz Linha: ")
print(arrayCortes[1,:])
Matriz Linha:
[4 5 6]
In [37]: #até mesmo um pedaço da matriz
print("Matriz pedaço: ")
print(arrayCortes[1:,1:])
Matriz pedaço:
[[5 6]
[8 9]]
Podemos usar esses comandos para substituir valores em um array com mais facilidade:
In [38]: #mudando valores da matriz
arrayCortes[1:,1:]=99
print("Matriz Novos valores: ")
print(arrayCortes)
Matriz Novos valores:
[[ 1 2 3]
[ 4 99 99]
[ 7 99 99]]
Agora vamos ver alguns métodos matemáticos do Numpy:
In [39]: #Criando array
A = np.arange(9,0,-1)
print("Array Inicial: ",A)
Array Inicial: [9 8 7 6 5 4 3 2 1]
In [40]: #Ordenando o array
A.sort()
print("Array ordenado: ",A)
Array ordenado: [1 2 3 4 5 6 7 8 9]
6
In [41]: #Soma elementos do array
print("Array somado: ",A.sum())
Array somado: 45
In [42]: #Média dos elementos do array
print("Array somado: ",A.mean())
Array somado: 5.0
In [43]: #Maior elemento
print("Array maior elemento: ",A.max())
Array maior elemento: 9
In [44]: #Variância
print("Variância: ",A.var())
Variância: 6.66666666667
In [45]: #Desvio Padrão
print("Desvio Padrão: ",A.std())
Desvio Padrão: 2.58198889747
In [46]: #Transposta de um matriz
A.shape =(3,3)
print("Transposta: ")
print(A.T)
Transposta:
[[1 4 7]
[2 5 8]
[3 6 9]]
In [47]: #Determinante
print("Determinante: ")
print(np.linalg.det(A) )
Determinante:
-9.51619735393e-16
In [48]: #Matriz Inversa
print("Inversa: ")
print(np.linalg.inv(A))
7
Inversa:
[[ 3.15251974e+15 -6.30503948e+15 3.15251974e+15]
[ -6.30503948e+15 1.26100790e+16 -6.30503948e+15]
[ 3.15251974e+15 -6.30503948e+15 3.15251974e+15]]
Podemos realizar operações algébricas demaneira muito simples:
In [49]: #Aamos criar arrays
a = np.array([1,2,3,4])
b=np.array([5,6,7,8])
print("Array A: ",a)
print("Array B: ",b)
#Soma
print("Array A - soma: ",a+10)
#Multiplicação
print("Array B - multiplicação: ",b*10)
#Inclusive entre eles
print("Divisao Array A pelo B: ",a/b) #elemento por elemento
Array A: [1 2 3 4]
Array B: [5 6 7 8]
Array A - soma: [11 12 13 14]
Array B - multiplicação: [50 60 70 80]
Divisao Array A pelo B: [ 0.2 0.33333333 0.42857143 0.5 ]
Com matrizes (array bidimencional) é a mesma coisa, com exceção da multiplicação - a vere-
mos agora. Primeiramente, lembremos que para multiplicar duas matrizes (A e B) o número de
colunas da matriz A tem que ser iqual ao número de linhas da Coluna B:
In [52]: A = np.array([1,2,3,4])
B=np.array([5,6,7,8])
A.shape=(2,2)
B.shape=(2,2)
print("Matriz A: ")
print(A, "\n")
print("Matriz B: ")
print(B, "\n")
#Matriz A X B
print("Matriz A X B : ")
8
print(A @ B, "\n")
#Array X matriz
print("Array [2,3] x A : ")
print( [2,3] @ A)
#Na aula de Álgebra Linear apresentaremos outra maneira de se realizar
#a multiplicação de matrizes.
Matriz A:
[[1 2]
[3 4]]
Matriz B:
[[5 6]
[7 8]]
Matriz A X B :
[[19 22]
[43 50]]
Array [2,3] x A :
[11 16]
Podemos copiar um array com a função np.copyto():
In [53]: #Criando array original
Original = np.array ([1,2,3])
print( "Array Original: ",Original)
#Fazendo copiar
Copia = np.empty_like(Original) # cria array vazio na mesma forma do Original
np.copyto(Copia,Original)
print( "Array Copia: ", Copia)
Array Original: [1 2 3]
Array Copia: [1 2 3]
Também podemos realizar comparações entre elementos dos arrays:
In [54]: a = np.array([1,2,3,4])
b=np.array([5,2,7,8])
print("Array A: ",a)
print("Array B: ",b)
9
#entre os proprios array
print("Comparação entre A e B: ", a==b)
# do array entre algum numero
print("Elemento do array B > 6: ",b>6 )
Array A: [1 2 3 4]
Array B: [5 2 7 8]
Comparação entre A e B: [False True False False]
Elemento do array B > 6: [False False True True]
2 Exercícios
1- Refaça alguns exercícios feito anteriormente com lista usando o Numpy e compare o tempo de
execução.
2- Crie uma array com 9 entradas, transforme-o em uma matriz 3x3 e faça os exercícios abaixo
com ela.
3- Faça a Multiplicação de uma matriz 3x3 sem utilizar a função de multiplicações de matrizes
da Numpy.
4- Faça a transposta de uma matriz sem utilizar a função de transposta da Numpy.
5- Ache a inversa de uma Matriz 3x3 sem utilizar a função da inversa da Numpy.
3 Pandas
Conheceremos agora uma das bibliotecas mais importantes e mais usadas para fazer a análise de
dados no Python - o Pandas. O Pandas oferece diversas funções que facilitam a manipulação e
visualização dos dados.
In [55]: #Importando a biblioteca
import pandas as pd
Como dito anteriormente, o Pandas facilita a visualização de dados por causa da estrutura que
ele é capaz de comportar as bases de daods - essa estrutura é chamada de DataFrame. Vamos criar
um dicionário e depois transformá-lo em DataFrame para vermos sua estrutura:
In [56]: dicionario = {"País": ["Brasil", "Rússia", "Índia", "China", "África do Sul"],
"Capital": ["Brasília", "Moscou", "Nova Deli", "Pequim", "Pretória"],
"Área": [8.516, 17.10, 3.286, 9.597, 1.221],
"População": [200.4, 143.5, 1252, 1357, 52.9]}
Brics = pd.DataFrame(dicionario)
print(Brics)
Capital País População Área
0 Brasília Brasil 200.4 8.516
1 Moscou Rússia 143.5 17.100
2 Nova Deli Índia 1252.0 3.286
10
3 Pequim China 1357.0 9.597
4 Pretória África do Sul 52.9 1.221
Devido a um bug do Pandas, ele pode mudar a ordem das colunas. Vamos consertar isso agora:
In [57]: Brics = Brics[['País','Capital','Área','População']]
print(Brics)
País Capital Área População
0 Brasil Brasília 8.516 200.4
1 Rússia Moscou 17.100 143.5
2 Índia Nova Deli 3.286 1252.0
3 China Pequim 9.597 1357.0
4 África do Sul Pretória 1.221 52.9
Podemos ver que temos uma estrutura feita em tabela, o que torna a visualização dos dados
muito mais fácil. Agora vamos supor que usaremos uma base de dados grande. Nesse caso,
não podemos colocar toda base de dados no próprio código usando um dicionário, então usamos
um arquivo externo do tipo .csv. Os arquivos csv são arquivos com informações separadas por
vírgulas dispostas em colunas. A biblioteca Pandas entende automaticamente esses dados e os
converte em Data Frame.
. . .
Formato de um .csv:
descrição1,descrição2,. . . ,descriçãoN
dado da descrição1, dado da descrição2,. . . ,dado da descriçãoN
dado da descrição1, dado da descrição2,. . . ,dado da descriçãoN
dado da descrição1, dado da descrição2,. . . ,dado da descriçãoN
Exemplo:
País,Capital,Área,População
Brasil,Brasília,8.516,200.4
Rússia,Moscou,143.5,17.100
. . .
Podemos criar um arquivo .csv de diversar maneiras e as mais fáceis são editar um bloco de
notas e salvá-lo como .csv ou podemos ir no Google Planilhas/Excel e colocar cada dado em uma
coluna e na hora de baixar ou salvar, escolher a opção “csv separado por vírgulas”. No entanto,
geralmente trabalharemos com arquivos csv já prontos, criados por terceiros. Por favor baixe o
arquivo “Pokemon.csv” da nossa pasta para trabalharmos agora:
In [58]: #Abrindo dataset
dataset = pd.read_csv("Pokemon.csv") #Colocamos o caminho do arquivo entre (),
#caso já esteja na pasta do Jupyter Notebook.
#Vamos dar um display no nosso dataset
dataset.head()
Out[58]: # Nome Tipo_1 Tipo_2 Total HP Ataque Defesa Vel.Ataque \
0 1 Bulbasaur Grama Veneno 318 45 49 49 65
11
1 2 Ivysaur Grama Veneno 405 60 62 63 80
2 3 Venusaur Grama Veneno 525 80 82 83 100
3 4 Charmander Fogo NaN 309 39 52 43 60
4 5 Charmeleon Fogo NaN 405 58 64 58 80
Sp.Def Velocidade Geração Lendario
0 65 45 1 False
1 80 60 1 False
2 100 80 1 False
3 50 65 1 False
4 65 80 1 False
O metodo .head() mostra apenas as 5 primeiras observações de nosso dataset. Para vermos
todos os nomes de variáveis, usamos o comando .columns. Ademais, podemos contar as linhas e
colunas de nosso dataset com o metodo .count():
In [59]: #Variáveis
dataset.columns
Out[59]: Index(['#', 'Nome', 'Tipo_1', 'Tipo_2', 'Total', 'HP', 'Ataque', 'Defesa',
'Vel.Ataque', 'Sp.Def', 'Velocidade', 'Geração', 'Lendario'],
dtype='object')
In [60]: #contando dados diferentes de vazio por variável
dataset.count()
Out[60]: # 9
Nome 9
Tipo_1 9
Tipo_2 4
Total 9
HP 9
Ataque 9
Defesa 9
Vel.Ataque 9
Sp.Def 9
Velocidade 9
Geração 9
Lendario 9
dtype: int64
Observamos que existem dois contadores no canto esquerdo e isso ocorre pois o dataset usado
já contém um contador e o Pandas gera outro automaticamente. Para tiramos o contador do
Pandas basta fazer o seguinte:
In [61]: #Basta adicionar index_col =0 na hora de pegar o csv
dataset = pd.read_csv("Pokemon.csv",index_col =0)
dataset.tail(3) #mostra os ultimos itens do csv
12
Out[61]: Nome Tipo_1 Tipo_2 Total HP Ataque Defesa Vel.Ataque Sp.Def \
#
7 Squirtle Agua NaN 314 44 48 65 50 64
8 Wartortle Agua NaN 405 59 63 80 65 80
9 Blastoise Agua NaN 530 79 83 100 85 105
Velocidade Geração Lendario
#
7 43 1 False
8 58 1 False
9 78 1 False
Podemos também fazer os cortes que desejarmos no csv:
In [62]: #Dando display em um intervalo do dataset
dataset[3:6]
Out[62]: Nome Tipo_1 Tipo_2 Total HP Ataque Defesa Vel.Ataque Sp.Def \
#
4 Charmander Fogo NaN 309 39 52 43 60 50
5 Charmeleon Fogo NaN 405 58 64 58 80 65
6 Charizard Fogo Voador 534 78 84 78 109 85
Velocidade Geração Lendario
#
4 65 1 False
5 80 1 False
6 100 1 False
Podemos também escolher determinadas colunas (variáveis) da seguinte forma:
In [63]: dataset['Nome']
Out[63]: #
1 Bulbasaur
2 Ivysaur
3 Venusaur
4 Charmander
5 Charmeleon
6 Charizard
7 Squirtle
8 Wartortle
9 Blastoise
Name: Nome, dtype: object
In [64]: #Também é possívelagrupar as colunas pelo método value_counts()
pd.value_counts(dataset["Tipo_1"])
13
Out[64]: Grama 3
Agua 3
Fogo 3
Name: Tipo_1, dtype: int64
In [65]: #A função "loc" mostra os dados da linha desejada
dataset.loc[dataset['Nome'] == 'Charmander']
Out[65]: Nome Tipo_1 Tipo_2 Total HP Ataque Defesa Vel.Ataque Sp.Def \
#
4 Charmander Fogo NaN 309 39 52 43 60 50
Velocidade Geração Lendario
#
4 65 1 False
In [66]: #Podemos também fazer isso para selecionar subconjuntos específicos do dataset
dataset.loc[dataset['Ataque'] > 50]
Out[66]: Nome Tipo_1 Tipo_2 Total HP Ataque Defesa Vel.Ataque Sp.Def \
#
2 Ivysaur Grama Veneno 405 60 62 63 80 80
3 Venusaur Grama Veneno 525 80 82 83 100 100
4 Charmander Fogo NaN 309 39 52 43 60 50
5 Charmeleon Fogo NaN 405 58 64 58 80 65
6 Charizard Fogo Voador 534 78 84 78 109 85
8 Wartortle Agua NaN 405 59 63 80 65 80
9 Blastoise Agua NaN 530 79 83 100 85 105
Velocidade Geração Lendario
#
2 60 1 False
3 80 1 False
4 65 1 False
5 80 1 False
6 100 1 False
8 58 1 False
9 78 1 False
Podemos ordenar os dados de acordo com valores de uma variável com o método
“.sort_values”:
In [67]: dataset.sort_values(by='Ataque') #Para inverter a ordem,
#basta adicionar no argumento ascending=False
Out[67]: Nome Tipo_1 Tipo_2 Total HP Ataque Defesa Vel.Ataque Sp.Def \
#
7 Squirtle Agua NaN 314 44 48 65 50 64
1 Bulbasaur Grama Veneno 318 45 49 49 65 65
14
4 Charmander Fogo NaN 309 39 52 43 60 50
2 Ivysaur Grama Veneno 405 60 62 63 80 80
8 Wartortle Agua NaN 405 59 63 80 65 80
5 Charmeleon Fogo NaN 405 58 64 58 80 65
3 Venusaur Grama Veneno 525 80 82 83 100 100
9 Blastoise Agua NaN 530 79 83 100 85 105
6 Charizard Fogo Voador 534 78 84 78 109 85
Velocidade Geração Lendario
#
7 43 1 False
1 45 1 False
4 65 1 False
2 60 1 False
8 58 1 False
5 80 1 False
3 80 1 False
9 78 1 False
6 100 1 False
Um outro método muito importante é o .describe(). O método faz uma análise descritiva básica
da base de dados com as principais estatísticas:
In [68]: dataset.describe()
Out[68]: Total HP Ataque Defesa Vel.Ataque Sp.Def \
count 9.000000 9.000000 9.000000 9.000000 9.000000 9.000000
mean 416.111111 60.222222 65.222222 68.777778 77.111111 77.111111
std 93.955368 15.857000 14.584048 18.053932 19.173187 17.961378
min 309.000000 39.000000 48.000000 43.000000 50.000000 50.000000
25% 318.000000 45.000000 52.000000 58.000000 65.000000 65.000000
50% 405.000000 59.000000 63.000000 65.000000 80.000000 80.000000
75% 525.000000 78.000000 82.000000 80.000000 85.000000 85.000000
max 534.000000 80.000000 84.000000 100.000000 109.000000 105.000000
Velocidade Geração
count 9.000000 9.0
mean 67.666667 1.0
std 18.500000 0.0
min 43.000000 1.0
25% 58.000000 1.0
50% 65.000000 1.0
75% 80.000000 1.0
max 100.000000 1.0
In [69]: #Também é possível focar em uma estatística por vez
dataset.mean()
Out[69]: Total 416.111111
HP 60.222222
15
Ataque 65.222222
Defesa 68.777778
Vel.Ataque 77.111111
Sp.Def 77.111111
Velocidade 67.666667
Geração 1.000000
Lendario 0.000000
dtype: float64
In [70]: #É possível também focar em uma só coluna (variável):
dataset["Defesa"].describe()
Out[70]: count 9.000000
mean 68.777778
std 18.053932
min 43.000000
25% 58.000000
50% 65.000000
75% 80.000000
max 100.000000
Name: Defesa, dtype: float64
Se quisermos ver o máximo de uma variável específica, é possível fazer da seguinte forma:
In [71]: dataset["Ataque"].max()
Out[71]: 84
In [72]: #É possível dar display em uma linha específica com uma qualidade qualquer
#No exemplo abaixo queríamos a que tinha maior ataque
dataset.loc[dataset['Ataque'] == dataset["Ataque"].max()]
Out[72]: Nome Tipo_1 Tipo_2 Total HP Ataque Defesa Vel.Ataque Sp.Def \
#
6 Charizard Fogo Voador 534 78 84 78 109 85
Velocidade Geração Lendario
#
6 100 1 False
Podemos também adicionar dados na tabela da seguinte forma:
In [73]: dataset['Evolução'] = (1,2,3,1,2,3,1,2,3)
dataset
Out[73]: Nome Tipo_1 Tipo_2 Total HP Ataque Defesa Vel.Ataque Sp.Def \
#
1 Bulbasaur Grama Veneno 318 45 49 49 65 65
2 Ivysaur Grama Veneno 405 60 62 63 80 80
16
3 Venusaur Grama Veneno 525 80 82 83 100 100
4 Charmander Fogo NaN 309 39 52 43 60 50
5 Charmeleon Fogo NaN 405 58 64 58 80 65
6 Charizard Fogo Voador 534 78 84 78 109 85
7 Squirtle Agua NaN 314 44 48 65 50 64
8 Wartortle Agua NaN 405 59 63 80 65 80
9 Blastoise Agua NaN 530 79 83 100 85 105
Velocidade Geração Lendario Evolução
#
1 45 1 False 1
2 60 1 False 2
3 80 1 False 3
4 65 1 False 1
5 80 1 False 2
6 100 1 False 3
7 43 1 False 1
8 58 1 False 2
9 78 1 False 3
É possível aplicar funções com dados da tabela para preencher dados na propria tabela:
In [74]: def evolucao(x):
if x == '1':
return "Forma incial"
elif x == 2:
return "Primeira evolução"
elif x == 3:
return "Segunda Evolução"
dataset['Evolução'] = dataset['Evolução'].apply(evolucao)
dataset
Out[74]: Nome Tipo_1 Tipo_2 Total HP Ataque Defesa Vel.Ataque Sp.Def \
#
1 Bulbasaur Grama Veneno 318 45 49 49 65 65
2 Ivysaur Grama Veneno 405 60 62 63 80 80
3 Venusaur Grama Veneno 525 80 82 83 100 100
4 Charmander Fogo NaN 309 39 52 43 60 50
5 Charmeleon Fogo NaN 405 58 64 58 80 65
6 Charizard Fogo Voador 534 78 84 78 109 85
7 Squirtle Agua NaN 314 44 48 65 50 64
8 Wartortle Agua NaN 405 59 63 80 65 80
9 Blastoise Agua NaN 530 79 83 100 85 105
Velocidade Geração Lendario Evolução
#
1 45 1 False None
17
2 60 1 False Primeira evolução
3 80 1 False Segunda Evolução
4 65 1 False None
5 80 1 False Primeira evolução
6 100 1 False Segunda Evolução
7 43 1 False None
8 58 1 False Primeira evolução
9 78 1 False Segunda Evolução
Por fim, podemos excluir dados com método “.drop”:
In [75]: #vamos excluir a coluna "Lendario"
dataset.drop(["Lendario"],axis=1,inplace= True)
dataset
Out[75]: Nome Tipo_1 Tipo_2 Total HP Ataque Defesa Vel.Ataque Sp.Def \
#
1 Bulbasaur Grama Veneno 318 45 49 49 65 65
2 Ivysaur Grama Veneno 405 60 62 63 80 80
3 Venusaur Grama Veneno 525 80 82 83 100 100
4 Charmander Fogo NaN 309 39 52 43 60 50
5 Charmeleon Fogo NaN 405 58 64 58 80 65
6 Charizard Fogo Voador 534 78 84 78 109 85
7 Squirtle Agua NaN 314 44 48 65 50 64
8 Wartortle Agua NaN 405 59 63 80 65 80
9 Blastoise Agua NaN 530 79 83 100 85 105
Velocidade Geração Evolução
#
1 45 1 None
2 60 1 Primeira evolução
3 80 1 Segunda Evolução
4 65 1 None
5 80 1 Primeira evolução
6 100 1 Segunda Evolução
7 43 1 None
8 58 1 Primeira evolução
9 78 1 Segunda Evolução
4 Exercícios
1-Crie um arquivo.csv com área, país, capital, população e IDH de coluna usando os países do
Mercosul como base faça as seguintes manipulações com o csv:
a) Organize os países por ordem alfabética e depois por IDH;
b) Descubra a média do IDH do mercosul e selecione todos os países que estiverem acima da
média mostrando todos os seus dados;
18
c) Adicione uma coluna que classifique um país como de Desenvolvido ou Subdesenvolvido
levando em conta o IDH depois tire a tabela de IDH - defina um ponto de corte;
2- Faça o mesmo com os países da União Europeia;
19
	Aula de introdução ao Python 3.6.1 II
	Numpy
	Exercícios
	Pandas
	Exercícios

Outros materiais