INTRODUÇÃO AO PYTHON PARA
CIÊNCIA DE DADOS
Prof. Dr. Anderson Ara
Prof. Dr. José Jairo de S. e Silva
Slide 07
Módulos, Pacotes e Bibliotecas em Python
2 / 55
Módulo, Pacote e Biblioteca em Python
Em Python esses termos são frequentes, mas não são exatamente sinônimos.
Módulo: É um arquivo único (.py) que contém funções e variáveis reutilizáveis.
Exemplo: math, random.
Pacote: É uma coleção de módulos organizados em pastas, com um arquivo __init__.py.
Exemplo: [Link], [Link].
Biblioteca: É um termo mais abrangente, usado para se referir a um conjunto de módulos e
pacotes, geralmente pensado como uma solução completa para certo domínio.
Exemplo: numpy, pandas e scikit-learn.
PS: Tecnicamente, o math não é um pacote, mas sim um módulo embutido (built-in module) da
biblioteca padrão do Python.
3 / 55
Comparação: Módulo, Pacote e Biblioteca
Conceito Definição Exemplo de Estrutura Exemplos no Python
Arquivo único .py com funções,
Módulo [Link] math, random, os
classes e variáveis reutilizáveis
Conjunto de módulos organizados [Link],
Pacote numpy/linalg/
em pastas, contém __init__.py [Link]
Conjunto mais amplo de pacotes
numpy/ (com vários numpy, pandas,
Biblioteca e módulos com propósito
pacotes e módulos dentro) scikit-learn, dask
específico
Resumindo:
Módulo = unidade básica de código.
Pacote = coleção organizada de módulos.
Biblioteca = conjunto de pacotes e módulos para resolver problemas complexos.
4 / 55
ARRAYS
5 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Arrays
Os arrays são uma das estruturas mais importantes na programação científica.
Eles permitem armazenar e manipular coleções de dados de forma eficiente.
Um array pode ser entendido como uma tabela de elementos do mesmo tipo. Cada item ocupa
uma posição ordenada, e o acesso a qualquer elemento é feito diretamente pelo índice.
Isso garante velocidade e previsibilidade, duas características essenciais em cálculos numéricos de
grande escala.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 6 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Arrays
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 7 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Arrays
É comum começar com listas em Python, pois elas são flexíveis e aceitam diferentes tipos de dados
em uma mesma estrutura.
Contudo, essa flexibilidade tem um preço: operações matemáticas não são naturais em listas e o
consumo de memória é relativamente alto.
Arrays, ao contrário, são projetados para lidar com coleções homogêneas e realizar cálculos de
maneira muito mais eficiente.
Embora eles tenham muitas semelhanças, Listas e Arrays são implementações diferentes em
Python.
Os arrays não são uma estrutura de dados nativa do Python. Por isso, para utilizá-los, é necessário
importar um pacote (array ou NumPy).
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 8 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
# Lista Array
A lista é usada para coletar itens que Um array também é um componente
1 geralmente consistem em elementos de importante que coleta vários itens do mesmo
múltiplos tipos de dados. tipo de dado.
A lista não consegue realizar operações O array consegue realizar operações
2
aritméticas. aritméticas.
A lista pode conter elementos de diferentes O array contém elementos que pertencem ao
3
tipos de dados. mesmo tipo de dado.
Em termos de flexibilidade, o array não é tão
Em termos de flexibilidade, a lista é perfeita,
4 adequado, já que não permite modificações
pois permite fácil modificação dos dados.
tão fáceis.
5 Consome mais memória. Consome menos memória que uma lista.
Em uma lista, todos os elementos podem ser
Em um array, é obrigatório usar um loop para
6 acessados sem a necessidade de um loop
acessar os componentes.
específico.
É mais adequado para sequências curtas de É mais adequado para sequências longas de
7
dados. dados.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 9 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Arrays
No Python puro, existe o módulo array, que permite criar arrays homogêneos. Entretanto, seu uso
é restrito e menos comum.
Para ciência de dados, estatística e aprendizado de máquina, a comunidade científica adota o
NumPy, que fornece arrays n-dimensionais poderosos e uma enorme variedade de funções
matemáticas.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 10 / 55
O Módulo Array
11 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Modulo Array
Como vimos na tabela, o Python oferece uma estrutura de dados tipo array em seu ecossistema
padrão, através do módulo array.
Seu principal objetivo é fornecer uma maneira eficiente em termos de memória para armazenar
uma sequência de itens de um mesmo tipo numérico.
Vamos ver como ele funciona na prática e entender suas vantagens e, principalmente, suas
limitações para a Ciência de Dados.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 12 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Criando um array
A sintaxe para criar um array é:
import array
[Link]('typecode', [elementos])
O 'typecode' é uma string que define o tipo dos elementos.
13 / 55
Typecodes do módulo array em Python
O módulo array do Python cria arrays homogêneos, ou seja, todos os elementos devem ser do
mesmo tipo. Para definir esse tipo, usamos um typecode (um único caractere que representa o tipo
dos dados).
Principais typecodes:
Typecode Tipo em C Tipo em Python Tamanho (bytes)
'b' signed char int (valores -128 a 127) 1
'B' unsigned char int (0 a 255) 1
'h' signed short int 2
'H' unsigned short int 2
'i' signed int int 4
'I' unsigned int int 4
'f' float float 4
'd' double float 8
14 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Exemplo:
import array
# Criando uma lista de inteiros (typecode 'i')
numeros_inteiros = [Link]('i', [1, 2, 3, 4, 5])
type(numeros_inteiros)
## <class '[Link]'>
print(numeros_inteiros)
## array('i', [1, 2, 3, 4, 5])
# Criando uma lista de floats (typecode 'f')
numeros_reais = [Link]('f', [1.0, 2.5, 3.14, 4.0])
print(numeros_reais)
## array('f', [1.0, 2.5, 3.140000104904175, 4.0])
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 15 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
# Tentar usar tipos mistos gera erro
try:
[Link]('i', [1, 2, 'texto'])
except TypeError as e:
print(f"\nErro: {e}")
##
## Erro: 'str' object cannot be interpreted as an integer
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 16 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Indexação, slicing e laços
import array as arr
a = [Link]('i', [10, 20, 30, 40, 50])
a[0], a[2], a[-1] # 10, 50
a[:3], a[1:4], a[::2] # fatias
for x in a: # iteração direta
print(x)
for i in range(len(a)):
print(i, a[i]) # por índice
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 17 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Modificar, inserir e remover
a = [Link]('i', [10, 20, 30])
a[1] = 99 # altera
[Link](40) # +1 valor
[Link]([50, 60]) # +vários
[Link](1, 15) # insere na posição 1
[Link](10) # remove 1ª ocorrência do valor 10
x = [Link](2) # remove pelo índice 2
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 18 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Onde o array se destaca (e onde não)
Vantagens:
Memória: Como todos os elementos são do mesmo tipo, o Python armazena os dados de
forma compacta e contígua na memória, consumindo significativamente menos espaço
que uma lista para grandes volumes de dados.
Limitação Crucial
Operações Matemáticas: A tabela indicava que arrays realizam operações aritméticas. Isso é
uma meia-verdade. O módulo array NÃO suporta operações matemáticas em todos os
elementos de uma vez (vetorização).
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 19 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Exemplo:
import array
meu_array = [Link]('i', [10, 20, 30])
print(f"Saída: {meu_array * 2}")
## Saída: array('i', [10, 20, 30, 10, 20, 30])
Como podemos ver, multiplicar um array por 2 não multiplica cada elemento por 2, mas sim
repete o array.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 20 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Para fazer a operação, ainda precisamos de um loop:
resultado = [Link]('i', [elemento * 2 for elemento in meu_array])
print(f"Resultado com loop: {resultado}")
## Resultado com loop: array('i', [20, 40, 60])
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 21 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
O módulo array é uma ferramenta útil para um propósito específico: armazenar grandes
sequências de dados numéricos de forma compacta.
Ele é mais eficiente em memória do que as listas.
Porém, para a Ciência de Dados, suas limitações são diversas:
Não realiza operações vetorizadas (código lento e verboso com loops).
É estritamente unidimensional (não serve para matrizes ou tensores).
Possui um conjunto muito limitado de funcionalidades.
Precisamos de uma ferramenta que combine a eficiência de memória de um array com o poder
de realizar operações matemáticas complexas de forma simples e rápida em múltiplas
dimensões.
É aqui que entra uma das bibliotecas fundamentais da computação científica em Python: o
NumPy.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 22 / 55
Pacote NumPy
23 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy significa “Numerical Python”.
Iniciado em 2006, o NumPy é um pacote voltado para computação científica e análise de dados.
O NumPy utiliza um objeto de array multidimensional e oferece diversas funções e ferramentas
para trabalhar com esses arrays.
Além disso, o NumPy pode ser facilmente integrado a outros pacotes do ecossistema Python e
também oferece recursos para interação com linguagens de programação como C e C++.
Fornece recursos para álgebra linear, geração de números aleatórios e mais.
Documentação em: [Link]
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 24 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy
O array n-dimensional do NumPy acelera o processamento de dados, permitindo operações
rápidas e eficientes.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 25 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy
Criar um array no NumPy é simples, podemos criar um array a partir de uma lista comum:
import numpy as np
a = [Link]([1, 2, 3, 4, 5])
b = [Link]([5, 6, 7, 8, 9])
Esses objetos (vetores) agora permitem operações matemáticas vetorizadas, algo impossível em
uma lista comum.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 26 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy
A diferença fica clara quando realizamos operações.
Multiplicar uma lista por 2 gera apenas uma repetição da lista.
Já em um array NumPy, cada elemento é multiplicado por 2, gerando outro array.
É justamente essa característica que torna os arrays tão úteis em cálculos numéricos.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 27 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy
import numpy as np
# Array NumPy
meu_array = [Link]([10, 20, 30])
# Multiplicação por 2 é feita elemento a elemento
resultado = meu_array * 2
print(resultado)
## [20 40 60]
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 28 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy
A função [Link]() também permite definir arrays de várias dimensões. Por exemplo:
b = [Link]([[1, 2], [3, 4]])
type(b)
## <class '[Link]'>
print(b)
## [[1 2]
## [3 4]]
Nesse caso, temos uma matriz 2x2. Essa generalização para dimensões maiores é a base para
manipulação de dados em estatística, imagens, sinais e até redes neurais.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 29 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy
Uma das vantagens do NumPy é o controle sobre o tipo dos dados.
É possível especificar que um array deve ser inteiro, ponto flutuante ou mesmo valores complexos.
Isso garante consistência e evita erros ao realizar operações matemáticas em larga escala.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 30 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
import numpy as np
# array de inteiros
arr_int = [Link]([1, 2, 3, 4], dtype=int)
print("Inteiros:", arr_int, "| Tipo:", arr_int.dtype)
## Inteiros: [1 2 3 4] | Tipo: int64
# array de floats
arr_float = [Link]([1, 2, 3, 4], dtype=float)
print("Floats:", arr_float, "| Tipo:", arr_float.dtype)
## Floats: [1. 2. 3. 4.] | Tipo: float64
# array de números complexos
arr_complex = [Link]([1, 2, 3, 4], dtype=complex)
print("Complexos:", arr_complex, "| Tipo:", arr_complex.dtype)
## Complexos: [1.+0.j 2.+0.j 3.+0.j 4.+0.j] | Tipo: complex128
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 31 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
# operações coerentes com o tipo
print("arr_int * 2 =", arr_int * 2) # continua inteiro
## arr_int * 2 = [2 4 6 8]
print("arr_float / 2 =", arr_float / 2) # resultado float
## arr_float / 2 = [0.5 1. 1.5 2. ]
print("arr_complex + 1j =", arr_complex + 1j) # operação com números complexos
## arr_complex + 1j = [1.+1.j 2.+1.j 3.+1.j 4.+1.j]
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 32 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy
O acesso aos elementos de um array é feito por índices, assim como em listas. O primeiro elemento
é acessado com a[0]. Também é possível acessar subconjuntos usando fatias: a[1:4] retorna os
elementos de índice 1 até 3. Esse mecanismo é chamado de slicing e é fundamental para trabalhar
com grandes volumes de dados.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 33 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy
import numpy as np
# Criando um array NumPy
a = [Link]([10, 20, 30, 40, 50, 60])
# Acesso por índice
print("Primeiro elemento (a[0]):", a[0]) # 10
## Primeiro elemento (a[0]): 10
print("Terceiro elemento (a[2]):", a[2]) # 30
## Terceiro elemento (a[2]): 30
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 34 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy
# Slicing
print("Elementos de índice 1 até 3 (a[1:4]):", a[1:4])
## Elementos de índice 1 até 3 (a[1:4]): [20 30 40]
# Saída: [20 30 40]
print("Todos os elementos a partir do índice 2 (a[2:]):", a[2:])
## Todos os elementos a partir do índice 2 (a[2:]): [30 40 50 60]
# Saída: [30 40 50 60]
print("Elementos até o índice 3 (a[:4]):", a[:4])
## Elementos até o índice 3 (a[:4]): [10 20 30 40]
Prof. Dr.#Anderson
Saída: Ara -[10
DEST/LEG/UFPR
20 30 40]- ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 35 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy
Além do slicing tradicional, o NumPy oferece seleção por máscaras booleanas. Isso significa que
podemos criar condições e extrair apenas os elementos que as satisfazem. Por exemplo, a[a > 2]
retorna apenas os valores maiores que 2. Esse recurso é essencial em análises estatísticas e
filtragem de dados.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 36 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
a = [Link]([1, 2, 3, 4, 5, 6])
# Máscara booleana: elementos maiores que 2
masc = a > 2
print("Máscara booleana:", masc)
## Máscara booleana: [False False True True True True]
# Usando a máscara para filtrar elementos
print("Elementos maiores que 2:", a[masc])
## Elementos maiores que 2: [3 4 5 6]
# Outro exemplo: números pares
print("Elementos pares:", a[a % 2 == 0])
## Elementos pares: [2 4 6]
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 37 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy
Os arrays NumPy também permitem operações matriciais. A multiplicação entre matrizes pode ser
feita com @ ou com a função [Link]().
Isso aproxima o NumPy da álgebra linear tradicional e conecta Python a áreas como estatística
multivariada e aprendizado de máquina.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 38 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
import numpy as np
# Definindo duas matrizes 2x2
A = [Link]([[1, 2],
[3, 4]])
B = [Link]([[5, 6],
[7, 8]])
# Multiplicação matricial
print("A @ B =\n", A @ B)
## A @ B =
## [[19 22]
## [43 50]]
print("[Link](A, B) =\n", [Link](A, B))
## [Link](A, B) =
## [[19 22]
## [43 50]]
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 39 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy
Outra característica fundamental é a capacidade de manipular a forma (shape) dos arrays. Com
reshape(), podemos transformar um vetor de tamanho 6 em uma matriz 2x3.
Essa flexibilidade é útil para reorganizar dados de acordo com a análise desejada.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 40 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
import numpy as np
# Criando um array 1D (vetor) com 6 elementos
a = [Link]([1, 2, 3, 4, 5, 6])
print("Array original:", a)
## Array original: [1 2 3 4 5 6]
print("Shape original:", [Link])
## Shape original: (6,)
# Transformando em uma matriz 2x3
b = [Link](2, 3)
print("\nArray reshape para 2x3:\n", b)
##
## Array reshape para 2x3:
## [[1 2 3]
## [4 5 6]]
Prof. [Link]("Novo shape:",- ara@[Link]
Anderson Ara - DEST/LEG/UFPR [Link]) & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 41 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
# Também podemos criar uma matriz 3x2
c = [Link](3, 2)
print("\nArray reshape para 3x2:\n", c)
##
## Array reshape para 3x2:
## [[1 2]
## [3 4]
## [5 6]]
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 42 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy
Podemos alterar um elemento diretamente pelo índice:
a=[Link]([1,2,3,4,5,6])
print(a)
## [1 2 3 4 5 6]
a[0] = 10
print(a)
## [10 2 3 4 5 6]
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 43 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy
import numpy as np
A=[Link]([[1,2,3],
[4,5,6]])
print(A)
## [[1 2 3]
## [4 5 6]]
A[0,0] = 10
print(A)
## [[10 2 3]
## [ 4 5 6]]
A[0][0] = 20
print(A)
Prof. Dr.
##Anderson
[[20 Ara2- DEST/LEG/UFPR
3] - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 44 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy
Também é possível adicionar novas linhas, concatenar arrays e até remover elementos.
Essa maleabilidade permite adaptar os dados a diferentes contextos de análise sem a necessidade
de recriar estruturas do zero.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 45 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
arr = [Link]([[1, 2, 3],
[4, 5, 6]])
print("Array inicial:\n", arr)
## Array inicial:
## [[1 2 3]
## [4 5 6]]
# adicionar nova linha
nova_linha = [Link]([[7, 8, 9]])
arr_expandido = [Link]((arr, nova_linha))
print("\nArray após adicionar nova linha:\n", arr_expandido)
##
## Array após adicionar nova linha:
## [[1 2 3]
## [4 5 6]
## [7 8 9]]
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 46 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
# concatenar arrays
outro_arr = [Link]([[10, 11, 12]])
concatenado = [Link]((arr_expandido, outro_arr), axis=0)
print("\nArray após concatenar outro array:\n", concatenado)
##
## Array após concatenar outro array:
## [[ 1 2 3]
## [ 4 5 6]
## [ 7 8 9]
## [10 11 12]]
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 47 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
# Removendo a primeira coluna
removido = [Link](concatenado, 0, axis=1)
print("\nArray após remover a primeira coluna:\n", removido)
##
## Array após remover a primeira coluna:
## [[ 2 3]
## [ 5 6]
## [ 8 9]
## [11 12]]
#Removendo a última linha
removido2 = [Link](removido, -1, axis=0)
print("\nArray após remover a última linha:\n", removido2)
##
## Array após remover a última linha:
## [[2 3]
## [5 6]
## [8 9]]
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 48 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
NumPy Broadcasting
Broadcasting é um mecanismo do NumPy que permite realizar operações matemáticas entre
arrays de tamanhos ou formas diferentes, sem escrever laços explícitos.
Em vez de duplicar os dados, o NumPy “expande virtualmente” os arrays menores para que
tenham a mesma forma que os maiores, aplicando a operação elemento a elemento.
A = [Link]([[1, 2, 3],
[4, 5, 6]])
b = [Link]([10, 20, 30])
print(A + b)
## [[11 22 33]
## [14 25 36]]
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 49 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Funções no NumPy
Um dos pontos fortes do NumPy é a grande coleção de funções matemáticas prontas para uso.
Operações como soma, média, desvio padrão, logaritmos e exponenciais podem ser aplicadas
diretamente ao array inteiro, sem a necessidade de laços de repetição. Isso deixa o código mais
limpo e muito mais rápido.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 50 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Funções Matemáticas no NumPy
O NumPy oferece diversas funções matemáticas prontas.
b = [Link]([1, 2, 3, 4])
print("Exponencial:", [Link](b))
## Exponencial: [ 2.71828183 7.3890561 20.08553692 54.59815003]
print("Logaritmo:", [Link](b))
## Logaritmo: [0. 0.69314718 1.09861229 1.38629436]
print("Raiz quadrada:", [Link](b))
## Raiz quadrada: [1. 1.41421356 1.73205081 2. ]
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 51 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Funções Estatísticas no NumPy
a = [Link]([1, 2, 3, 4, 5])
print("Soma:", [Link](a))
## Soma: 15
print("Média:", [Link](a))
## Média: 3.0
print("Variância:", [Link](a))
## Variância: 2.0
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 52 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Funções Estatísticas no NumPy
print("Desvio padrão:", [Link](a))
## Desvio padrão: 1.4142135623730951
print("Mínimo:", [Link](a))
## Mínimo: 1
print("Máximo:", [Link](a))
## Máximo: 5
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 53 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Arrays e NumPy Arrays
Arrays (do módulo array) são coleções homogêneas, ou seja, todos os elementos devem ter o
mesmo tipo. Isso os torna mais compactos e eficientes em memória que listas.
NumPy Arrays (ndarray) vão além: são estruturas altamente otimizadas para computação
científica, suportando operações vetorizadas, broadcasting, funções matemáticas, manipulação
de formas (reshape) e integração com bibliotecas em C e Fortran.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 54 / 55
INTRODUÇÃO AO PYTHON PARA CIÊNCIA DE DADOS
Listas x Arrays x NumPy
Um overview:
Listas: flexíveis, aceitam tipos variados, código mais simples.
Arrays (array): homogêneos, menos memória; bons para E/S binária e interoperabilidade.
NumPy Arrays: vetorização, álgebra, broadcasting; ideal para cálculo científico e desempenho.
Prof. Dr. Anderson Ara - DEST/LEG/UFPR - ara@[Link] & Prof. Dr. José Jairo de S. e Silva - [Link]@[Link] 55 / 55