Descubra o NumPy para análise de dados, a biblioteca do Python que simplifica o trabalho com números e informações. Ideal tanto para quem está começando em Python quanto para quem já explora análise de dados, este guia oferece um passo a passo prático. Aprenda a manipular arrays, realizar cálculos complexos e usar ferramentas poderosas para analisar dados, tudo culminando em um mini-projeto prático. Vamos desvendar os segredos do NumPy e turbinar suas habilidades!
Preparando o Ambiente
Antes de mergulhar no NumPy, precisamos configurar nosso ambiente para rodar os exemplos de código e o mini-projeto. Veja como deixar tudo pronto:
- Instale o Python: Se você ainda não tem o Python, baixe-o em python.org. Durante a instalação, marque a opção de adicionar o Python ao seu PATH para facilitar o uso no terminal.
- Instale o NumPy: Abra o terminal (ou Command Prompt no Windows) e digite:
pip install numpy
Esse comando usa o gerenciador de pacotes do Python (pip) para buscar e instalar o NumPy.
-
Escolha um Editor: Selecione um editor de código. Algumas opções são:
- IDLE: Já vem com o Python. Basta procurar por ele após a instalação.
- VS Code: Um editor gratuito e popular, disponível em code.visualstudio.com.
- Ou qualquer outro editor de sua preferência!
-
Teste a Configuração: Para confirmar que tudo está funcionando, crie um arquivo (ex:
test.py
) no seu editor e adicione:
import numpy as np
print(np.__version__)
Ao rodar o arquivo, se um número de versão aparecer (como 1.26.4
), está tudo certo!
Com o ambiente configurado, podemos explorar o NumPy!
O que é NumPy?
O NumPy é uma biblioteca Python criada para cálculos numéricos. Ele oferece uma estrutura de dados especial chamada ndarray (n-dimensional array), que é mais rápida e eficiente que as listas tradicionais do Python. É uma ferramenta fundamental para análise de dados em Python e funciona muito bem com bibliotecas como Pandas e Matplotlib.
Para começar a usar o NumPy no seu código, importe-o assim:
import numpy as np # 'np' é o atalho comum
Por que usar NumPy?
Antes de prosseguir, vamos entender por que o NumPy é tão útil:
- Velocidade: É extremamente rápido para cálculos, otimizando seu trabalho.
- Facilidade: Dispensa o uso de loops complexos, pois o NumPy faz o trabalho pesado.
- Poder: Oferece diversas funções integradas para simplificar a análise de dados.
Com essas vantagens em mente, vamos ver o que o NumPy pode fazer!
Criando Arrays NumPy
Arrays são a base do NumPy, e vamos explorar diferentes formas de criá-los.
A partir de uma Lista
Transforme uma lista Python comum em um array NumPy para começar a trabalhar com ela.
# Transformando uma lista em um array 1D
array = np.array([1, 2, 3, 4])
print(array)
Entenda:
-
np.array()
transforma sua lista em um array NumPy. - Saída:
[1 2 3 4]
— um array 1D, como uma linha de números.
Array 2D (Matriz)
Crie um array 2D, que se parece com uma grade ou matriz, usando uma lista de listas.
# Criando um array 2D com linhas e colunas
array_2d = np.array([[1, 2], [3, 4]])
print(array_2d)
Entenda:
- Cada lista interna se torna uma linha no seu array 2D.
- Saída:
[[1 2]
[3 4]]
- Isso resulta em uma matriz 2×2.
Arrays Especiais
O NumPy permite gerar rapidamente arrays com padrões específicos, como todos zeros, uns ou uma sequência.
# Gerando um array de zeros
zeros = np.zeros((2, 3)) # 2 linhas, 3 colunas
print(zeros)
# Gerando um array de uns
ones = np.ones((3, 2)) # 3 linhas, 2 colunas
print(ones)
# Gerando uma sequência de números
range_array = np.arange(0, 10, 2) # Começa em 0, para antes de 10, incrementa de 2 em 2
print(range_array)
Entenda:
-
np.zeros((2, 3))
: Retorna um array 2×3 preenchido com0.0
.- Saída:
[[0. 0. 0.] [0. 0. 0.]]
- Saída:
-
np.ones((3, 2))
: Cria um array 3×2 de1.0
.- Saída:
[[1. 1.] [1. 1.] [1. 1.]]
- Saída:
-
np.arange(0, 10, 2)
: Produz[0 2 4 6 8]
, similar aorange()
do Python, mas como um array.
Arrays Aleatórios
Para testes ou simulações, gere arrays com valores aleatórios.
# Gerando números de ponto flutuante aleatórios entre 0 e 1
random_array = np.random.rand(2, 2) # Array 2x2
print(random_array)
Entenda:
-
np.random.rand(2, 2)
: Cria um array 2×2 de números aleatórios entre 0 e 1. - Saída: Algo como
[[0.45 0.12] [0.78 0.33]]
(os valores serão diferentes a cada execução).
Propriedades dos Arrays
Entender a estrutura dos seus arrays é essencial para a análise. Veja algumas propriedades úteis.
# Configurando um array 2D
array = np.array([[1, 2, 3], [4, 5, 6]])
# Verificando o formato: linhas e colunas
print("Formato:", array.shape) # (2, 3)
# Verificando o número total de elementos
print("Tamanho:", array.size) # 6
# Verificando o tipo de dado
print("Tipo:", array.dtype) # int64 (ou similar)
Entenda:
-
shape
:(2, 3)
indica que temos 2 linhas e 3 colunas. -
size
:6
é o número total de elementos (2 * 3). -
dtype
:int64
mostra que os elementos são inteiros.
Operações Básicas
O NumPy simplifica a matemática com operações vetorizadas, permitindo evitar o uso de loops!
Operações Elemento a Elemento
Aplique operações a cada elemento de um array facilmente.
# Adicionando 2 a cada elemento
a = np.array([1, 2, 3])
print(a + 2) # [3 4 5]
# Multiplicando cada elemento por 3
print(a * 3) # [3 6 9]
Entenda:
-
a + 2
: Adiciona 2 a cada elemento:[1+2, 2+2, 3+2]
. -
a * 3
: Multiplica cada elemento:[1*3, 2*3, 3*3]
.
Operações Array a Array
Combine dois arrays elemento por elemento.
# Somando dois arrays
b = np.array([4, 5, 6])
print(a + b) # [5 7 9]
# Multiplicando dois arrays
print(a * b) # [4 10 18]
Entenda:
-
a + b
: Realiza a soma elemento a elemento:[1+4, 2+5, 3+6]
. -
a * b
: Realiza a multiplicação elemento a elemento:[1*4, 2*5, 3*6]
.
Operações com Matrizes
Para arrays 2D, realize operações específicas de matriz, como transposição ou multiplicação.
# Configurando uma matriz 2x2
matrix = np.array([[1, 2], [3, 4]])
# Transpondo (trocando linhas e colunas)
print(matrix.T)
# Realizando a multiplicação de matrizes
print(np.dot(matrix, matrix))
Entenda:
-
matrix.T
: Transforma[[1 2] [3 4]]
em[[1 3] [2 4]]
. -
np.dot()
: Multiplica a matriz por ela mesma, resultando em:- Saída:
[[7 10] [15 22]]
.
- Saída:
Funções Essenciais para Análise de Dados
Explore as funções poderosas do NumPy que facilitam a análise de dados.
Indexação e Slicing
Acesse partes específicas dos seus arrays usando indexação e slicing.
# Trabalhando com um array 1D
array = np.array([10, 20, 30, 40])
print(array[1]) # 20 (2º elemento)
print(array[1:3]) # [20 30] (elementos 2 a 3)
# Trabalhando com um array 2D
array_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(array_2d[0, 1]) # 2 (linha 1, coluna 2)
print(array_2d[:, 1]) # [2 5] (todas as linhas, coluna 2)
Entenda:
-
array[1]
: Recupera o elemento no índice 1. -
array[1:3]
: Extrai do índice 1 até o 2. -
array_2d[0, 1]
: Busca a linha 0, coluna 1. -
array_2d[:, 1]
::
seleciona todas as linhas,1
escolhe a coluna 1.
Funções Estatísticas
O NumPy oferece ferramentas práticas para resumir seus dados estatisticamente.
# Analisando um conjunto de dados simples
data = np.array([1, 2, 3, 4, 5])
print(np.mean(data)) # 3.0 (média)
print(np.median(data)) # 3.0 (valor do meio)
print(np.std(data)) # 1.414... (dispersão)
print(np.min(data)) # 1 (menor)
print(np.max(data)) # 5 (maior)
Entenda:
-
mean
: Calcula a média somando todos os valores e dividindo pela quantidade. -
median
: Encontra o valor central quando ordenado. -
std
: Mede o quão dispersos estão os dados. -
min
/max
: Identifica os valores mínimo e máximo.
Filtrando com np.where()
Filtre seus dados ou substitua valores com base em condições usando np.where()
.
# Filtrando valores maiores que 3
data = np.array([1, 5, 3, 6, 2])
indices = np.where(data > 3)
print(indices) # (array([1, 3]),)
print(data[indices]) # [5 6]
# Substituindo valores > 3 por 10
data_new = np.where(data > 3, 10, data)
print(data_new) # [ 1 10 3 10 2]
Entenda:
-
np.where(data > 3)
: Retorna os índices[1, 3]
onde os valores excedem 3. -
data[indices]
: Extrai esses valores:[5, 6]
. -
np.where(condition, x, y)
: Usax
(10) onde a condição é verdadeira, caso contrário, mantémy
(valor original).
Reformatando Arrays
Às vezes, é preciso mudar o formato de um array para adequá-lo à análise. reshape()
ajuda com isso.
# Reformatando um array 1D para 2D
array = np.arange(6) # [0 1 2 3 4 5]
reshaped = array.reshape(2, 3)
print(reshaped)
Entenda:
-
reshape(2, 3)
: Transforma 6 elementos em um array 2×3:- Saída:
[[0 1 2] [3 4 5]]
.
- Saída:
Ordenando
Organize seus dados em ordem usando sort()
.
# Ordenando um array não ordenado
unsorted = np.array([3, 1, 4, 2])
print(np.sort(unsorted)) # [1 2 3 4]
Entenda:
-
np.sort()
: Organiza o array do menor para o maior.
Valores Únicos
Encontre os valores distintos nos seus dados com unique()
.
# Encontrando valores únicos
data = np.array([1, 2, 2, 3, 1])
print(np.unique(data)) # [1 2 3]
Entenda:
-
np.unique()
: Remove duplicatas e ordena o resultado.
Agregação
Resuma seus dados, como somar valores, com funções de agregação.
# Resumindo um array 2D
array_2d = np.array([[1,