Você está na página 1de 62

Numpy

Numpy é uma biblioteca de computação


científica em Python. Possui um conjunto
alargado de funções matemáticas para trabalhar
com matrizes multidimensionais.

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Numpy
Uma matriz em Numpy é uma grelha de valores, todos
do mesmo tipo e indexada a um tuplo de inteiros não
negativos.

O número de dimensões é a
ordem (rank) da matriz; a
forma (shape) de uma matriz
é uma tupla de inteiros dando
o tamanho da matriz ao longo
de cada dimensão.

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Numpy
import numpy as np

a = np.array([7, 2, 1]) Cria uma matriz de ordem 1(1D)

print (type(a)) Mostra <class 'numpy.ndarray’>


print (a.shape) Mostra (3,)
print (a.ndim) Mostra ordem 1
print (len(a)) Mostra o tamanho, 3

print (a[0]) Mostra os valores associados aos índices 7


ATENÇÃO: os índices também começam em zero no numpy.

a[0] = 5 Mudar um elemento de uma matriz


a Mostra [5, 2, 1] Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
Numpy
b = np.array([[1,2,3],[4,5,6],[6,7,3]]) Criar a matriz de
ordem 2 (2D)
b.ndim Mostra 2
b.shape Mostra (3, 3)

b[0, 0], b[0, 1], b[2, 1] Indexação mostra 1 2 7


c = np.array([[[1,2],[3,4]],[[5,6],[2,3]]])
Cria uma matriz de ordem 3 (3D)
c.ndim Mostra 3
c.shape Mostra (2, 2, 2)
c[0, 0, 0], c[0, 1, 1], c[1,0,1] Mostra 1, 4, 6
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
Numpy
import numpy as np

a = np.linspace(0, 1, 6) (Início, fim e nº pontos entre o início e o fim)


array([ 0. , 0.2 , 0.4 , 0.6 , 0.8, 1.0])

b = np.linspace(0, 1, 5, endpoint=False) (Início, fim e nº pontos entre


o inicio e o fim, o ultimo ponto é considerado (True) ou não ( False))
array([ 0. , 0.2 , 0.4 , 0.6 , 0.8])

c = np.arange(10) Cria uma matriz com n elementos


array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

d = np.arange(1, 9, 2) Inicio, fim e intervalo entre pontos


array([ 1, 3, 5, 7])

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Numpy
import numpy as np

a = np.zeros((2,2)) Cria uma matriz só com zeros


[[0. 0.]
[ 0. 0.]]

b = np.ones((1,2)) Cria uma matriz só com unidade


[[ 1. 1.]]

c = np.full((2,2), 7) Criar uma matriz constante


[[ 7. 7.]
[ 7. 7.]]

d = np.eye(2) Criar uma matriz identidade 2x2


[[ 1. 0.]
[ 0. 1.]]

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Numpy
import numpy as np

a = np.diag(np.array([1,2,3,4])) Cria uma matriz diagonal


