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