Python

Table of Contents

Capítulo 1

Conceito Descrição
Linguagem de Programação Domínio dos conceitos básicos como variáveis, estruturas de seleção e repetição, bibliotecas e leitura de documentação facilita o aprendizado de novas linguagens.
Bibliotecas Conjuntos de módulos (agrupamentos de funções) que fornecem funcionalidades prontas para diversas tarefas, como geração de gráficos e manipulação de dados.
Vantagens das Bibliotecas Agilidade na adição de funcionalidades, possibilidade de testar diferentes implementações, fácil instalação e desinstalação.
Funções Blocos de código reutilizáveis que executam tarefas específicas, como a função `reajustarsalario` que aplica um reajuste salarial a diferentes cargos.
Bibliotecas Gráficas em Python Matplotlib (robusta e complexa), Seaborn (simples e esteticamente agradável) e Plotly (interativo).
NumPy Biblioteca que oferece a estrutura de dados ndarray, similar a listas, mas com vantagens em funcionalidades, performance e consumo de memória, especialmente para grandes conjuntos de dados.
Pandas Biblioteca que usa o NumPy como base e introduz o DataFrame, uma estrutura de dados tabular poderosa para manipulação e análise de dados.
DataFrame Tipo de dado do Pandas que organiza dados em linhas e colunas, como uma tabela, facilitando a manipulação, análise e visualização de dados.
Correlação Medida estatística que indica a relação entre duas variáveis. Uma correlação próxima de 1 indica uma relação diretamente proporcional, enquanto uma correlação próxima de -1 indica uma relação inversamente proporcional.
Expressões Regulares (Regex) Sequências de caracteres que formam padrões de busca, úteis para encontrar, validar e manipular textos.
Aplicações de Regex Busca textual, validação de dados, web scraping e filtros em integrações.
Módulo `re` Módulo do Python dedicado a expressões regulares, com funções para busca, substituição e manipulação de strings usando regex.

Capítulo 2

Conceito Descrição
Inteligência Artificial (IA) Um campo amplo com diversas abordagens, muitas vezes confundido com outros termos como Machine Learning. Apesar do termo evocar ideias de superinteligências, a IA atual é mais focada em algoritmos que aprendem com dados.
Machine Learning (ML) Um subcampo da IA que se concentra em algoritmos que aprendem padrões a partir de dados. É a base da maioria das aplicações de IA em empresas atualmente.
Aprendizagem Supervisionada Tipo de ML em que o algoritmo aprende com dados rotulados, ou seja, com exemplos de entradas e saídas desejadas. Divide-se em classificação (prever um grupo) e regressão (prever um valor numérico).
Aprendizagem Não Supervisionada Tipo de ML em que o algoritmo aprende padrões em dados não rotulados, buscando por similaridades e estruturas ocultas. Exemplos: redução de dimensionalidade e agrupamento (clustering).
Aprendizagem Por Reforço Tipo de ML em que o algoritmo aprende por tentativa e erro, recebendo recompensas por ações que levam a um objetivo. Usado em áreas como logística e jogos.
Ciência de Dados Uma área multidisciplinar que utiliza IA, estatística e conhecimento específico de um domínio para extrair insights e valor de dados.
Etapas de um Projeto de Ciência de Dados 1. Definição do problema; 2. Definição dos dados; 3. Preparação dos dados; 4. Desenvolvimento dos modelos; 5. Avaliação dos modelos; 6. Disponibilização dos modelos.
Preparação de Dados Fase crucial que pode consumir até 80% do tempo do projeto. Envolve entender, limpar, transformar e preparar os dados para serem usados pelos algoritmos de ML.
Bibliotecas em Python para ML Scikit-learn (versátil, com algoritmos de aprendizado supervisionado e não supervisionado), TensorFlow, Keras e PyTorch (redes neurais e deep learning), LightGBM e XGBoost (gradient boosting), Statsmodels (foco em estatística).
Matriz de Confusão Ferramenta para avaliar o desempenho de modelos de classificação, mostrando a quantidade de acertos e erros em cada classe.

Capítulo 3

