Cheat sheet

Sintaxe, operações, critérios de escolha e erros para consulta rápida.

Perguntar sobre esta página

ChatGPTClaudePerplexityGeminiCopiar e abrir

Brain rot

A seguirPara ti

@resumos.feup

som original ·

Definições

Leitura

Mudar de trecho
Legendas
Mostrar no vídeo
Vídeos de fundo

O texto, o áudio e os teus vídeos ficam neste dispositivo.

Créditos dos vídeos e da voz

Partilhar página

Python

PedidoSintaxe ou regra
Atribuir e compararx = 3; x == 3
Potência, quociente, restoa ** b; a // b; a % b
Ler um inteiron = int(input())
Mostrar duas casasprint(f"{valor:.2f}")
Decidirif condicao:; elif outra:; else:
Repetir até condição falsawhile condicao:
Percorrer elementosfor x in valores:
Inteiros de 1 até nrange(1, n + 1)
Último elementosequencia[-1]
Slice[inicio:fim:passo], fim excluído
Copiar listalista.copy(), cópia superficial
Construir lista[f(x) for x in valores if condicao(x)]
Devolver da funçãoreturn resultado
Abrir textowith open(caminho, encoding="utf-8") as f:

input devolve texto. print não devolve o valor mostrado. sort() altera e devolve None; sorted() cria outra lista. Um valor por defeito mutável numa função é partilhado entre chamadas. Explicações.

ColeçãoOrdemRepetiçõesAlteração
ListaSequênciaSimSim
TuploSequênciaSimSem substituir elementos
ConjuntoSem ordem de leitura garantidaNãoSim
DicionárioInserção das chavesChaves únicasSim

Conjunto vazio: set(). Dicionário vazio: {}. União: a | b; interseção: a & b; diferença: a - b. Contar: d[x] = d.get(x, 0) + 1. Coleções.

NumPy

import numpy as np
PedidoOperação
Criarnp.array(valores, dtype=float)
Forma e tamanhoa.shape; a.ndim; a.size; a.dtype
Matriz, linha i e coluna ja[i, j]
Coluna ja[:, j]
Filtrara[a > 0]
Somar por colunaa.sum(axis=0)
Somar por linhaa.sum(axis=1)
Produto matriciala @ b
Produto elemento a elementoa * b
Copiar dadosa.copy()

Broadcasting compara dimensões a partir da direita: iguais ou uma delas 1. Slices básicos podem partilhar dados. reshape conserva o número de elementos. Arrays.

pandas

import pandas as pd
PedidoOperação
Ler CSVpd.read_csv(caminho, sep=";", decimal=",")
Inspecionardf.head(); df.shape; df.dtypes; df.info()
Coluna como Seriesdf["x"]
Coluna como tabeladf[["x"]]
Rótulosdf.loc[linhas, colunas]
Posiçõesdf.iloc[linhas, colunas]
Filtrar duas condiçõesdf.loc[(df["x"] > 0) & (df["y"] == "A")]
Alterar o originaldf.loc[mascara, "x"] = valor
Coluna calculadadf["total"] = df["q"] * df["preco"]
Ordenardf.sort_values("x")
Nuloss.isna(); s.notna(); s.fillna(valor)
Linhas sem nulo em xdf.dropna(subset=["x"])
Contar linhas e conhecidoslen(df); s.count()
Frequênciass.value_counts(dropna=False)
Estatísticass.sum(); s.mean(); s.median(); s.std()
Exportar sem índicedf.to_csv(caminho, index=False)

loc inclui os extremos dos slices por rótulo; iloc exclui o fim. Series alinham pelo índice. Usa &, | e ~, com parênteses, não and e or. pandas usa normalmente ddof=1 na variância; NumPy usa ddof=0. Seleção e estatística.

Escolher a transformação

ObjetivoOperação
Acrescentar linhaspd.concat([a, b], ignore_index=True)
Relacionar por chavea.merge(b, on="id", how="left", validate="many_to_one")
Relacionar com índicea.join(b, on="id")
Longo para largo, chave únicadf.pivot(index="i", columns="c", values="v")
Longo para largo, agregar repetidosdf.pivot_table(index="i", columns="c", values="v", aggfunc="sum")
Largo para longodf.melt(id_vars="id", var_name="medida", value_name="valor")
Total por grupodf.groupby("grupo")["v"].sum()
Total do grupo em cada linhadf.groupby("grupo")["v"].transform("sum")

Uma junção muitos-para-muitos multiplica correspondências. pivot_table usa média por defeito; escreve a agregação pedida. size conta linhas; count conta não nulos. Junções, formas e grupos.

Texto, tempo e gráficos

PedidoOperação ou critério
Limpar textos.str.strip().str.lower()
Procurar texto literals.str.contains("abc", regex=False, na=False)
Converter dataspd.to_datetime(s, format="%d/%m/%Y", errors="coerce")
Componentes da datas.dt.year; s.dt.month; s.dt.dayofweek
Total diáriodf.set_index("data")["v"].resample("D").sum(min_count=1)
Acrescentar diastimedelta(days=n)
Acrescentar mesesrelativedelta(months=n)
Medir tempo decorridoDiferença de duas chamadas time.perf_counter()
Comparar categoriasBarras, zero na origem
Evolução temporalLinha, datas ordenadas
Distribuição de uma variávelHistograma, intervalos declarados
Associação de duas variáveisDispersão, um ponto por observação

Ausência não é zero sem uma hipótese. Dias não são meses. Um gráfico precisa de unidade, rótulos e dados conferidos. Texto, tempo e gráficos.

Operações adicionais das aulas

  • s.mode(): Series com todas as modas; (s - s.mean()).abs().mean(): desvio absoluto médio, equivalente ao antigo mad().
  • s.sem(): erro padrão da média; s.skew() e s.kurt(): assimetria e excesso de curtose amostrais.
  • cumsum, cumprod, cummax, cummin: um resultado por prefixo, dependente da ordem.
  • df.insert(pos, nome, valores): altera a tabela; df.pop(nome): remove e devolve a coluna; del df[nome]: remove.
  • pd.concat(blocos, keys=origens): conserva a origem num nível de índice; verify_integrity=True: rejeita rótulos repetidos no eixo concatenado.
  • np.eye(n): identidade; a.itemsize: bytes por elemento; a.nbytes: bytes dos dados.
  • np.random.default_rng(semente): gerador explícito; integers(a, b): extremo b excluído; shuffle: altera; permutation: devolve outra sequência.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.