[[1 , 0 , 0, 0]
[[0 , 2 , 0, 0]
[[0 , 0 , 3, 0]
[[0 , 0 , 0, 4]

b = np.random.random((2,2)) Criar uma matriz com valores aleatórios


Exemplo [[ 0.91940167 0.08143941]
[ 0.68744134 0.87236687]]

c = np.random.randn(4) Criar uma matriz com valores aleatórios


array([ 0.79549209, 1.22144358, -0.31461919, -0.61739727])

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Numpy
import numpy as np

a = np.array([0, 1, 2, 3])

a.dtype dtype(”int32f”)

b = np.array([1+2j, 3+4j, 5+6*1j])

b.dtype dtype('complex128')

c = np.array([True, False, False, True])

c.dtype dtype(‘bool’)

d= np.array([’Portugal’, ’Espanha’, ’França’])

d.dtype dtype(‘<U8’) strings com 8 caracteres ou menos


Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
Numpy
Seccionar dados de matrizes

import numpy as np
a = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

a [2:9:3] [Inicio: Fim: Passo] - [2 , 5, 8] A especificação dos


componentes de corte não é obrigatória. Por defeito, Início é 0, Fim é o
último elemento e o passo é 1. Exemplo:

O corte é especificado usando o operador : com um índice 'de' e 'para’.

O símbolo , é usado para separar as linhas das colunas, por exemplo


numa matriz 2D.

b[2:5 , 2:5]

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Numpy
Seccionar dados de matrizes

b=np.array([[0,1,2,3,4,5],[10,11,12,13,14,15],[20,21,22,23,24,25]
,[30,31,32,33,34,35],[40,41,42,43,44,45],[50,51,52,53,54,55]])

b[0, 3:5] array([3, 4])


b[5, 2:4] array([52, 53])

b[4:, 4:] array([[44, 45],


[54, 55]])
b[:, 2] array([ 2, 12, 22, 32, 42, 52])

b[2: :2, : :2] array([[20, 22, 24],


[40, 42, 44]])

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Numpy
Seccionar dados de matrizes

b[(0,1,2,3,4),(1,2,3,4,5)]
array([ 1, 12, 23, 34, 45])

[b[3:, (0,2,5)]
array([[30, 32, 35],
[40, 42, 45],
[50, 52, 55]])

mascara = np.array([1,0,1,0,0,1],dtype=bool)
b[mascara,2]

array([ 2, 22, 52])

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Numpy
Operações com matrizes
import numpy as np

a = np.array([0, 1, 2, 3, 4])

Operações numéricas básicas:


a+1 ---(soma)
array [1, 2, 3, 4, 5])

a*2 ---(produto)
array [0, 2, 4, 6, 8])

2**a ---(potência)
array [1, 2, 4, 8, 16])
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
Numpy
import numpy as np
a = np.array([[0, 1], [2, 3]])
b = np.array([[2, 1], [6, 8]])
Operações numéricas básicas:

a-b ---(diferença)
array([[-2, 0],
[-4, -5]])

a*b ---- Atenção multiplicação arrays não


é multiplicação de matrizes apenas
array([[ 0, 1], dos valores da cada matriz
[12, 24]])

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Numpy
import numpy as np

a = np.array([[0, 3, 5], [5, 5, 2]])


b = np.array([[3, 4], [3, -2],[4, -2]])

a.dot(b) ---- Multiplicação de matrizes

array([[ 29, -16],


[38, 6 ]])

a.T ---- Transposição de matrizes

Array([[ 0, 5],
[3, 5],
[5, 2]]) Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
Numpy
import numpy as np
a = np.array([[0, 1], [2, 3]])
b = np.array([[2, 1], [6, 8]])

Operações lógicas
a == b
array([[False, True],
[False, False]])

a >b
array([[ True, False],
[ True, True]])

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Numpy
Operações numéricas com dados da matriz

import numpy as np
x = np.array([0, 1, 2, 3, 4])

np.sum(x)
10

y = np.array([[1, 1], [2, 2]])


y.sum(axis=0)
array([3,3])

y.sum(axis=1)
array([2,4])
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
Numpy
Operações numéricas com dados da matriz

import numpy as np
x = np.array([1, 2, 3, 4, 1])
x.mean() ---média de (todos os valores)
2.2
x.std() ---desvio padrão (de todos os valores)
1.16619037896906
x.min() x.max() --- mínimo e máximo
1 4
x.argmin() x.argmax() --- devolve o índice do menor/maior
0 3 elemento

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Numpy
Operações redimensionamento da matriz

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
a.ravel() - Cria uma matriz 1D
array([1, 2, 3, 4, 5, 6])
a.reshape(3,2) b = np.array([[4, 3, 5], [1, 2, 1]])
array([[1, 2]
b.sort(axis=1)
[3, 4],
array([[ 3, 4, 5,],
[5, 6]])
[ 1,1,2]])

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Numpy
Polinómios
import numpy as np
( ex: 3x2 + 2x -1)
p = np.poly1d([3, 2,-1])

p(3) --- resolve o polinómio com x=3


32
p.r --- determina as raízes do polinómio
array([ -1, , 0.33333])

p.c --- mostra os coeficientes do polinómio


array([ 3, 2, -1])

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Numpy
Polinómios print(p.integ(k=6)) -integração do
from numpy import poly1d
polinómio com termo independente
p = poly1d([3,4,5]) igual a 6

print(p) ---mostra o polinómio


1 x3 + 2 x2 + 5 x + 6

3 x2 + 4 x + 5 print(p.deriv()) ---derivada do
polinómio
print(p*p) ---multiplica o polinómio 6x+4

p([4, 5]) – cálculo do polinómio para


9 x4 + 24 x3 + 46 x2 + 40 x + 25 dois valores diferentes
array([ 69, 100])

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
Matplotlib é uma biblioteca para gerar gráficos a partir de
dados em listas ou matrizes na linguagem de programação
Python e da extensão matemática Numpy.

Matplotlib, pyplot e pylab?


Matplotlib é todo o pacote; matplotlib.pyplot ou pyplot é um
módulo no matplotlib.
O pylab é também um módulo instalado juntamente com o
matplotlib (combina pyplot e numpy num único modulo mas
para programação o ideal é separar os dois módulos)

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
Elementos comuns
de um gráfico

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])

