// aula 03 · Python · Ecossistema

As Bibliotecas do Python —
O segredo por trás do poder da linguagem


O que é uma biblioteca (library)?

Uma biblioteca é um conjunto de código pronto que você pode importar e usar no seu programa, sem precisar escrever tudo do zero. É como usar uma caixa de ferramentas: você não fabrica o martelo, só usa. Em Python, as bibliotecas ficam no PyPI (Python Package Index) — o repositório oficial com mais de 500 mil pacotes.

Como instalar qualquer biblioteca

Use o pip, o gerenciador de pacotes do Python. No terminal:

pip install nome-da-biblioteca
pip install pandas numpy matplotlib # várias de uma vez

Dados & Análise
As bibliotecas que tornaram Python a linguagem da ciência de dados
NumPy
Numerical Python — a base de quase tudo em ciência de dados
Dados Científico
pip install numpy

NumPy é a biblioteca fundamental para computação numérica em Python. Ela introduz o ndarray — um array multidimensional extremamente eficiente — e operações matemáticas que rodam em C por baixo dos panos, sendo dezenas de vezes mais rápidas que listas Python puras.

Usado para
Matrizes e vetores Álgebra linear Operações matemáticas em massa Base do Pandas e TensorFlow
▸ mini_exemplo.py
import numpy as np

# Criar um array com 5 elementos
notas = np.array([7.5, 8.0, 9.2, 6.8, 10.0])

# Operações em todos os elementos de uma vez
print(notas.mean())   # → 8.3  (média)
print(notas.max())    # → 10.0 (maior nota)
print(notas * 1.1)    # → aumenta todas em 10%
# [8.25 8.8 10.12 7.48 11.0]

# Filtrar quem tirou acima de 8
aprovados = notas[notas > 8.0]
print(aprovados)       # → [8.  9.2 10. ]
Pandas
Panel Data — manipulação de dados tabulares como planilhas
Dados Análise
pip install pandas

Pandas traz o DataFrame — uma estrutura de dados em tabela (linhas × colunas) parecida com uma planilha Excel, mas programável. É a ferramenta mais usada para limpar, transformar e explorar dados antes de qualquer análise.

Usado para
Leitura de CSV, Excel, SQL Filtragem e agrupamento Limpeza de dados Análise exploratória
▸ mini_exemplo.py
import pandas as pd

# Criar uma tabela de alunos
df = pd.DataFrame({
    'nome':  ['Ana', 'Bia', 'Carlos', 'Diego'],
    'nota':  [9.5, 7.2, 8.8, 6.1],
    'turma': ['A', 'B', 'A', 'B']
})

# Filtrar alunos aprovados (nota ≥ 7)
aprovados = df[df['nota'] >= 7.0]
print(aprovados)
#     nome  nota turma
# 0    Ana   9.5     A
# 1    Bia   7.2     B
# 2  Carlos  8.8     A

# Média por turma
print(df.groupby('turma')['nota'].mean())
# turma A → 9.15  |  turma B → 6.65

Visualização de Dados
Transformar números em gráficos que contam histórias
Matplotlib
A biblioteca-mãe de visualização — controle total sobre cada detalhe
Visualização Científico
pip install matplotlib

Matplotlib é a biblioteca de visualização mais antiga e completa do Python. Inspirada no MATLAB, ela dá controle total sobre cada elemento de um gráfico. É verbose, mas extremamente poderosa para gráficos científicos e publicações.

Usado para
Gráficos de linha e barra Histogramas Gráficos científicos Subplots (múltiplos gráficos)
▸ mini_exemplo.py
import matplotlib.pyplot as plt

meses  = ['Jan', 'Fev', 'Mar', 'Abr']
vendas = [120, 98, 145, 162]

plt.plot(meses, vendas, marker='o', color='steelblue')
plt.title('Vendas por mês')
plt.xlabel('Mês')
plt.ylabel('Unidades')
plt.grid(alpha=0.3)
plt.show()  # abre a janela com o gráfico
Seaborn
Gráficos estatísticos bonitos com poucas linhas de código
Visualização Estatística
pip install seaborn

Seaborn é construído em cima do Matplotlib e simplifica a criação de gráficos estatísticos elegantes. Integra nativamente com DataFrames do Pandas e gera gráficos com temas bonitos por padrão.

Usado para
Heatmaps de correlação Box plots Distribuições Gráficos por categoria
▸ mini_exemplo.py
import seaborn as sns
import pandas as pd

df = pd.DataFrame({
    'turma': ['A','A','B','B','A','B'],
    'nota':  [8, 9, 6, 7, 10, 5]
})

# Gráfico de caixa por turma — 1 linha!
sns.boxplot(data=df, x='turma', y='nota')

# Gráfico de barras com média automática
sns.barplot(data=df, x='turma', y='nota')

Machine Learning & IA
O motivo pelo qual Python domina a inteligência artificial
scikit-learn
Machine learning clássico — simples, documentado e poderoso
Machine Learning Científico
pip install scikit-learn

scikit-learn é a biblioteca de machine learning mais usada do mundo para algoritmos clássicos. Oferece regressão, classificação, clustering, validação e pré-processamento com uma API consistente e intuitiva.

Usado para
Classificação (spam, diagnósticos) Regressão (previsão de preços) Clustering (agrupamento) Avaliação de modelos
▸ mini_exemplo.py — prever se vai chover
from sklearn.tree import DecisionTreeClassifier

# Dados: [temperatura, umidade]  → vai chover? 0=não, 1=sim
X = [[30, 20], [25, 80], [20, 90], [35, 10]]
y = [0, 1, 1, 0]

modelo = DecisionTreeClassifier()
modelo.fit(X, y)           # treinar