Conceito Descrição
Agente de Resolução de Problemas Um tipo de agente inteligente que decide as próximas ações buscando atingir um estado desejado, como encontrar a rota mais curta entre cidades.
Formulação de Problemas Processo crucial na IA que define: 1) Estado inicial do agente; 2) Função sucessor: ações válidas em cada estado e os estados resultantes; 3) Teste de objetivo: verifica se um estado é o objetivo; 4) Função de custo: avalia o custo de cada caminho (sequência de ações).
Espaço de Estados Representação de todos os estados possíveis que podem ser alcançados a partir do estado inicial, geralmente ilustrado como um grafo.
Árvore de Busca Estrutura gerada durante a busca por uma solução. A raiz é o estado inicial, e os ramos são criados expandindo nós (estados) com suas ações e estados sucessores.
Estratégia de Busca Define a ordem de expansão dos nós na árvore de busca, impactando a eficiência na localização da solução.
Busca Sem Informação (Cega) Estratégias que exploram o espaço de estados sem conhecimento específico do problema, como busca em extensão (largura) e busca em profundidade.
Busca com Informação (Heurística) Estratégias que usam conhecimento do problema (heurísticas) para guiar a busca de forma mais eficiente, como a busca gulosa e o algoritmo A*.
Função Heurística (h(n)) Função que estima o custo do caminho do nó atual (n) até o objetivo, fornecendo conhecimento específico do problema para a busca com informação.
Algoritmo A* Estratégia de busca heurística que combina o custo do caminho até o nó atual (g(n)) com a heurística (h(n)) para estimar o custo total, buscando o caminho de menor custo estimado.

Capítulo 4

Conceito Descrição
Algoritmos Servem para criar soluções, aplicações e plataformas que resolvem problemas específicos, como gerenciar vendas, oferecer serviços bancários ou proporcionar entretenimento.
Integração de Sistemas Sistemas diferentes, mesmo escritos em linguagens diversas e criados em momentos e locais distintos, precisam se comunicar para funcionar em conjunto.
Padrões de Comunicação Assim como idiomas comuns facilitam a comunicação entre pessoas de diferentes nacionalidades, arquivos com formatos padronizados como XML e JSON permitem a troca de dados entre sistemas.
XML (Extensible Markup Language) Formato de arquivo com estrutura hierárquica em árvore, semelhante ao HTML, usado para transportar dados entre sistemas, como documentos. Pode ser verboso para grandes volumes de dados.
JSON (JavaScript Object Notation) Alternativa mais leve ao XML, utiliza pares chave-valor para representar dados de forma estruturada. É mais conciso e fácil de ler para humanos e máquinas.
Encoding Padrão que define como caracteres são convertidos em bytes para armazenamento e processamento em computadores. UTF-8 é o padrão dominante atualmente, suportando uma vasta gama de caracteres.
CSV (Comma-Separated Values) Formato de arquivo simples em que cada linha representa uma linha de tabela e os valores são separados por vírgulas (ou outro delimitador). Útil para transferir dados entre sistemas.
Parquet Formato de arquivo colunar otimizado para Big Data, armazenando dados por coluna em vez de por linha, o que acelera consultas e economiza espaço.
SQLite Banco de dados relacional leve que opera localmente, sem a necessidade de um servidor separado. Útil para dispositivos com recursos limitados, desenvolvimento e prototipagem.
Persistência de Dados Armazenamento de dados de forma permanente para uso futuro, seja localmente (arquivos, bancos de dados locais) ou remotamente (APIs, serviços na nuvem).
Pickle Funcionalidade específica do Python para serializar e desserializar objetos Python, permitindo salvar e carregar variáveis complexas em arquivos.
APIs (Application Programming Interfaces) Interfaces que permitem a comunicação entre diferentes softwares, expondo funcionalidades e dados de forma estruturada. REST é um estilo arquitetural popular para APIs.
REST (Representational State Transfer) Estilo arquitetural para APIs que utiliza os métodos HTTP (GET, POST, etc.) para acessar e manipular recursos.

Capítulo 5