[<matplotlib.lines.Line2D at 0x20d1a7c30f0>]

X Y

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
import matplotlib.pyplot as plt O terceiro argumento
plt.plot([1,2,3,4], [1,4,9,16], 'ro') muda a cor e o tipo de
plt.axis([0, 6, 0, 20]) marcador do gráfico
r= vermelho o=circulo
plt.show()

Define o
intervalo
dos dois eixos

Mostra o gráfico

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
import matplotlib.pyplot as plt
plt.plot([1,2,3,4], [1,4,9,16], 'ro')
plt.axis([0, 6, 0, 20])
plt.show()

Em vez deste formato reduzido é também possível especificar


todas as propriedades.
plot(x, y, color=“g”, linestyle=“-”, marker=“o”, linewidth=3.0,
markersize=12)
Estilo da linha

Cor dos marcadores/linha Estilo marcador Tamanho linha


Tamanho do marcador

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
Caracteres usados na formatação dos pontos e linhas
Caracteres Descrição Caracteres Descrição
'-' estilo de linha sólida 'H' Marcador hexágono 2
'--' estilo de linha tracejada '+' marcador mais
'-.' estilo de linha traço-ponto 'x' marcador x
':' estilo de linha pontilhada 'D' marcador de diamante
'.' marcador de ponto 'd' marcador fino do diamante
',' marcador de pixel '|' marcador vline
'o' marcador do círculo marcador hline
'_'
'v' marcador triangulo abaixo
'^' marcador triangulo acima Caracteres Descrição
'<' marcador triangulo esquerda ‘b’ Azul
'>' marcador triangulo direita
‘g’ Verde
'1' marcador tri-triangulo abaixo
‘r’ Vermelho
'2' marcador tri-triangulo acima
'3' marcador tri-triangulo esquerda ‘c’ Ciano
'4' marcador tri-triangulo acima ‘m’ Magenta
's' marcador quadrado
‘y’ Amarelo
'p' marcador pentágono
'*' marcador estrela ‘k’ Preto
'h' marcador hexágono 1 ‘w’ Branco
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
Matplotlib
Eixos , grelhas, marcas escala

import numpy as np
import matplotlib.pyplot as plt

plt.axis([0, 6, 0, 20])

plt.grid()

plt.show()

plt. xticks([]) --- Sem marcas de escala

plt.yticks(np.arange(0, 20, step=4))

plt.xticks(np.arange(5), ('Tom', 'Dick', 'Harry', 'Sally', 'Sue'))

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
# Definir limites de x
plt.xlim(-4.0, 4.0)

# Definir x ticks
plt.xticks(np.linspace(-4, 4, 9, endpoint=True))

# Definir limites y
plt.ylim(-1.0, 1.0)

# Definir y ticks
plt.yticks(np.linspace(-1, 1, 5, endpoint=True))

#Gravar um gráfico num ficheiro de imagem

plt.savefig(“Teste.png”)

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
Gráficos Múltiplos
# Criar uma figura de tamanho 8x6 pontos, 80 pontos por polegada
plt.figure(figsize=(8, 6), dpi=80)

#Criar múltiplos gráficos na mesma figura

plt.figure(1) # a primeira figura


plt.subplot(211) # o primeiro sub-gráfico na primeira figura
plt.plot([1, 2, 3])
plt.subplot(212) # o segundo sub-gráfico na primeira figura
plt.plot([4, 5, 6])