previsao = modelo.predict([[22, 85]])
print(previsao)            # → [1]  vai chover!
TensorFlow / Keras
Deep learning em escala — da pesquisa à produção no Google
Deep Learning Redes Neurais
pip install tensorflow

TensorFlow é o framework de deep learning do Google. O Keras é a interface de alto nível que facilita a criação de redes neurais. Juntos, permitem criar desde redes simples até modelos de visão computacional e NLP de última geração.

Usado para
Redes neurais Reconhecimento de imagem Processamento de linguagem Modelos de produção
▸ mini_exemplo.py — rede neural simples
import tensorflow as tf

# Rede neural com 3 camadas
modelo = tf.keras.Sequential([
    tf.keras.layers.Dense(64, activation='relu', input_shape=(10,)),
    tf.keras.layers.Dense(32, activation='relu'),
    tf.keras.layers.Dense(1,  activation='sigmoid')
])

modelo.compile(optimizer='adam', loss='binary_crossentropy')
# modelo.fit(X_train, y_train, epochs=10)
print(modelo.summary())  # exibe a arquitetura

Web & APIs
Construir servidores, consumir APIs e fazer scraping
Requests
"HTTP for Humans" — consumir APIs nunca foi tão simples
Web HTTP
pip install requests

Requests abstrai toda a complexidade do protocolo HTTP. Com poucas linhas você faz chamadas GET, POST, passa headers, autenticação e trata respostas JSON. Uma das bibliotecas mais baixadas de toda a história do PyPI.

Usado para
Consumir APIs REST Fazer login em sites Download de arquivos Web scraping básico
▸ mini_exemplo.py — buscando um fato sobre gatos 🐱
import requests

resposta = requests.get('https://catfact.ninja/fact')

if resposta.status_code == 200:
    dado = resposta.json()
    print(dado['fact'])
    # → "Cats sleep 13-14 hours a day."
else:
    print('Erro na requisição')
Flask
Micro-framework web — construa APIs e sites do zero sem complicação
Web API
pip install flask

Flask é um micro-framework web minimalista — você começa com o mínimo e adiciona apenas o que precisa. Perfeito para criar APIs, protótipos e aplicações web pequenas a médias. Muito usado para colocar modelos de ML em produção.

Usado para
APIs REST Sites dinâmicos Servir modelos de ML Protótipos rápidos
▸ mini_exemplo.py — servidor que responde "Olá!"
from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/ola')
def ola():
    return jsonify({'mensagem': 'Olá, mundo!', 'status': 'ok'})

if __name__ == '__main__':
    app.run(debug=True)
# Acesse http://localhost:5000/ola no navegador

Automação
Fazer o computador trabalhar por você
Playwright
Automatize navegadores — clique, preencha, extraia como um humano
Automação Web Scraping
pip install playwright

Playwright controla navegadores reais (Chrome, Firefox, Safari) por código. É usado para testar aplicações web, fazer scraping de sites dinâmicos (com JavaScript) e automatizar tarefas repetitivas no navegador.

Usado para
Testes automatizados Scraping de SPAs Automação de formulários Screenshots e PDFs
▸ mini_exemplo.py — tirar screenshot de um site
from playwright.sync_api import sync_playwright

with sync_playwright() as pw:
    browser = pw.chromium.launch()
    page = browser.new_page()

    page.goto('https://python.org')
    page.screenshot(path='python.png')

    browser.close()
# Salva a imagem python.png no disco
schedule
Agendar tarefas para rodar automaticamente no tempo certo
Automação Utilitário
pip install schedule

schedule é uma biblioteca minimalista para agendar funções em Python com uma sintaxe quase de linguagem natural. Ótima para rodar relatórios, enviar notificações ou fazer backups automaticamente.

Usado para
Relatórios automáticos Notificações agendadas Scripts periódicos
▸ mini_exemplo.py
import schedule, time

def bom_dia():
    print('Bom dia! Hora de começar!')

def fazer_backup():
    print('Backup realizado!')

schedule.every().day.at("08:00").do(bom_dia)
schedule.every().hour.do(fazer_backup)

while True:
    schedule.run_pending()
    time.sleep(60)

Utilitários Essenciais
Bibliotecas que todo programador Python acaba usando
pathlib
Manipulação de caminhos e arquivos — já vem com Python!
Utilitário Stdlib

Já incluída no Python — não precisa de pip install

pathlib é a biblioteca moderna para trabalhar com arquivos e diretórios. Substitui o antigo os.path com uma interface orientada a objetos mais intuitiva e legível.

▸ mini_exemplo.py
from pathlib import Path

pasta = Path('meus_arquivos')
pasta.mkdir(exist_ok=True)  # criar pasta

arquivo = pasta / 'notas.txt'  # / concatena caminhos!
arquivo.write_text('Nota: 9.5\n')

print(arquivo.read_text())   # → Nota: 9.5
print(arquivo.suffix)        # → .txt
print(arquivo.stem)          # → notas
Rich
Deixar o terminal bonito com cores, tabelas e barras de progresso
Terminal Utilitário
pip install rich

Rich transforma o terminal em algo visualmente rico. Com ela você imprime texto colorido, tabelas formatadas, barras de progresso, logs com ícones e muito mais — tudo sem complicação.

▸ mini_exemplo.py
from rich import print
from rich.table import Table

# Texto com formatação
print("[bold green]✅ Sucesso![/bold green] Arquivo salvo.")
print("[bold red]❌ Erro![/bold red] Verifique o arquivo.")

# Tabela bonita no terminal
tabela = Table(title="Alunos")
tabela.add_column("Nome")
tabela.add_column("Nota", style="cyan")
tabela.add_row("Ana",  "9.5")
tabela.add_row("Bia",  "7.2")
print(tabela)