Python
Capítulos
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.