plt.figure(2) # uma segunda figura


plt.plot([4, 5, 6]) # cria um sub-gráfico (111) por padrão

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
# Import
import numpy as np
import matplotlib.pyplot as plt
# Criar uma nova figura de tamanho 8x6 pontos, usando 100 pontos por polegada
plt.figure(figsize=(8,6), dpi=100)
# Criar um novo subplot a partir de uma grelha de 1x1
plt.subplot(111)
# Criar uma matriz de 256 pontos definida entre - π e π e aplicar a função coseno gerando uma matriz resposta, C
X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C = np.cos(X)
# Traçar coseno usando a cor azul com uma linha contínua de largura 1 (pixels)
plt.plot(X, C, color="blue", linewidth=1.0, linestyle="-")
# Definir limites de x
plt.xlim(-4.0,4.0)
# Definir x ticks
plt.xticks(np.linspace(-4,4,9,endpoint=True))
# Definir limites de y
plt.ylim(-1.0,1.0)
# Definir y ticks
plt.yticks(np.linspace(-1,1,5,endpoint=True))
# Mostrar o resultado
plt.show()
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
Matplotlib
Títulos, Legenda, Texto
Atenção: Para inserir a legenda é necessário
import matplotlib.pyplot as plt identificar com uma “label” o conjunto de
x = np.linspace(0, 2, 100) dados
plt.plot(x, x, label="Linear")
plt.plot(x, x**2, label="Quadratica") Inserir as legendas dos eixos
plt.plot(x, x**3, label="Cubica")
plt.xlabel("Eixo x") Inserir título do gráfico
plt.ylabel("Eixo y")
plt.title("Titulo gráfico")
plt.legend()
plt.show()

Comando de inserção
das legendas

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
Títulos, Legenda
É possível inserir nos títulos, símbolos, mudar cor ou alterar tamanho da fonte

plt.title(r'$\alpha_i > \beta_i$', fontsize=20)

plt.xlabel("Eixo x", color="b", fontsize=20)

Da mesma forma é possível inserir texto no


meio do gráfico especificando as coordenadas
de localização.

plt.text(0.25, 3, "Isto é só um teste")

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
Tipos de Gráficos - Dispersão
import matplotlib.pyplot as plt
from numpy.random import rand
a = rand(100)
b = rand(100)
plt.scatter(a, b)
plt.show()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
Gráficos Barras
import numpy as np
import matplotlib.pyplot as plt

ind = ('G1', 'G2', 'G3', 'G4', 'G5')


media_h = (20, 35, 30, 35, 27)

# plt.bar(ident. , valor, width, label=‘ ’)

plt.bar(ind, media_h, 0.5, label='Homem')

plt.ylabel('Resultados')
plt.title('Resultados por grupos')

plt.show()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
Gráficos Barras
import numpy as np
import matplotlib.pyplot as plt

N=5
homem_media = (20, 35, 30, 35, 27)
mulher_media = (25, 32, 34, 20, 25)

ind = np.arange(N)
width = 0.35
plt.bar(ind, homem_media, width, label='Homem')
plt.bar(ind + width, mulher_media, width, label='Mulher')

plt.ylabel('Resultados')
plt.title('Resultados por grupos e genero')

plt.xticks(ind + width / 2, ('G1', 'G2', 'G3', 'G4', 'G5'))


plt.legend(loc='best')
plt.show()
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
Matplotlib
Circulares (Pie-Charts)

animal = 'Porco', 'Galinha', 'Vaca', 'Peru'


tamanho = [15, 30, 45, 10]

plt.pie(tamanho, labels=animal, autopct='%1.1f%%', startangle=90)

plt.show()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
Circulares (Pie-Charts)

animais = 'Porco', 'Galinha', 'Vaca', 'Peru'


tamanho = [15, 30, 45, 10]
destaque = (0, 0.3, 0, 0)

plt.pie(tamanho, explode=destaque, labels=animais, autopct='%1.2f%%',


shadow=True, startangle=180)

plt.show()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
Histograma
import matplotlib.pyplot as plt Comando para tornar o gráfico +
from numpy.random import normal,rand ou - transparente varia entre 0 e
x = normal(size=200) 1.
plt.hist(x, bins=30, alpha=0.4)
plt.text(-3, 8, r"$\mu=100,\ \sigma=15$")
plt.grid(True)
plt.show()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
Polar