Conceito Descrição
Iterações Repetições de ações, como percorrer os elementos de uma lista (string, array, etc.).
Iteradores Objetos que permitem percorrer elementos de uma sequência de dados. Em Python, podem ser usados com strings, listas, dicionários, tuplas, arrays NumPy, DataFrames pandas, etc..
`for` loop Estrutura de repetição que itera sobre uma sequência de dados, executando um bloco de código para cada elemento.
`while` loop Estrutura de repetição que executa um bloco de código enquanto uma condição for verdadeira.
Iteradores Infinitos Funções como `count`, `cycle` e `repeat` do módulo `itertools` que geram sequências infinitas de elementos.
`count(start, step)` Gera uma sequência numérica infinita a partir de `start`, incrementando a cada passo por `step`.
`cycle(iterable)` Gera uma sequência infinita repetindo os elementos de `iterable` na ordem original.
`repeat(object, times)` Gera uma sequência que repete `object` por `times` vezes. Se `times` não for especificado, a repetição é infinita.
Combinações Subconjuntos de elementos de um conjunto maior, onde a ordem dos elementos não importa. `combinations(iterable, r)` gera combinações de `r` elementos de `iterable` sem repetição.
Combinações com Repetição Subconjuntos de elementos onde a repetição de um mesmo elemento é permitida. `combinationswithreplacement(iterable, r)` gera combinações de `r` elementos de `iterable` com repetição permitida.
Permutações Arranjos de elementos de um conjunto onde a ordem dos elementos importa. `permutations(iterable, r)` gera todas as permutações possíveis de `r` elementos de `iterable`.
Generators Funções especiais que retornam um iterador (lazy iterator) em vez de um valor. Usam a palavra-chave `yield` para retornar um valor de cada vez, economizando memória.
`yield` keyword Retorna um valor do generator e pausa a execução da função, preservando seu estado. Na próxima chamada, a função continua de onde parou.
Sobrecarga de Operadores Capacidade de definir o comportamento de operadores (+, -, *, etc.) para tipos de dados personalizados (classes).
Métodos especiais (dunder methods) Métodos com nomes predefinidos (como `_add__`, `_sub__`, etc.) que permitem sobrecarregar operadores em Python. `_add__` define o comportamento do operador `+` para a classe.

Capítulo 6

Conceito Descrição
Sustentabilidade em TI Vai além de questões ambientais e abrange a capacidade de um software se manter funcional e relevante ao longo do tempo.
Otimização Em software, significa melhorar a eficiência, seja do algoritmo (código) ou dos processos da organização.
Otimização de Processos Refere-se à melhoria da gestão e das práticas de desenvolvimento de software, incluindo governança de TI, segurança e boas práticas de codificação.
CMMI (Capability Maturity Model Integration) Modelo para avaliar a maturidade de uma organização em desenvolvimento de software, com níveis como "Inicial", "Gerenciado" e "Em Otimização".
Otimização de Algoritmos Visa tornar o código mais eficiente, analisando a quantidade de cálculos, uso de memória e tempo de execução, geralmente expressos pela notação Big O.
Big O (Notação Assintótica) Representação da performance de um algoritmo em relação ao crescimento do volume de dados processados, indicando se o tempo de execução cresce de forma constante, linear, quadrática, etc.
Complexidade Fatorial (O(n!)) Representa algoritmos extremamente ineficientes, cujo tempo de execução cresce exponencialmente com o tamanho da entrada, como alguns algoritmos de força bruta.
Processos Espaços isolados na memória onde um algoritmo é executado, consumindo recursos e com tempo de criação e término.
Threads Pequenos trechos de um algoritmo que podem ser executados concorrentemente dentro de um mesmo processo, compartilhando recursos e sendo mais leves que processos.
Escalabilidade Capacidade de um sistema lidar com o aumento da demanda de forma eficiente, seja em termos de volume de dados, usuários ou complexidade.
CPython Implementação de referência do Python, escrita em C e Python, sendo a mais utilizada e com suporte prioritário para novas funcionalidades da linguagem.
Implementação de Linguagem Software que interpreta o código escrito em uma linguagem (como Python) e o executa, traduzindo as instruções em ações concretas.
Protocolos (Interfaces) Em Python, são como "contratos" que definem métodos que uma classe deve implementar, garantindo padronização e funcionalidade.

Observações…

Como organizei o conteúdo desta página

Esta página contém resumos dos principais conceitos de Python extraídos de arquivos no formato PDF com a ferramenta NotebookLM.

De forma simples, enviei os arquivos para o NotebookLM e pedi os resumos com os seguintes comandos:

Organize uma tabela com os principais conceitos do texto. Na primeira coluna, o nome do conceito e na segunda, o conceito em si.

A partir do segundo pedido, usei o comando:

Repita o processo anterior para este texto.

No terceiro pedido, recebi a mensage de:

O comando fornecido solicita que o processo anterior seja repetido. No entanto, não há processo anterior no histórico de conversas fornecido. [Me] Para obter uma resposta abrangente, forneça o processo anterior que você gostaria que fosse repetido.

Desta forma, alternei entre o primeiro e segundo comando até o último arquivo, que veio com a formatação Markdown deformada. Então, pedi uma última revisão com o comando:

Refaça a tabela para uma melhor formatação em Markdown.

A publicação final continua uma exportação simples, do formato org mode para HTML, usando o Emacs.

Voltar para o início…

Author: Jackson de Jesus

Created: 2024-09-01 dom 16:03

Validate