import numpy as np
import matplotlib.pyplot as plt

ax = plt.axes([0.025,0.025,0.95,0.95], polar=True)
N = 20
theta = np.arange(0.0, 2*np.pi, 2*np.pi/N)
radii = 10*np.random.rand(N)
width = np.pi/4*np.random.rand(N)
bars = plt.bar(theta, radii, width=width, bottom=0.0)
for r,bar in zip(radii, bars):
bar.set_facecolor( plt.cm.jet(r/10.))
bar.set_alpha(0.5)

ax.set_xticklabels([])
ax.set_yticklabels([])
plt.show()
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
Matplotlib
Contorno
import numpy as np
import matplotlib.pyplot as plt

def f(x,y):
return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)

n = 256
x = np.linspace(-3,3,n)
y = np.linspace(-3,3,n)
X,Y = np.meshgrid(x,y)
plt.axes([0.025,0.025,0.95,0.95])
plt.contourf(X, Y, f(X,Y), 8, alpha=.75, cmap=plt.cm.hot)
C = plt.contour(X, Y, f(X,Y), 8, colors='black', linewidth=.5)
plt.clabel(C, inline=1, fontsize=10)
plt.xticks([]), plt.yticks([])
plt.show()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Matplotlib
Imagem
import numpy as np
import matplotlib.pyplot as plt

def f(x,y):
return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)

n = 10
x = np.linspace(-3,3,3.5*n)
y = np.linspace(-3,3,3.0*n)
X,Y = np.meshgrid(x,y)
Z = f(X,Y)

plt.axes([0.025,0.025,0.95,0.95])
plt.imshow(Z,interpolation='nearest', cmap='bone', origin='lower')
plt.colorbar(shrink=.92)

plt.xticks([]), plt.yticks([])
plt.show()
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
Pandas

Pandas é uma biblioteca para


manipulação e análise de dados.
Em particular, oferece estruturas e
operações para manipular tabelas
numéricas e séries temporais

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Pandas
#importação da biblioteca
import pandas as pd

#Criação manual de um dataframe a partir de um dicionário

info = {"Pais":["Russia", "Inglaterra", "Angola" , "Portugal"],


"Capital":["Moscovo", "Londres", "Luanda", "Lisboa"],
"PopM": [11.92, 8.98, 2.57, 0.51]}
paises = pd.DataFrame(info)

#Mostrar a dataframe
paises
print (paises)
Pais Capital PopM
Pais Capital PopM
0 Russia Moscovo 11.92 0 Russia Moscovo 11.92
1 Inglaterra Londres 8.98
2 Angola Luanda 2.57 1 Inglaterra Londres 8.98
3 Portugal Lisboa 0.51
2 Angola Luanda 2.57
3 Portugal Lisboa 0.51

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Pandas

#Criar um dataframe só com uma coluna

nomes = pd.Series(["Joao","Maria", "Tiago", "Mariana"])

#mostrar a serie
nomes

0 Joao
1 Maria
2 Tiago
3 Mariana
dtype: object

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Pandas
#importar um ficheiro de dados separados por virgulas

df = pd.read_csv(“c:/disco/temperatura.txt")

#importar um ficheiro de dados Excel

df = pd.read_excel(“c:/disco/temperatura.xlsx")

Pais Cidade Mes Tmedia PopM


0 Espanha Madrid Janeiro 6.3 6.03
#Exemplo 1 Espanha Madrid Julho 25.6 6.03
df 2 Espanha Sevilha Janeiro 11.0 1.04
3 Espanha Sevilha Julho 28.2 1.04
4 Portugal Lisboa Janeiro 11.6 2.50
5 Portugal Lisboa Julho 23.1 2.65

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Pandas
#info sobre a base df.info
<class 'pandas.core.frame.DataFrame’>
df.shape RangeIndex: 6 entries, 0 to 5
Data columns (total 5 columns):
Pais 6 non-null object
(6, 5) Cidade 6 non-null object
Mes 6 non-null object
Tmedia 6 non-null float64
PopM 6 non-null float64
dtypes: float64(2), object(3)
memory usage: 320.0+ bytes

df.head (2) Pais Cidade Mes Tmedia PopM


0 Espanha Madrid Janeiro 6.3 6.03
1 Espanha Madrid Julho 25.6 6.03

df.columns

Index(['Pais', 'Cidade', 'Mes', 'Tmedia', 'PopM'], dtype='object')

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Pandas
df[“Cidade”]
df.describe()
0 Madrid
1 Madrid
2 Sevilha Tmedia PopM
3 Sevilha count 6.000000 6.000000
4 Lisboa
5 Lisboa mean 17.633333 3.215000
Name: Cidade, dtype: object std 9.097839 2.286489
min 6.300000 1.040000

df[“Cidade”].value_counts() 25% 11.150000 1.405000


50% 17.350000 2.575000
Sevilha 2 75% 24.975000 5.185000
Madrid 2
max 28.200000 6.030000
Lisboa 2
Name: Cidade, dtype: int64

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Pandas
iloc – integer location

df.iloc[1] Pais Espanha df.iloc[1,3]


Cidade Madrid
Mes Julho
Tmedia 25.6
25.6
PopM 6.03
Name: 1, dtype: object

df.iloc[[1,3], 3]
1 25.6
df.iloc[[1,3]] 3 28.2
Name: Tmedia, dtype: float64

Pais Cidade Mes Tmedia PopM


1 Espanha Madrid Julho 25.6 6.03
3 Espanha Sevilha Julho 28.2 1.04

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Pandas
df[df.Pais=="Portugal"]
Pais Cidade Mes Tmedia PopM
4 Portugal Lisboa Janeiro 11.6 2.50
5 Portugal Lisboa Julho 23.1 2.65

df[(df.Pais=="Portugal") & (df.Mes=="Janeiro")]

Pais Cidade Mes Tmedia PopM


4 Portugal Lisboa Janeiro 11.6 2.50

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Pandas
loc – location

df.loc[df.Mes=="Janeiro"] df.loc[df.Mes=="Janeiro", ["Cidade"]]

Pais Cidade Mes Tmedia PopM Cidade


0 Espanha Madrid Janeiro 6.3 6.03 0 Madrid
2 Espanha Sevilha Janeiro 11.0 1.04 2 Sevilha
4 Portugal Lisboa Janeiro 11.6 2.50 4 Lisboa

df.loc[(df.PopM>2.5) & (df.Mes=="Julho"),["Cidade", "Tmedia"]]

Cidade Tmedia
1 Madrid 25.6
5 Lisboa 23.1

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Pandas
loc – location

df.loc[df.Mes=="Julho",["Tmedia"]].max()

Tmedia 28.2
dtype: float64

df.loc[df.Mes=="Julho",["Tmedia"]].min()

Tmedia 23.1
dtype: float64

df.loc[df.Mes=="Julho",["Tmedia"]].sum()

Tmedia 76.9
dtype: float64

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Pandas
#Combinação com elementos gráficos

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("temperatura.txt")
df.plot.scatter(x="Tmedia", y=["PopM"])
plt.show()

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("temperatura.txt")
plt.scatter(df["Tmedia"], df["PopM"])
plt.show()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Pandas
#Combinação com elementos gráficos

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("temperatura.txt")

df.plot.bar(x="Cidade", y=["Tmedia","PopM"])

plt.show()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


SQLite
SQLite é uma biblioteca que implementa um banco de dados
SQL embutido. SQLite não é uma biblioteca cliente usada
para conectar com um grande servidor de banco de dados,
mas sim o próprio servidor. A biblioteca SQLite lê e escreve
diretamente no arquivo de banco de dados no disco.

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


SQLite
#Importar o modulo
import sqlite3

# Criar a Base dados


base = sqlite3.connect("dados.db")

# Criar cursor
c = base.cursor()
Apaga a tabela “projeto” no
c.execute("DROP TABLE IF EXISTS projeto") ficheiro dados.db para se poder
escrever novamente
#Criar base dados
c.execute("""CREATE TABLE IF NOT EXISTS projeto
(id INT PRIMARY KEY, Também é possível escrever
nome TEXT NOT NULL, Numa única linha mas usando
idade INT NOT NULL, “”” e mais fácil a visualização.
glicemia REAL);""")

c.execute("CREATE TABLE cars(id INT, nome TEXT, idade INT, glicemia REAL)")

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


SQLite
#Introduzir dados
c.execute("""INSERT INTO projeto
VALUES (1, "Joao", 33, 43.2);""")

#Consultar base e mostrar


c.execute("SELECT * FROM projeto")
print (c.fetchall())

#Submeter dados
base.commit()

#Fechar base dados


base.close()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


SQLite

#Introduzir múltiplos dados

dados = [(1, "Joao", 33, 43.2), (2,"Jorge", 27, 120.8)]

c.executemany("INSERT INTO projeto VALUES (?,?,?,?)”, dados)

#Ler dados seletivamente

print (c.fetchone()[1])

print (c.fetchmany(3))

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


SQLite
from tkinter import *
import sqlite3

janela = Tk()
janela.title("Base Dados")
janela.geometry("400x400")

# Base dados
base = sqlite3.connect("glicemia.db")

# Criar cursor
c = base.cursor()

#Apaga base de dados anterior se existir


c.execute("DROP TABLE IF EXISTS dados")

#Criar base dados


c.execute("""CREATE TABLE IF NOT EXISTS dados (
nome TEXT NOT NULL,
idade INT,
glicemia REAL
);""")
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
SQLite
#Criar função submissão
def submete():
# Criar ou ligar a base dados
base = sqlite3.connect("glicemia.db")
# Criar cursor
c = base.cursor()
#Inserir dados
lista=[]
lista = [entra_nome.get(),entra_idade.get(),entra_glicemia.get()]
c.execute("INSERT INTO dados VALUES (?,?,?)",lista)
#Submeter dados
base.commit()
#Fechar base dados
base.close()

#Limpar as caixas de texto


entra_nome.delete(0,END)
entra_idade.delete(0,END)
entra_glicemia.delete(0,END)

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


SQLite
#Criar a funçao de consulta
def consulta():
# Criar ou ligar a base dados
base = sqlite3.connect("glicemia.db")
# Criar cursor
c = base.cursor()
#consulta base
c.execute("SELECT *,oid FROM dados")
reg = c.fetchall()

#Loop de leitura da lista converter em string e mostrar em texto numa janela


leitura = ""
for i in reg:
leitura = leitura + str(i) + "\n"

#Cria uma segunda janela para mostrar os resultados


nova_janela=Toplevel(janela)
nova_janela.title("Dados Guardados")
nova_janela.geometry("300x300")
reg_label = Label(nova_janela, text=leitura)
reg_label.place(x=100, y=100)
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
SQLite
#destroi a nova janela
def destruir():
nova_janela.destroy()

#Criar um Butão fechar nova janela


fechar_btn = Button(nova_janela, text="Fechar", command=destruir)
fechar_btn.place(x=120, y=20)

#Submeter dados
base.commit()

#Fechar base dados


base.close()

#Criar entradas na janela principal


label_titulo = Label(janela, text="Base Glicemia",font="Arial", fg="Red")
label_titulo.place(x=125, y=20)
label_nome = Label(janela, text="Nome",font="Arial")
label_nome.place(x=50, y=75)
label_idade = Label(janela, text="Idade",font="Arial")
label_idade.place(x=50, y=125)
label_glicemia = Label(janela, text="Glicemia",font="Arial")
label_glicemia.place(x=50, y=175)
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
SQLite
#Criar Labels na janela principal
entra_nome = Entry(janela, width=30)
entra_nome.place(x=150, y=80)
entra_idade = Entry(janela, width=30)
entra_idade.place(x=150, y=130)
entra_glicemia = Entry(janela, width=30)
entra_glicemia.place(x=150, y=180)

#Criar Butão Submete janela principal


submete_btn = Button(janela, text="Adicionar base dados",
command=submete)
submete_btn.place(x=140, y=250)

#Criar um Butão Consulta na janela principal


consulta_btn = Button (janela, text="Mostrar", command=consulta)
consulta_btn.place(x=180, y=300)
#Submeter dados
base.commit()
#Fechar base dados
base.close()
#Loop infinito da janela
janela.mainloop()
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes

Você também pode gostar