Prévia do material em texto
Guia de Estudos Avançado em Análise de Dados para o Concurso do TCU (Banca Cebraspe)
1. Introdução
Este material de estudos foi elaborado para candidatos ao cargo de Auditor do Tribunal de Contas da União (TCU), com foco na disciplina "Análise de Dados", conforme cobrado pela banca Cebraspe. A análise de dados tornou-se uma competência crucial para a auditoria governamental, permitindo a identificação de padrões, anomalias, e a tomada de decisões baseada em evidências. A Cebraspe, conhecida por seu formato de questões "Certo ou Errado" onde uma resposta incorreta anula uma correta, exige não apenas conhecimento profundo, mas também estratégia e confiança na marcação das respostas.
Este guia abordará os tópicos mais recorrentes identificados em provas anteriores 2, fornecerá explicações detalhadas, mecanismos didáticos para fixação do conteúdo, e uma análise prospectiva sobre temas emergentes que podem ganhar relevância em futuros certames.
1.1. A Importância da Análise de Dados no Contexto do TCU
O TCU, como órgão de controle externo, lida com vastos volumes de dados provenientes da administração pública. A capacidade de analisar esses dados eficientemente é vital para:
· Detectar fraudes, desperdícios e irregularidades.
· Avaliar a eficiência, eficácia e economicidade de políticas públicas.
· Fornecer subsídios para o aprimoramento da gestão pública.
· Aumentar a transparência e a accountability.
A IA, por exemplo, tem sido cada vez mais empregada para processar grandes volumes de dados em auditorias, identificar padrões e anomalias, e auxiliar na monitorização da conformidade com leis e regulamentos.3
1.2. A Banca Cebraspe e a Disciplina de Análise de Dados
A Cebraspe é conhecida por elaborar questões que exigem um entendimento conceitual sólido e capacidade de interpretação. No que tange à Análise de Dados, as questões frequentemente envolvem:
· Linguagens de Programação: Python e R são as mais proeminentes, com foco em suas bibliotecas para manipulação, análise e visualização de dados.
· Bibliotecas Específicas: Pandas, NumPy, Matplotlib, Scikit-learn em Python; dplyr, ggplot2 em R.
· Conceitos de Machine Learning: Tipos de aprendizado, algoritmos comuns, avaliação de modelos, overfitting/underfitting.
· Inteligência Artificial: Conceitos gerais, IA generativa, PLN, Visão Computacional.
A estratégia de prova para a Cebraspe é um diferencial. Dado o sistema de pontuação (uma errada anula uma certa), o candidato deve ter um alto grau de certeza ao marcar uma questão. Deixar questões em branco pode ser uma tática válida para aquelas sobre as quais não se tem segurança.5
2. Linguagem Python para Análise de Dados
Python consolidou-se como uma das linguagens mais populares para análise de dados devido à sua sintaxe clara, vasta quantidade de bibliotecas especializadas e uma comunidade ativa e robusta.6 Nas provas do Cebraspe, o conhecimento de Python abrange desde conceitos básicos até a aplicação de bibliotecas específicas para ciência de dados.2
2.1. Estruturas de Dados Fundamentais em Python
As estruturas de dados são formas de organizar e armazenar dados de maneira eficiente. Python oferece estruturas embutidas, divididas em mutáveis (podem ser alteradas após a criação) e imutáveis.8
· Listas (list):
· Definição: Coleções ordenadas e mutáveis de itens, que podem ser de tipos diferentes (heterogêneos).8 São delimitadas por colchetes ``.
· Características: Indexadas (primeiro elemento no índice 0), permitem duplicatas, dinâmicas em tamanho.
· Operações Comuns (Métodos):
· append(x): Adiciona x ao final da lista.102
· extend(iterável): Adiciona todos os itens de um iterável ao final da lista.102
· insert(i, x): Insere x na posição i.10
· remove(x): Remove o primeiro item com valor x.10
· pop([i]): Remove e retorna o item na posição i (ou o último, se i não for especificado).10
· index(x): Retorna o índice da primeira ocorrência de x.10
· count(x): Retorna o número de vezes que x aparece.10
· sort(): Ordena a lista in-place.102
· reverse(): Reverte a lista in-place.10
· copy(): Retorna uma cópia rasa (shallow copy) da lista.102
· Slicing (Fatiamento): Acesso a sublistas usando lista[start:stop:step]. O elemento em stop não é incluído.82
· Mutabilidade: Listas podem ser alteradas após a criação, o que significa que a quantidade de objetos pode ser alterada dinamicamente, não apenas durante a criação.2 Listas podem conter qualquer tipo de objeto, incluindo outras listas, permitindo estruturas aninhadas.2
· Listas como Pilhas e Filas: Listas podem ser usadas como pilhas (LIFO - Last-In, First-Out) com append() e pop(). Para filas (FIFO - First-In, First-Out), collections.deque é mais eficiente que listas para inserções e remoções no início.10
· Questões Cebraspe: Q1, Q6, Q9, Q12, Q19, Q20, Q51, Q54, Q62, Q65.2
· Tuplas (tuple):
· Definição: Coleções ordenadas e imutáveis de itens, que podem ser de tipos diferentes.8 São delimitadas por parênteses ().
· Características: Indexadas, permitem duplicatas. Uma vez criadas, não podem ser modificadas (adição, remoção ou alteração de elementos).82
· Uso: Ideais para representar coleções de itens que não devem mudar, como coordenadas, registros de banco de dados, etc.
· Desempacotamento (Unpacking): Permite atribuir os itens de uma tupla a variáveis individuais.13
· Questões Cebraspe: Q25, Q50, Q53, Q64, Q69.2 A questão Q64, por exemplo, afirma que tuplas são limitadas a cinco níveis, o que é incorreto; tuplas podem ser aninhadas sem um limite específico de níveis, similarmente a listas.
· Dicionários (dict):
· Definição: Coleções mutáveis e não ordenadas (em versões do Python anteriores à 3.7; a partir da 3.7, são ordenadas pela ordem de inserção) de pares chave-valor.8 Delimitados por chaves {}.
· Características: Chaves devem ser únicas e imutáveis (strings, números, tuplas contendo apenas imutáveis). Valores podem ser de qualquer tipo e duplicados.
· Operações Comuns (Métodos):
· get(chave[, padrão]): Retorna o valor para a chave, ou padrão se a chave não existir.
· keys(): Retorna uma visão das chaves.
· values(): Retorna uma visão dos valores.9
· items(): Retorna uma visão dos pares (chave, valor).14
· pop(chave[, padrão]): Remove e retorna o valor da chave.9
· update(outro_dict): Atualiza o dicionário com pares de outro dicionário.9
· dict.fromkeys(iteravel[, valor]): Cria um novo dicionário com chaves de um iterável e valores definidos.92
· Questões Cebraspe: Q12, Q27, Q53, Q66.2
· Conjuntos (set):
· Definição: Coleções mutáveis e não ordenadas de itens únicos e imutáveis.8 Delimitados por chaves {} ou criados com set(). Um conjunto vazio deve ser criado com set(), pois {} cria um dicionário vazio.16
· Características: Não permitem elementos duplicados. Úteis para operações matemáticas de conjuntos.
· Operações Comuns (Métodos e Operadores):
· add(elem): Adiciona um elemento.9
· remove(elem): Remove um elemento; gera erro se não existir.15
· discard(elem): Remove um elemento se presente; não gera erro se não existir.9
· pop(): Remove e retorna um elemento arbitrário.9
· union() ou |: União de conjuntos.9
· intersection() ou &: Interseção de conjuntos.15
· difference() ou -: Diferença de conjuntos.15
· symmetric_difference() ou ^: Diferença simétrica.15
· Questões Cebraspe: Q53, Q55.2
Tabela Didática 1: Estruturas de Dados Python Essenciais
Característica
Lista (list)
Tupla (tuple)
Dicionário (dict)
Conjunto (set)
Definição
Coleção ordenada e mutável
Coleção ordenada e imutável
Coleção de pares chave-valor, mutável, ordenada (Python 3.7+)
Coleção não ordenada e mutável de itens únicos
Sintaxe
[1, 'a', 2.0]
(1, 'a', 2.0)
{'chave1': valor1, 'chave2': valor2}
{1, 'a', 2.0} ou set()
Mutabilidade
Mutável
Imutável
Mutável
Mutável
Ordenação
Ordenada
Ordenada
Ordenada por inserção (Python 3.7+)
Não ordenada
Elementos
Podem ser de tipos diferentes
Podem ser de tipos diferentes
Valores de qualquer tipo; Chaves imutáveis e únicas
Itens imutáveis e únicos
Indexação
Por posição inteira (0, 1,...)
Por posição inteira (0, 1,...)de valores.
· Variáveis Qualitativas: São definidas por categorias.2 Podem ser:
· Nominais: Categorias sem ordem intrínseca (e.g., cor, tipo sanguíneo).
· Ordinais: Categorias com uma ordem significativa (e.g., nível de escolaridade, tamanho de roupa).2
· Matching de Dados (Record Linkage): Processo de identificação de registros que se referem à mesma entidade em diferentes fontes de dados ou dentro da mesma fonte.2
5.5. Redução de Dimensionalidade
Técnicas para reduzir o número de variáveis (features) em um conjunto de dados, mantendo o máximo de informação relevante possível. É útil para:
· Combater a "maldição da dimensionalidade" (onde muitos algoritmos se tornam ineficientes ou menos eficazes com um grande número de features).126
· Reduzir a complexidade computacional.
· Remover ruído e redundância.
· Facilitar a visualização de dados de alta dimensão. A questão Q3
Referências citadas
1. One wrong answer cancels one correct answer (cebraspe) : r/concursospublicos - Reddit, acessado em junho 2, 2025, https://www.reddit.com/r/concursospublicos/comments/1izhzex/uma_errada_anula_uma_certa_cebraspe/?tl=en
2. Análise de Dados 3.pdf
3. Artificial Intelligence in Government Auditing – Benefits and Challenges - Williams Adley, acessado em junho 2, 2025, https://www.williamsadley.com/news-and-insights/2025/3/6/artificial-intelligence-in-the-world-of-government-auditing-in-the-21st-century
4. Leveraging AI to enhance public sector audits: early detection of risks, acessado em junho 2, 2025, https://www.government-transformation.com/data/public-sector-accountability-spotting-early-warning-signs-for-better-outcomes
5. Cebraspe Guessing Technique : r/concursospublicos - Reddit, acessado em junho 2, 2025, https://www.reddit.com/r/concursospublicos/comments/1jbat8j/tecnica_do_chute_cebraspe/?tl=en
6. Spyder: Everything you need to know about the Python IDE for Data Science - DataScientest, acessado em junho 2, 2025, https://datascientest.com/en/spyder-everything-you-need-to-know-about-the-python-ide-for-data-science
7. StatsModel Library- Tutorial | GeeksforGeeks, acessado em junho 2, 2025, https://www.geeksforgeeks.org/statsmodel-library-tutorial/
8. Python Data Structures: Lists, Dictionaries, Sets, Tuples - Dataquest, acessado em junho 2, 2025, https://www.dataquest.io/blog/data-structures-in-python/
9. 11 Types Of Python Data Structures For Data Analysis - Airbyte, acessado em junho 2, 2025, https://airbyte.com/data-engineering-resources/python-data-structures
10. 5. Data Structures — Python 3.13.3 documentation, acessado em junho 2, 2025, https://docs.python.org/3/tutorial/datastructures.html
11. Working with Lists — Python Beginners documentation - Read the Docs, acessado em junho 2, 2025, https://python-adv-web-apps.readthedocs.io/en/latest/lists.html
12. Python Numpy Tutorial (with Jupyter and Colab), acessado em junho 2, 2025, https://cs231n.github.io/python-numpy-tutorial/
13. Tuples in Python (Examples and Practice) - CodeChef, acessado em junho 2, 2025, https://www.codechef.com/blogs/tuples-in-python
14. Dictionaries — Python Beginners documentation - Read the Docs, acessado em junho 2, 2025, https://python-adv-web-apps.readthedocs.io/en/latest/dicts.html
15. Python Set Operations (Union, Intersection, Difference and Symmetric Difference) | GeeksforGeeks, acessado em junho 2, 2025, https://www.geeksforgeeks.org/python-set-operations-union-intersection-difference-symmetric-difference/
16. Introduction to Python Sets and Python Set Operations | Linode Docs, acessado em junho 2, 2025, https://www.linode.com/docs/guides/python-sets/
17. Python for Data 11: Control Flow - Kaggle, acessado em junho 2, 2025, https://www.kaggle.com/code/hamelg/python-for-data-11-control-flow
18. Control Flow | Data Science with Python - Mark Soro, acessado em junho 2, 2025, https://m-soro.github.io/Data-Science-with-Python/Modules/control-flow.html
19. 12 Python Built-In Functions for Data Science and Analytics - Deepnote, acessado em junho 2, 2025, https://deepnote.com/@code-along-tutorials/12-Python-Built-In-Functions-for-Data-Science-and-Analytics-a7acf06e-aaaf-4ff7-a6d7-09c970cb8267
20. Python for Data Analytics: Functions Cheatsheet - Codecademy, acessado em junho 2, 2025, https://www.codecademy.com/learn/cfb-python-for-data-analytics/modules/learn-python3-functions/cheatsheet
21. Recursion in Python: Concepts, Examples, and Tips - DataCamp, acessado em junho 2, 2025, https://www.datacamp.com/tutorial/recursion-in-python
22. Object Oriented Programming for Data Science - Noble Desktop, acessado em junho 2, 2025, https://www.nobledesktop.com/classes-near-me/blog/object-oriented-programming-for-data-science
23. Object-Oriented Programming (OOP) in Python – Real Python, acessado em junho 2, 2025, https://realpython.com/python3-object-oriented-programming/
24. Object-Oriented Programming in Python (OOP): Tutorial | DataCamp, acessado em junho 2, 2025, https://www.datacamp.com/tutorial/python-oop-tutorial
25. Using Try-Except for Database Error Handling in Python - Index.dev, acessado em junho 2, 2025, https://www.index.dev/blog/python-database-error-handling-try-except
26. 8. Errors and Exceptions — Python 3.13.3 documentation, acessado em junho 2, 2025, https://docs.python.org/3/tutorial/errors.html
27. Regular Expression HOWTO — Python 3.13.3 documentation, acessado em junho 2, 2025, https://docs.python.org/3/howto/regex.html
28. Working with JSON in Python: A Beginner's Guide - Code Institute Global, acessado em junho 2, 2025, https://codeinstitute.net/global/blog/working-with-json-in-python/
29. json — JSON encoder and decoder — Python 3.13.3 documentation, acessado em junho 2, 2025, https://docs.python.org/3/library/json.html
30. Python deque tutorial - mathspp, acessado em junho 2, 2025, https://mathspp.com/blog/python-deque-tutorial
31. collections — Container datatypes — Python 3.13.3 documentation, acessado em junho 2, 2025, https://docs.python.org/3/library/collections.html#collections.deque
32. Typing in Python: everything you need to know - beecrowd, acessado em junho 2, 2025, https://beecrowd.com/blog-posts/typing-in-python/
33. How to leverage dynamic typing in Python - LabEx, acessado em junho 2, 2025, https://labex.io/tutorials/python-how-to-leverage-dynamic-typing-in-python-466980
34. If Python is interpreted, what are .pyc files? - Stack Overflow, acessado em junho 2, 2025, https://stackoverflow.com/questions/2998215/if-python-is-interpreted-what-are-pyc-files
35. What Is The Difference Between .Py And .Pyc Files? | GeeksforGeeks, acessado em junho 2, 2025, https://www.geeksforgeeks.org/what-is-the-difference-between-py-and-pyc-files/
36. PEP 8 - Codefinity, acessado em junho 2, 2025, https://codefinity.com/blog/PEP-8
37. Clean Code Syntax for Python: Introduction to PEP 8 Style Guide ..., acessado em junho 2, 2025, https://www.earthdatascience.org/courses/intro-to-earth-data-science/write-efficient-python-code/intro-to-clean-code/python-pep-8-style-guide/
38. A Guide to Formatting with f-strings in Python - CIS Sandbox, acessado em junho 2, 2025, http://cissandbox.bentley.edu/sandbox/wp-content/uploads/2022-02-10-Documentation-on-f-strings-Updated.pdf
39. 7. Input and Output — Python 3.13.3 documentation, acessado em junho 2, 2025, https://docs.python.org/3/tutorial/inputoutput.html
40. spyder-ide/spyder: Official repository for Spyder - The ... - GitHub, acessado em junho 2, 2025, https://github.com/spyder-ide/spyder
41. Spyder | The Python IDE that scientists and data analysts deserve, acessado em junho 2, 2025, https://www.spyder-ide.org/
42. Data Science: R Basics | Harvard University, acessado em junho 2, 2025, https://pll.harvard.edu/course/data-science-r-basics
43. Basics of R for Data Analysis, acessado em junho 2, 2025, https://www.data-action-lab.com/wp-content/uploads/2018/10/DSRS_BR.pdf
44. R Tutorial | Learn R Programming Language | GeeksforGeeks, acessado em junho 2, 2025, https://www.geeksforgeeks.org/r-tutorial/
45. Data structures · Advanced R., acessado em junho 2, 2025, http://adv-r.had.co.nz/Data-structures.html46. Data Types in R - DataCamp, acessado em junho 2, 2025, https://www.datacamp.com/doc/r/datatypes
47. Basic Data Structures in R: Vectors, Matrices, and Data Frames - R-bloggers, acessado em junho 2, 2025, https://www.r-bloggers.com/2025/01/basic-data-structures-in-r-vectors-matrices-and-data-frames/
48. data.frame function - RDocumentation, acessado em junho 2, 2025, https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/data.frame
49. 5 Control flow | Advanced R, acessado em junho 2, 2025, https://adv-r.hadley.nz/control-flow.html
50. Control Flow in R, acessado em junho 2, 2025, https://resbaz.github.io/2014-r-materials/lessons/30-control-flow/
51. How to Use If-Else Statements and Loops in R - Dataquest, acessado em junho 2, 2025, https://www.dataquest.io/blog/control-structures-in-r-using-loops-and-if-else-statements/
52. 19 Functions - R for Data Science - Hadley Wickham, acessado em junho 2, 2025, https://r4ds.had.co.nz/functions.html
53. Functions in R | Introduction to R - ARCHIVED - GitHub Pages, acessado em junho 2, 2025, https://hbctraining.github.io/Intro-to-R/lessons/03_introR-functions-and-arguments.html
54. R Functions - Tutorialspoint, acessado em junho 2, 2025, https://www.tutorialspoint.com/r/r_functions.htm
55. A Grammar of Data Manipulation • dplyr, acessado em junho 2, 2025, https://dplyr.tidyverse.org/
56. R for life sciences. Chapter 7, dplyr and tidyr: tidyverse packages to manage data - UPV, acessado em junho 2, 2025, https://personales.upv.es/algarsal/R-tutorials/07_Tutorial-7_R-dplyr-tidyr.html
57. ggplot tutorial - Maloof Lab, acessado em junho 2, 2025, https://malooflab.ucdavis.edu/apps/ggplot-tutorial/
58. Introduction to ggplot2 • ggplot2, acessado em junho 2, 2025, https://ggplot2.tidyverse.org/articles/ggplot2.html
59. ggplot2 package - RDocumentation, acessado em junho 2, 2025, https://www.rdocumentation.org/packages/ggplot2/versions/3.5.2
60. Read contents of a CSV File in R Programming – read.csv ..., acessado em junho 2, 2025, https://www.geeksforgeeks.org/read-contents-of-a-csv-file-in-r-programming-read-csv-function/
61. R Read CSV file (with Examples) - Learn-R.org, acessado em junho 2, 2025, https://www.learn-r.org/r-tutorial/read-csv.php
62. NumPy quickstart — NumPy v2.4.dev0 Manual, acessado em junho 2, 2025, https://numpy.org/devdocs//user/quickstart.html
63. the absolute basics for beginners — NumPy v2.4.dev0 Manual, acessado em junho 2, 2025, https://numpy.org/devdocs//user/absolute_beginners.html
64. NumPy user guide — NumPy v2.2 Manual, acessado em junho 2, 2025, https://numpy.org/doc/stable/user/index.html
65. Array manipulation routines — NumPy v2.2 Manual, acessado em junho 2, 2025, https://numpy.org/doc/2.2/reference/routines.array-manipulation.html
66. Broadcasting — NumPy v2.4.dev0 Manual, acessado em junho 2, 2025, https://numpy.org/devdocs//user/basics.broadcasting.html
67. Broadcasting — NumPy v1.10 Manual, acessado em junho 2, 2025, https://docs.scipy.org/doc/numpy-1.10.1/user/basics.broadcasting.html
68. numpy.average — NumPy v2.1 Manual, acessado em junho 2, 2025, https://numpy.org/doc/2.1/reference/generated/numpy.average.html
69. Statistics — NumPy v2.2 Manual, acessado em junho 2, 2025, https://numpy.org/doc/stable/reference/routines.statistics.html
70. statistics — Mathematical statistics functions — Python 3.13.3 documentation, acessado em junho 2, 2025, https://docs.python.org/3/library/statistics.html
71. Linear algebra (numpy.linalg) — NumPy v2.2 Manual, acessado em junho 2, 2025, https://numpy.org/doc/2.2/reference/routines.linalg.html
72. numpy.linalg.norm — NumPy v2.1 Manual, acessado em junho 2, 2025, https://numpy.org/doc/2.1/reference/generated/numpy.linalg.norm.html
73. Pandas Tutorial | GeeksforGeeks, acessado em junho 2, 2025, https://www.geeksforgeeks.org/pandas-tutorial/
74. User Guide — pandas 2.2.3 documentation, acessado em junho 2, 2025, https://pandas.pydata.org/docs/user_guide/index.html
75. Pandas Tutorial: DataFrames in Python - DataCamp, acessado em junho 2, 2025, https://www.datacamp.com/tutorial/pandas-tutorial-dataframe-python
76. pandas.Series — pandas 2.2.3 documentation, acessado em junho 2, 2025, https://pandas.pydata.org/docs/reference/api/pandas.Series.html
77. pandas.read_csv — pandas 2.0.3 documentation, acessado em junho 2, 2025, https://pandas.pydata.org/pandas-docs/version/2.0/reference/api/pandas.read_csv.html
78. General functions — pandas 2.2.3 documentation, acessado em junho 2, 2025, https://pandas.pydata.org/docs/reference/general_functions.html
79. pandas.DataFrame.groupby — pandas 2.2.3 documentation, acessado em junho 2, 2025, https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.groupby.html
80. Pyplot tutorial — Matplotlib 3.10.3 documentation, acessado em junho 2, 2025, https://matplotlib.org/stable/tutorials/pyplot.html
81. Matplotlib Tutorial - GeeksforGeeks, acessado em junho 2, 2025, https://www.geeksforgeeks.org/matplotlib-tutorial/
82. Introduction to Matplotlib - GeeksforGeeks, acessado em junho 2, 2025, https://www.geeksforgeeks.org/python-introduction-matplotlib/
83. Tutorials — Matplotlib 3.10.3 documentation, acessado em junho 2, 2025, https://matplotlib.org/stable/tutorials/index.html
84. Introduction to Scikit-Learn For Beginners | Zero To Mastery, acessado em junho 2, 2025, https://zerotomastery.io/blog/how-to-use-scikit-learn/
85. 4.3. Preprocessing data — scikit-learn 0.19.2 documentation, acessado em junho 2, 2025, https://scikit-learn.org/0.19/modules/preprocessing.html
86. 3.4. Metrics and scoring: quantifying the quality of predictions ..., acessado em junho 2, 2025, https://scikit-learn.org/stable/modules/model_evaluation.html
87. 6.3. Preprocessing data — scikit-learn 1.6.1 documentation, acessado em junho 2, 2025, https://scikit-learn.org/stable/modules/preprocessing.html
88. 3.6. scikit-learn: machine learning in Python — Scipy lecture notes, acessado em junho 2, 2025, https://scipy-lectures.org/packages/scikit-learn/index.html
89. Scikit-Learn - Weights & Biases Documentation - Wandb, acessado em junho 2, 2025, https://docs.wandb.ai/guides/integrations/scikit/
90. How to Set Up Your First Machine Learning Pipeline Using Scikit ..., acessado em junho 2, 2025, https://www.kdnuggets.com/how-to-first-machine-learning-pipeline-using-scikit-learn
91. What is exactly sklearn.pipeline.Pipeline? - GeeksforGeeks, acessado em junho 2, 2025, https://www.geeksforgeeks.org/what-is-exactly-sklearnpipelinepipeline/
92. Constants (scipy.constants) — SciPy v1.12.0 Manual, acessado em junho 2, 2025, https://docs.scipy.org/doc/scipy-1.12.0/reference/constants.html
93. Constants (scipy.constants) — SciPy v1.15.3 Manual, acessado em junho 2, 2025, https://docs.scipy.org/doc/scipy/reference/constants.html
94. differential_evolution — SciPy v1.15.3 Manual, acessado em junho 2, 2025, https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.differential_evolution.html
95. scipy/scipy/optimize/_minimize.py at main - GitHub, acessado em junho 2, 2025, https://github.com/scipy/scipy/blob/main/scipy/optimize/_minimize.py
96. Statsmodels - Python - Codecademy, acessado em junho 2, 2025, https://www.codecademy.com/resources/docs/python/statsmodels
97. Home - Keras Documentation, acessado em junho 2, 2025, https://faroit.com/keras-docs/1.2.0/
98. Module: tf.keras | TensorFlow v2.16.1, acessado em junho 2, 2025, https://www.tensorflow.org/api_docs/python/tf/keras
99. Convolutional Neural Network (CNN) | TensorFlow Core, acessado em junho 2, 2025, https://www.tensorflow.org/tutorials/images/cnn
100. Convolutional Neural Network (CNN) in Tensorflow - GeeksforGeeks, acessado em junho 2, 2025, https://www.geeksforgeeks.org/convolutional-neural-network-cnn-in-tensorflow/
101. Image Classification Using CNN with Keras and CIFAR-10 - Analytics Vidhya, acessado em junho 2, 2025, https://www.analyticsvidhya.com/blog/2021/01/image-classification-using-convolutional-neural-networks-a-step-by-step-guide/
102. spaCy Tutorial to Learn and Master Natural ... - Analytics Vidhya,acessado em junho 2, 2025, https://www.analyticsvidhya.com/blog/2020/03/spacy-tutorial-learn-natural-language-processing/
103. Tokenization Using Spacy | GeeksforGeeks, acessado em junho 2, 2025, https://www.geeksforgeeks.org/tokenization-using-spacy-library/
104. Python Pingouin: Mastering the Wilcoxon Signed Rank Test Tutorial - YouTube, acessado em junho 2, 2025, https://www.youtube.com/watch?v=cXRNVrUAOl8
105. How to easily perform statistical analysis in Python with the Pengouin library - YouTube, acessado em junho 2, 2025, https://www.youtube.com/watch?v=zqi51Wu5qC0
106. Functions — pingouin 0.5.5 documentation, acessado em junho 2, 2025, https://pingouin-stats.org/build/html/api.html
107. acessado em dezembro 31, 1969, https://www.tableau.com/learn/articles/data-analytics-types
108. Streamlit • A faster way to build and share data apps, acessado em junho 2, 2025, https://streamlit.io/
109. Tutorials - Streamlit Docs, acessado em junho 2, 2025, https://docs.streamlit.io/develop/tutorials
110. Exploring Natural Language Processing Techniques - Coursera, acessado em junho 2, 2025, https://www.coursera.org/articles/natural-language-processing-techniques
111. What is Natural Language Processing (NLP)? A Beginner's Guide - DataCamp, acessado em junho 2, 2025, https://www.datacamp.com/blog/what-is-natural-language-processing
112. What is Retrieval Augmented Generation (RAG)? - Confluent, acessado em junho 2, 2025, https://www.confluent.io/learn/retrieval-augmented-generation-rag/
113. RAG GenAI: Why retrieval-augmented generation is key to generative AI - K2view, acessado em junho 2, 2025, https://www.k2view.com/blog/rag-genai/
114. What Is Retrieval-Augmented Generation aka RAG | NVIDIA Blogs, acessado em junho 2, 2025, https://blogs.nvidia.com/blog/what-is-retrieval-augmented-generation/
115. A marketer's guide to descriptive, predictive, diagnostic, and prescriptive analytics., acessado em junho 2, 2025, https://business.adobe.com/blog/basics/descriptive-predictive-prescriptive-analytics-explained
116. The 4 Types of Data Analysis [Ultimate Guide] - CareerFoundry, acessado em junho 2, 2025, https://careerfoundry.com/en/blog/data-analytics/different-types-of-data-analysis/
117. acessado em dezembro 31, 1969, https://www.coursera.org/articles/types-of-data-analytics
118. 2. Unsupervised learning — scikit-learn 1.4.2 documentation, acessado em junho 2, 2025, https://scikit-learn.org/1.4/unsupervised_learning.html
119. What is Overfitting? - Overfitting in Machine Learning Explained - AWS, acessado em junho 2, 2025, https://aws.amazon.com/what-is/overfitting/
120. What Is Overfitting vs. Underfitting? - IBM, acessado em junho 2, 2025, https://www.ibm.com/think/topics/overfitting-vs-underfitting
121. Bias–Variance Tradeoff in Machine Learning: Concepts & Tutorials – BMC Software | Blogs, acessado em junho 2, 2025, https://www.bmc.com/blogs/bias-variance-machine-learning/
122. Bias–variance tradeoff - Wikipedia, acessado em junho 2, 2025, https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff
123. Best mnemonic device to remember confusion matrix metrics? : r/datascience - Reddit, acessado em junho 2, 2025, https://www.reddit.com/r/datascience/comments/1ajo3a4/best_mnemonic_device_to_remember_confusion_matrix/
124. Machine Learning Glossary - Google for Developers, acessado em junho 2, 2025, https://developers.google.com/machine-learning/glossary
125. Implementing PCA in Python with scikit-learn - GeeksforGeeks, acessado em junho 2, 2025, https://www.geeksforgeeks.org/implementing-pca-in-python-with-scikit-learn/
126. Introduction to Dimensionality Reduction | GeeksforGeeks, acessado em junho 2, 2025, https://www.geeksforgeeks.org/dimensionality-reduction/Por chave
Não suporta indexação direta
Uso Comum
Sequências de itens que podem mudar
Sequências fixas, registros
Mapeamento de chaves para valores, dados estruturados
Teste de pertencimento, remover duplicatas
Métodos Chave
append(), pop(), sort()
count(), index()
keys(), values(), items(), get(), pop()
add(), remove(), union(), intersection()
Questões Cebraspe (Exemplos)
Q1, Q6, Q9, Q51, Q65 2
Q25, Q50, Q69 2
Q12, Q27, Q53, Q66 2
Q53, Q55 2
2.2. Fluxo de Controle em Python
As estruturas de controle alteram a ordem de execução das instruções em um programa.17
· Declarações Condicionais (if, elif, else):
· Executam blocos de código com base em condições booleanas (True ou False).17
· A indentação é crucial em Python para definir os blocos de código.2
· if condicao1: # bloco se condicao1 for verdadeira
· elif condicao2: # bloco se condicao1 for falsa e condicao2 verdadeira
· else: # bloco se todas as condições anteriores forem falsas
· Questões Cebraspe: Q11, Q19, Q22, Q71.2
· Laços de Repetição (for, while):
· for loop: Itera sobre os itens de qualquer sequência (uma lista, uma string, uma tupla) ou outro objeto iterável, na ordem em que aparecem na sequência.17
· for item in iteravel: # bloco executado para cada item
· range(start, stop, step): Frequentemente usado com for para gerar sequências numéricas.2
· range(3, 9) produzirá os números 3, 4, 5, 6, 7, 8.2
· enumerate(): Usado para iterar sobre um iterável e obter tanto o índice quanto o valor de cada item.122
· while loop: Executa um bloco de código enquanto uma condição for verdadeira.17
· while condicao: # bloco executado enquanto condicao for verdadeira
· Controle de Laços:
· break: Interrompe a execução do laço mais interno.17
· continue: Pula para a próxima iteração do laço mais interno.17
· pass: É uma operação nula; nada acontece quando executada. Usada como placeholder.2
· Questões Cebraspe: Q10, Q22, Q24, Q29.2
Tabela Didática 2: Comandos Essenciais de Fluxo de Controle em Python
Comando
Descrição
Exemplo de Sintaxe Simples
Questão Cebraspe Relevante
if
Executa um bloco de código se uma condição é verdadeira.
if x > 0: print("Positivo")
Q19, Q71 2
elif
Usado após um if para testar outra condição se a anterior for falsa.
elif xJSON (JavaScript Object Notation) é um formato leve de intercâmbio de dados, fácil para humanos lerem e escreverem, e fácil para máquinas parsearem e gerarem.28
· Mapeamento Python para JSON:
· Python dict -> JSON object
· Python list, tuple -> JSON array
· Python str -> JSON string
· Python int, float -> JSON number
· Python True -> JSON true
· Python False -> JSON false
· Python None -> JSON null
· Funções Principais:
· json.dumps(obj): Serializa um objeto Python obj para uma string formatada em JSON.28
· json.loads(s): Desserializa uma string s (contendo um documento JSON) para um objeto Python.282
· json.dump(obj, fp): Serializa obj como um fluxo formatado em JSON para um objeto tipo arquivo fp (suporta .write()).28
· json.load(fp): Desserializa fp (um objeto tipo arquivo .read()-supporting contendo um documento JSON) para um objeto Python.28 (Q44 - json.loads() lê de string, json.load() lê de arquivo, a questão Q44 afirma que json.loads() lê de arquivo, o que é incorreto).
· Questões Cebraspe: Q44, Q66 2, Q145 (jsonlite em R).
2.8. Módulo collections (Foco em deque)
O módulo collections implementa tipos de dados de contêineres especializados.
· collections.deque: Lista generalizada de pilhas e filas, otimizada para apensar e remover elementos de ambas as extremidades (operações O(1)).10
· Criação: deque([iteravel], maxlen=None).30
· Métodos comuns:
· append(x): Adiciona x à direita.10
· appendleft(x): Adiciona x à esquerda.10
· pop(): Remove e retorna elemento da direita.10
· popleft(): Remove e retorna elemento da esquerda.10
· extend(iteravel): Estende a direita.30
· extendleft(iteravel): Estende a esquerda (elementos são adicionados na ordem inversa do iterável).30
· rotate(n): Rotaciona o deque n passos para a direita (se n for negativo, para a esquerda).30
· maxlen: Se especificado, o deque é limitado a este tamanho. Quando cheio, adicionar de um lado remove do outro.30
· Questão Cebraspe: Q32.2
2.9. Outros Conceitos Python Relevantes em Análise de Dados
· Tipagem Dinâmica: O tipo de uma variável é verificado durante a execução, e não em tempo de compilação. Variáveis em Python podem mudar de tipo.2
· Arquivos .pyc: Arquivos Python compilados (bytecode). Gerados pelo interpretador para acelerar o carregamento de módulos, não para combinar código Python e C.2
· Nomenclatura de Variáveis (PEP 8):
· Variáveis e funções: snake_case (minúsculas com underscores).362
· Classes: CamelCase (ou CapsCase).37
· Constantes: MAIUSCULAS_COM_UNDERSCORES.
· Nomes de variáveis não podem começar com números.2 Espaços não são permitidos em nomes de variáveis; underscores são usados.2
· Formatação de Strings:
· f-strings (Formatted String Literals): Introduzidas no Python 3.6, oferecem uma maneira concisa e conveniente de embutir expressões dentro de strings literais para formatação.38 Ex: f"Meu nome é {nome}". 2
· Método str.format(): Outra forma de formatar strings, mais antiga mas ainda útil.39 Ex: "Meu nome é {}".format(nome). 2
· Spyder IDE: Um ambiente de desenvolvimento integrado (IDE) científico escrito em Python, para Python, e projetado para cientistas, engenheiros e analistas de dados.6 Oferece editor avançado, console IPython interativo, explorador de variáveis, depurador, etc..40 A questão Q5 2 afirma que Spyder é uma IDE genérica sem foco específico, o que é incorreto, pois tem forte foco em ciência de dados.6
3. Linguagem R para Análise de Dados
R é uma linguagem e ambiente para computação estatística e gráficos, amplamente utilizada por estatísticos e analistas de dados.42 É conhecida por sua expressividade em manipulação de dados e pela vasta coleção de pacotes estatísticos e de visualização.
3.1. Estruturas de Dados Fundamentais em R
R possui diversas estruturas de dados, cada uma com suas particularidades.43
· Vetores (vector):
· Definição: A estrutura de dados mais básica em R. Coleção ordenada de elementos do mesmo tipo (homogêneos).43
· Tipos Atômicos Comuns: logical (TRUE, FALSE), integer (1L, 2L), double (ou numeric, para números reais), character ("a", "texto").45
· Criação: Usando a função c() (combinar/concatenar). Ex: meu_vetorPara obter 16, seria (2+2)^2.
3.4. Comentários em R
Comentários em R são iniciados com o caractere #. Tudo após # em uma linha é ignorado pelo interpretador.2
3.5. Principais Pacotes para Análise de Dados em R
· dplyr (Parte do Tidyverse):
· Fornece uma gramática de manipulação de dados, com verbos consistentes para as operações mais comuns em data frames.55
· Verbos Principais:
· select(): Seleciona colunas. 2
· filter(): Filtra linhas com base em condições. 2
· mutate(): Cria novas colunas ou modifica existentes. 2
· arrange(): Ordena linhas. 2
· summarise() (ou summarize()): Agrega dados (e.g., calcula média, soma por grupo).
· group_by(): Agrupa o data frame por uma ou mais variáveis para operações subsequentes.
· Operador Pipe (%>% ou |>): Permite encadear operações de forma legível, passando o resultado da operação anterior como primeiro argumento da próxima..562
· Questões Cebraspe: Q118, Q137, Q148, Q150 (drop_na() é do tidyr, na.omit() é base R, mas ambas removem NAs), Q151, Q152.2
· ggplot2 (Parte do Tidyverse):
· Sistema poderoso e flexível para criar gráficos declarativamente, baseado na "Gramática dos Gráficos".57
· Componentes Principais:
· data: O data frame contendo os dados.
· aes() (aesthetic mappings): Mapeia variáveis dos dados a atributos visuais (e.g., x, y, color, size, shape, fill).
· geom_*() (geometric objects): Define o tipo de gráfico (e.g., geom_point() para dispersão, geom_line() para linhas, geom_bar() ou geom_col() para barras, geom_histogram() para histogramas, geom_density() para densidade, geom_boxplot() para boxplots, geom_errorbar() para barras de erro).57
· labs(): Para adicionar títulos, legendas de eixos, etc.
· theme(): Para customizar a aparência do gráfico.58
· facet_wrap() ou facet_grid(): Para criar múltiplos painéis (subgráficos) baseados em níveis de uma ou mais variáveis categóricas.58
· Questões Cebraspe: Q31, Q79, Q122 (Q-Q plot com qqnorm e qqline são base R, mas o conceito de visualização é relevante), Q156, Q157, Q158, Q159.2
· readr (Parte do Tidyverse):
· Para leitura rápida e eficiente de arquivos de dados retangulares, como CSV (read_csv()) e TSV (read_tsv()).56
· A função base R read.csv() também é muito utilizada.60
· Parâmetros importantes para read.csv() (base R) e read_csv() (readr) incluem file, header, sep (delimitador), dec (decimal), colClasses (tipos de colunas), skip (pular linhas), na.strings (valores NA).60
· Questões Cebraspe: Q124, Q125, Q126, Q127.2
· jsonlite:
· Para trabalhar com dados JSON em R, convertendo de/para listas R e data frames.2
· Funções chave: fromJSON() (converte JSON para objeto R) e toJSON() (converte objeto R para JSON).
· Questão Cebraspe: Q145.2
Tabela Didática 4: Comandos Equivalentes Python (Pandas) vs. R (dplyr) para Manipulação de Dados
Operação de Manipulação de Dados
Python (Pandas)
R (dplyr)
Selecionar Colunas
df[['col1', 'col2']] ou df.loc[:, ['col1', 'col2']]
select(df, col1, col2) ou df %>% select(col1, col2)
Filtrar Linhas
df[df['col1'] > 10]
filter(df, col1 > 10) ou df %>% filter(col1 > 10)
Criar Nova Coluna
df['nova_col'] = df['col1'] * 2
mutate(df, nova_col = col1 * 2) ou df %>% mutate(nova_col = col1 * 2)
Agrupar Dados
df.groupby('col_grupo')
group_by(df, col_grupo) ou df %>% group_by(col_grupo)
Sumarizar Dados Agrupados
grouped_df.agg({'col_valor': 'mean'})
summarise(grouped_df, media_valor = mean(col_valor)) ou grouped_df %>% summarise(media_valor = mean(col_valor))
Ordenar Dados
df.sort_values(by='col1', ascending=False)
arrange(df, desc(col1)) ou df %>% arrange(desc(col1))
Juntar DataFrames (Inner Join)
pd.merge(df1, df2, on='chave', how='inner')
inner_join(df1, df2, by='chave')
4. Principais Bibliotecas para Análise de Dados (Detalhado)
Além dos fundamentos das linguagens Python e R, o domínio de suas bibliotecas especializadas é essencial para a análise de dados.
4.1. Python
4.1.1. NumPy (Numerical Python)
NumPy é o pacote fundamental para computação científica em Python. Ele fornece suporte para arrays multidimensionais grandes e eficientes, juntamente com uma coleção de rotinas para processá-los.62
· Arrays NumPy (ndarray):
· Criação: np.array(), np.zeros(), np.ones(), np.arange(), np.linspace().9 Por exemplo, np.array([3, 4, 8, 5, -2]) cria um array a partir de uma lista Python.2 np.arange(0, 2, 0.3) cria um array com valores de 0 até (mas não incluindo) 2, com passo 0.3.62
· Atributos: ndarray.shape (retorna uma tupla com as dimensões do array), ndarray.dtype (descreve o tipo dos elementos no array), ndarray.ndim (número de dimensões).63
· Tipos de Dados (dtype): NumPy suporta uma variedade maior de tipos numéricos que o Python base, como int16, float32, complex64.62
· Indexação e Slicing:
· Semelhante às listas Python para arrays 1D. Para arrays multidimensionais, usa-se uma tupla de índices ou slices: arr[idx1, idx2,...].
· Indexação Booleana: Permite selecionar elementos de um array usando um array booleano da mesma forma. Ex: arr[arr > 0] seleciona todos os elementos positivos.12
· Operações Matemáticas Vetorizadas:
· Operações aritméticas (soma, subtração, multiplicação, divisão, exponenciação) são aplicadas elemento a elemento, sem a necessidade de loops explícitos em Python, o que é muito mais eficiente.63
· A questão Q4 2 pergunta se a expressão 34+8×5−2 pode ser encontrada por 3**4 + 8*5**num_lista. Se num_lista for -2, a expressão Python correta seria 3**4 + 8 * 5**(-2). A questão Q40 2 afirma que operações matemáticas complexas em vetores são possíveis nativamente sem importar bibliotecas; isso é parcialmente verdade para listas Python básicas com operadores simples, mas para operações vetoriais eficientes e complexas, NumPy é essencial.
· Broadcasting:
· Descreve como o NumPy trata arrays com formas diferentes durante operações aritméticas.66 Sujeito a certas restrições, o array menor é "esticado" (broadcast) através do array maior para que eles tenham formas compatíveis.
· Regras de Broadcasting:
1. Se os arrays não tiverem o mesmo número de dimensões, a forma do array com menos dimensões é preenchida com uns à sua esquerda.
2. Se a forma dos dois arrays não corresponder em alguma dimensão, o array com forma igual a 1 nessa dimensão é esticado para corresponder à outra forma.
3. Se em alguma dimensão os tamanhos discordarem e nenhum for igual a 1, um erro é levantado.
· Esquema Ilustrativo: Broadcasting no NumPy
Array A (2x3): [,
]
Array B (1x3): [] -> Broadcast para (2x3): [,
]
Resultado A+B: [[ 8, 10, 12],
]
Array C (2x1): [,
] -> Broadcast para (2x3): [,
]
Resultado A+C: [,
]
· A questão Q90 2 está correta ao afirmar que NumPy permite operações entre arrays de diferentes dimensões usando broadcasting.
· Funções Estatísticas:
· np.mean(arr, axis=None): Calcula a média aritmética.682
· np.median(arr, axis=None): Calcula a mediana.692
· np.std(arr, axis=None, ddof=0): Calcula o desvio padrão.692
· np.sum(arr, axis=None): Soma dos elementos.
· np.min(arr, axis=None), np.max(arr, axis=None): Mínimo e máximo.
· np.percentile(arr, q, axis=None): Calcula o q-ésimo percentil.692
· A questão Q87 2 está correta ao afirmar que um array NumPy permite obter dados de resumo estatístico por meio de seus métodos pré-definidos.
· Álgebra Linear (numpy.linalg):
· np.dot(a, b) ou a @ b: Produto escalar de vetores, multiplicação de matrizes.712
· np.linalg.det(a): Determinante de uma matriz.712
· np.linalg.inv(a): Inversa de uma matriz.71
· np.linalg.eig(a): Autovalores e autovetores.71
· np.linalg.norm(a, ord=None): Norma de um vetor ou matriz.71
· Manipulação de Arrays:
· reshape(nova_forma): Modifica a forma do array sem alterar seus dados.632
· ravel(), flatten(): Achatam o array para 1D.65
· transpose() ou .T: Transpõe o array (troca linhas por colunas).65
· concatenate((arr1, arr2,...), axis=0): Junta arrays ao longo de um eixo existente.652
· stack((arr1, arr2,...), axis=0):Junta arrays ao longo de um novo eixo.65
· vstack((arr1, arr2)), hstack((arr1, arr2)): Empilhamento vertical e horizontal.65
· split(arr, indices_ou_secoes, axis=0): Divide um array em sub-arrays.65
· unique(arr): Retorna os elementos únicos de um array.65
· A questão Q86 2 afirma que numpy.poly1d() permite a criação de arrays multidimensionais, o que é incorreto. np.poly1d() é usado para criar objetos polinomiais unidimensionais. Arrays multidimensionais são criados com np.array() ou outras funções de criação de array.
4.1.2. Pandas
Pandas é uma biblioteca de código aberto que fornece estruturas de dados de alto desempenho e fáceis de usar, além de ferramentas de análise de dados.73 É construída sobre o NumPy.
· Estruturas de Dados:
· Series: Array unidimensional rotulado, capaz de armazenar qualquer tipo de dado (inteiros, strings, floats, objetos Python, etc.).73 Pense nela como uma coluna em uma planilha.
· Criação: pd.Series(dados, index=indice). 2
· Métodos comuns: describe() (estatísticas descritivas), unique(), value_counts(), head(), tail(), isna(), fillna(), apply().9
· A questão Q91 2 testa o método describe() em uma Series, que retorna estatísticas como contagem, média, desvio padrão, mínimo, quartis e máximo.
· A questão Q102 2 descreve pandas.Series() como usado para criar e manipular matrizes coluna, e pandas.DataFrame() para matrizes multidimensionais. Embora uma Series possa ser vista como uma coluna, o termo "matriz coluna" é mais específico. DataFrame é, de fato, para dados tabulares multidimensionais (2D).
· DataFrame: Estrutura de dados tabular bidimensional, com eixos rotulados (linhas e colunas).73 Pode ser pensado como um dicionário de Series ou uma tabela SQL.
· Criação: A partir de dicionários de listas/Series, listas de dicionários, arrays NumPy, arquivos CSV, etc.
· Atributos: df.index, df.columns, df.dtypes, df.shape, df.values.
· A questão Q73 2 está correta ao afirmar que Pandas utiliza o DataFrame, uma estrutura bidimensional onde diversos métodos podem ser aplicados e que serve de base para outras estruturas. A questão Q88 2 também está correta ao dizer que Pandas apresenta dados em DataFrame, composto por linhas e colunas.
· Leitura e Escrita de Dados:
· pd.read_csv(caminho_arquivo, sep=',', header=0, index_col=None, usecols=None, dtype=None, na_values=None, skiprows=None, nrows=None): Lê um arquivo CSV para um DataFrame.77
· sep ou delimiter: Especifica o delimitador.
· header: Linha(s) a serem usadas como nomes de colunas.
· names: Lista de nomes de colunas a serem usados.
· index_col: Coluna(s) a serem usadas como índice de linha.
· usecols: Retorna um subconjunto das colunas.
· skiprows: Pula linhas no início do arquivo ou em posições específicas.
· Questões relevantes: Q39, Q104, Q105.2 A questão Q100 2 afirma que CSV suporta delimitação por vírgula mas não por ponto e vírgula; isso é incorreto, CSVs podem usar diversos delimitadores, e read_csv permite especificá-los com o parâmetro sep. A questão Q80 2 afirma que Python só permite leitura/escrita de CSV/XLSX via Pandas, o que é falso; existem outros módulos como csv (nativo) e openpyxl, mas Pandas simplifica muito essas tarefas.
· Outros formatos: pd.read_excel(), pd.read_json(), pd.read_sql(), df.to_csv(), df.to_excel().
· A leitura de arquivos XML não requer a instalação da biblioteca Pandas 2; bibliotecas como xml.etree.ElementTree (nativa) ou lxml são usadas. As classes ElementTree e minidom são de fato para análise e modificação de dados XML.2
· Seleção e Indexação:
· df['nome_coluna'] ou df.nome_coluna: Seleciona uma coluna como uma Series.
· df[['col1', 'col2']]: Seleciona múltiplas colunas como um DataFrame. 2
· .loc: Seleção baseada em rótulos (nomes de índice e coluna).
· .iloc: Seleção baseada em posição inteira.
· .at, .iat: Acesso rápido a valores escalares.
· Indexação Booleana: df[df['coluna'] > valor].
· Manipulação de Dados:
· Adicionar/Remover Colunas/Linhas:
· Adicionar coluna: df['nova_coluna'] = valores.
· Remover coluna: df.drop('nome_coluna', axis=1, inplace=True) ou del df['nome_coluna']. 2
· Remover linhas: df.drop(indice_linha, axis=0, inplace=True).
· Tratamento de Dados Ausentes (NaN):
· df.isna() ou df.isnull(): Retorna um DataFrame booleano indicando valores ausentes.78
· df.notna() ou df.notnull(): O oposto de isna().78
· df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False): Remove linhas/colunas com valores ausentes.
· df.fillna(valor, method=None, axis=None, inplace=False, limit=None): Preenche valores ausentes.
· Operações Estatísticas: df.describe() (estatísticas descritivas de colunas numéricas), df.mean(), df.sum(), df.std(), df.corr().
· A questão Q89 2 afirma que describe() retorna as linhas superiores e inferiores do DataFrame, o que é incorreto. describe() retorna estatísticas descritivas. head() e tail() retornam as primeiras e últimas linhas, respectivamente.2
· Aplicar Funções:
· df.apply(func, axis=0): Aplica uma função ao longo de um eixo.
· Series.apply(func) ou Series.map(arg): Aplica uma função ou mapeamento a uma Series.
· Remoção de Duplicatas: df.drop_duplicates(subset=None, keep='first', inplace=False). 2
· Agrupamento de Dados (groupby):
· Processo "Split-Apply-Combine":
1. Split: Divide os dados em grupos com base em algum critério (e.g., valores de uma coluna).
2. Apply: Aplica uma função a cada grupo independentemente (e.g., agregação, transformação, filtração).
3. Combine: Combina os resultados em uma estrutura de dados.
· df.groupby('coluna_chave').sum()
· df.groupby(['col1', 'col2']).agg({'col_valor': ['mean', 'std']})
· 74
· Junção e Combinação de DataFrames:
· pd.merge(df_left, df_right, how='inner', on=None, left_on=None, right_on=None): Junção estilo banco de dados.74
· pd.concat([df1, df2], axis=0): Concatena DataFrames ao longo de um eixo.74
· df1.join(df2): Junção baseada em índices.
Tabela Didática 3: Métodos Essenciais do Pandas DataFrame para Manipulação de Dados
Categoria da Operação
Método Principal
Descrição Breve
Exemplo de Uso Comum
Questão Cebraspe (Exemplo)
Leitura de Dados
pd.read_csv()
Lê dados de um arquivo CSV para um DataFrame.
df = pd.read_csv('dados.csv')
Q39, Q104 2
Seleção (Rótulo)
.loc
Acessa um grupo de linhas e colunas por rótulos.
df.loc]
-
Seleção (Posição)
.iloc
Acessa um grupo de linhas e colunas por posição inteira.
df.iloc[0:5, ]
-
Filtragem Booleana
df[condição]
Seleciona linhas com base em uma condição booleana.
df[df['idade'] > 30]
-
Remoção de Colunas
df.drop(axis=1)
Remove colunas especificadas.
df.drop('coluna_inutil', axis=1)
Q75 2
Dados Ausentes (Verif.)
df.isna()
Detecta valores ausentes (NaN).
df.isna().sum() (contar NAs por coluna)
-
Dados Ausentes (Preench.)
df.fillna()
Preenche valores ausentes com um valor especificado.
df['col_A'].fillna(df['col_A'].mean())
-
Agrupamento
df.groupby()
Agrupa dados usando um mapeador ou por colunas.
df.groupby('categoria').mean()
-
Junção (Merge)
pd.merge()
Combina DataFrames por colunas ou índices comuns.
pd.merge(df1, df2, on='id_comum')
-
Aplicação de Função
df.apply()
Aplica uma função ao longo de um eixo do DataFrame.
df.apply(np.sum, axis=0)
-
Visualizar Início/Fim
df.head(), df.tail()
Mostra as primeiras/últimas n linhas.
df.head(5)
Q101 2
Figura: Fluxo de uma operação Groupby no Pandas.
Um diagrama simples pode ilustrar:
1. DataFrame Original: Uma tabela com várias colunas e linhas.
2. Split (Dividir): Setas mostrando o DataFrame sendo dividido em subgrupos com base nos valores de uma coluna-chave (e.g., "Categoria A", "Categoria B").
3. Apply (Aplicar): Uma função (e.g., mean(), sum()) é aplicada a cada subgrupo individualmente.
4. Combine (Combinar): Os resultados de cada subgrupo são reunidos para formar um novo DataFrame.
4.1.3. Matplotlib & Seaborn
Essas bibliotecas são cruciais para a visualização de dados em Python. Matplotlib é a base, oferecendo grande flexibilidade, enquanto Seaborn simplifica a criação de gráficos estatísticos mais complexos e esteticamenteagradáveis.80
· Matplotlib (pyplot):
· Conceitos Fundamentais:
· Figure: O objeto de nível superior que contém todos os elementos do gráfico.
· Axes: A área onde os dados são plotados; uma figura pode conter múltiplos Axes (subplots).
· Criação de Gráficos Comuns:
· plt.plot(x, y): Gráfico de linhas.802
· plt.scatter(x, y): Gráfico de dispersão.802
· plt.bar(x, height): Gráfico de barras.802
· plt.hist(x, bins=None): Histograma.802
· plt.pie(x): Gráfico de pizza.812
· Customização:
· plt.title("Título"), plt.xlabel("Rótulo X"), plt.ylabel("Rótulo Y").80
· plt.legend().81
· Cores, marcadores (marker), estilos de linha (linestyle ou ls).80
· Subplots: plt.subplot(nrows, ncols, index) ou fig, axs = plt.subplots(nrows, ncols) para criar múltiplos gráficos em uma figura.80
· Salvar Figuras: plt.savefig("nome_arquivo.png").81
· A questão Q94 2 está correta ao afirmar que o módulo pyplot da Matplotlib é um conjunto de funções que permitem gerar gráficos.
· Seaborn:
· Construído sobre o Matplotlib, integra-se bem com DataFrames Pandas.
· Simplifica a criação de visualizações estatísticas comuns como heatmap, pairplot, violinplot, boxplot, lmplot (regressão linear com scatter).
· A questão Q95 2 menciona Seaborn.histogram(). Em versões mais recentes do Seaborn, a função preferida para histogramas é sns.histplot() ou sns.displot(kind='hist'). A questão pode estar desatualizada ou usar uma nomenclatura simplificada.
Flashcards Sugeridos: Tipos de Gráficos e Quando Usá-los.
* Frente: Gráfico de Linha. Verso: Usado para mostrar tendências ao longo do tempo ou sequências ordenadas. Conecta pontos de dados com linhas. (Ex: Evolução do faturamento mensal).
* Frente: Gráfico de Barras. Verso: Compara valores entre diferentes categorias. Altura/comprimento da barra representa a magnitude. (Ex: Vendas por produto).
* Frente: Gráfico de Dispersão (Scatter Plot). Verso: Mostra a relação entre duas variáveis numéricas. Cada ponto representa uma observação. (Ex: Relação entre investimento em marketing e vendas).
* Frente: Histograma. Verso: Representa a distribuição de frequência de uma única variável numérica, dividindo os dados em intervalos (bins). (Ex: Distribuição de idades dos clientes).
* Frente: Gráfico de Pizza (Pie Chart). Verso: Mostra a proporção de cada categoria em relação a um todo. Usar com poucas categorias. (Ex: Participação de mercado por empresa). 2
4.1.4. Scikit-learn
Scikit-learn é a biblioteca de fato para aprendizado de máquina em Python. Ela fornece ferramentas simples e eficientes para mineração e análise de dados, acessíveis a todos e reutilizáveis em vários contextos.84
· Workflow Típico:
1. Preparação dos Dados: X (matriz de features), y (vetor/array alvo).
2. Divisão Treino-Teste: from sklearn.model_selection import train_test_split; X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2).84
3. Escolha do Modelo (Estimador): Ex: from sklearn.linear_model import LogisticRegression; model = LogisticRegression().
4. Treinamento: model.fit(X_train, y_train).84
5. Predição: predictions = model.predict(X_test) ou probabilities = model.predict_proba(X_test).84
6. Avaliação: model.score(X_test, y_test) ou métricas específicas de sklearn.metrics.84
· Pré-processamento (sklearn.preprocessing): 85
· StandardScaler(): Padroniza features removendo a média e escalonando para variância unitária.
· MinMaxScaler(): Escala features para um intervalo (geralmente ).
· OneHotEncoder(): Converte variáveis categóricas em features numéricas binárias.
· LabelEncoder(): Codifica rótulos alvo com valor entre 0 e n_classes-1.
· SimpleImputer(): Para tratar valores ausentes (e.g., substituindo pela média, mediana).
· Seleção de Modelos (sklearn.model_selection):
· KFold(): Para validação cruzada k-fold.
· GridSearchCV(): Busca exaustiva sobre valores de hiperparâmetros especificados.
· RandomizedSearchCV(): Busca em um subconjunto aleatório de hiperparâmetros.
· Métricas de Avaliação (sklearn.metrics): 86
· Classificação: accuracy_score, precision_score, recall_score, f1_score, confusion_matrix, roc_curve, roc_auc_score.
· Regressão: mean_squared_error, mean_absolute_error, r2_score.
· A questão Q13 2 está correta ao afirmar que Scikit-learn inclui métricas de avaliação padrão, métodos para validação cruzada e busca de hiperparâmetros.
· Pipelines (sklearn.pipeline.Pipeline): 90
· Permite encadear múltiplos transformadores e um estimador final em um único objeto.
· Simplifica o workflow, evita vazamento de dados do conjunto de teste para o de treino durante o pré-processamento, e facilita a busca de hiperparâmetros para todos os passos.
· Exemplo: Pipeline().
Mapa Mental: Pipeline do Scikit-learn (Estrutura Textual)
Pipeline de Machine Learning com Scikit-learn
|
+-- 1. Coleta e Preparação de Dados
| |
| +-- Importação de Dados (e.g., Pandas: read_csv)
| +-- Limpeza de Dados (Tratar NAs, outliers)
| +-- Feature Engineering (Criar novas features)
|
+-- 2. Pré-processamento (sklearn.preprocessing)
| |
| +-- Escalonamento (StandardScaler, MinMaxScaler)
| +-- Codificação de Categóricas (OneHotEncoder, LabelEncoder)
| +-- Redução de Dimensionalidade (PCA) - Opcional
|
+-- 3. Divisão dos Dados (sklearn.model_selection)
| |
| +-- train_test_split(X, y, test_size=0.2, random_state=42)
|
+-- 4. Escolha e Treinamento do Modelo (Estimador)
| |
| +-- Instanciar o modelo (e.g., LogisticRegression(), RandomForestClassifier())
| +-- Treinar o modelo: model.fit(X_train, y_train)
|
+-- 5. Otimização de Hiperparâmetros (sklearn.model_selection) - Opcional
| |
| +-- GridSearchCV / RandomizedSearchCV
|
+-- 6. Predição
| |
| +-- model.predict(X_test)
| +-- model.predict_proba(X_test) (para classificadores)
|
+-- 7. Avaliação do Modelo (sklearn.metrics)
| |
| +-- Classificação: Matriz de Confusão, Acurácia, Precisão, Recall, F1-Score, Curva ROC, AUC
| +-- Regressão: MSE, MAE, R²
| +-- Validação Cruzada (cross_val_score)
|
+-- 8. (Opcional) Pipeline com sklearn.pipeline.Pipeline
|
+-- Encadeia pré-processamento e estimador: Pipeline()
+-- pipeline.fit(X_train, y_train)
+-- pipeline.predict(X_test)
4.1.5. SciPy
SciPy é uma coleção de algoritmos matemáticos e funções de conveniência construídas sobre a extensão NumPy do Python. Ela adiciona um poder significativo ao Python interativo, fornecendo ao usuário comandos e classes de alto nível para manipular e visualizar dados.
· scipy.constants: Contém um grande número de constantes físicas e matemáticas.92
· Ex: scipy.constants.pi, scipy.constants.c (velocidade da luz).
· A questão Q45 2 testa o valor de scipy.constants.pi. O valor impresso na questão (3.45359...) está incorreto; constants.pi retorna aproximadamente 3.1415926535...
· scipy.optimize: Fornece várias funções de otimização (minimização de funções escalares e multivariadas, ajuste de curvas, busca de raízes).94
· Ex: scipy.optimize.root para encontrar raízes de equações vetoriais. 2
· Ex: scipy.optimize.minimize para minimização de funções.
· Ex: scipy.optimize.curve_fit para ajuste de curvas.
· scipy.stats: Contém um grande número de distribuições de probabilidade e uma biblioteca crescente de funções estatísticas.
· scipy.linalg: Rotinas de álgebra linear, mais abrangentes que numpy.linalg.
· Outros submódulos importantes: scipy.integrate (integração numérica), scipy.fftpack (Transformada Rápida de Fourier), scipy.signal (processamento de sinais), scipy.sparse (matrizes esparsas).
· A questão Q85 2 afirma que Scipy permite criar regressões lineares multivariadas. Sim, através de scipy.stats.linregress (para regressão linear simples) ou usando scipy.linalg.lstsq em conjunto com a formulação da regressão múltipla, ou ainda, de forma mais completa, através da integração com statsmodels. A questão Q84 2 afirma que regressão linear multivariada trabalha com uma variável explicativa, o que é incorreto; ela trabalha com múltiplas variáveis explicativas.
4.1.6. Statsmodels
Statsmodels é uma biblioteca Python que permite aos usuários explorar dados, estimar modelos estatísticos e realizar testes estatísticos.7· Modelos Estatísticos:
· Regressão Linear: OLS (Ordinary Least Squares).
· Modelos Lineares Generalizados (GLM).
· Modelos Robustos Lineares.
· Análise de Séries Temporais: ARIMA, SARIMA, VAR, etc.
· Testes Estatísticos: Testes t, testes F, testes de normalidade, etc.
· Sumários Detalhados: Fornece resultados estatísticos abrangentes, incluindo coeficientes, erros padrão, valores-p, R², etc.
4.1.7. Outras Bibliotecas Python Relevantes
· TensorFlow e Keras:
· TensorFlow: Plataforma de código aberto para machine learning, com foco em deep learning.97
· Keras: API de alto nível para construir e treinar modelos de deep learning, que pode rodar sobre TensorFlow (entre outros).97
· Sequential model: Pilha linear de camadas.
· Functional API: Para modelos mais complexos.
· Camadas comuns: Dense, Conv2D, MaxPooling2D, LSTM, Dropout, Flatten, Activation.98
· model.compile(): Configura o processo de aprendizado (otimizador, função de perda, métricas).
· model.fit(): Treina o modelo.972
· A questão Q77 2 afirma que TensorFlow e PyTorch são exclusivas para aprendizado profundo e não adequadas para ML tradicional. Isso é parcialmente incorreto; embora sejam primariamente para deep learning, podem ser usadas para tarefas de ML tradicional, mas bibliotecas como Scikit-learn são geralmente mais diretas para esses casos.
· A questão Q98 2 sobre pipelines em TensorFlow está correta; TensorFlow Extended (TFX) oferece ferramentas para criar pipelines de ML.
· Spacy:
· Biblioteca avançada para Processamento de Linguagem Natural (PLN) em Python, projetada para uso em produção.102
· Oferece tokenização, Part-of-Speech (POS) tagging, parsing de dependência, reconhecimento de entidades nomeadas (NER), vetores de palavras, etc..102
· Modelos pré-treinados para várias línguas.
· A questão Q78 2 está incorreta ao afirmar que Spacy não oferece recursos como análise morfológica, entidades nomeadas e integração com modelos pré-treinados; Spacy é forte justamente nesses aspectos.
· Pingouin:
· Biblioteca estatística de código aberto escrita em Python, baseada em Pandas e NumPy.104
· Fornece funções para estatísticas comuns de forma simples: ANOVA, testes t, correlações, tamanhos de efeito, testes de normalidade, plots estatísticos.
· A questão Q74 2 está correta ao afirmar que Pingouin é recomendado para aplicações estatísticas simples e usuais.
· Streamlit:
· Framework de código aberto para criar e compartilhar web apps para ciência de dados e machine learning de forma rápida e fácil, usando apenas Python.108
· Permite transformar scripts de dados em dashboards interativos com widgets como sliders, botões, caixas de seleção, etc.
· A questão Q97 2 está correta ao afirmar que Streamlit é usado para criar interfaces web, como dashboards com gráficos interativos.
4.2. R
A linguagem R é um ambiente e linguagem de programação voltada para a computação estatística e visualização de dados.42
4.2.1. dplyr (Parte do Tidyverse)
O dplyr é um pacote fundamental do Tidyverse que fornece uma gramática consistente para manipulação de dados, focada em verbos que realizam ações comuns em data frames.55
· Verbos Principais:
· select(): Seleciona colunas de um data frame. Ex: select(dados, coluna1, coluna2). 2
· filter(): Filtra linhas com base em condições lógicas. Ex: filter(dados, coluna1 > 10). 2
· mutate(): Cria novas colunas ou modifica colunas existentes. Ex: mutate(dados, nova_coluna = coluna1 * 2). 2
· arrange(): Ordena as linhas do data frame. Ex: arrange(dados, desc(coluna1)). 2
· summarise() (ou summarize()): Reduz múltiplas linhas a um único valor sumário (e.g., média, soma). Frequentemente usado com group_by(). Ex: summarise(grupo_dados, media_coluna = mean(coluna_valor)).
· group_by(): Agrupa o data frame por uma ou mais variáveis categóricas, para que as operações subsequentes sejam realizadas dentro de cada grupo.
· Operador Pipe (%>% ou |>):
· Originário do pacote magrittr 2, o pipe permite encadear múltiplas operações de forma legível, passando o resultado da operação anterior como o primeiro argumento da próxima função. Ex: dados %>% filter(condicao) %>% select(colunas).
· A questão Q118 2 afirma que os operadores %>% e %% do magrittr realizam exatamente a mesma operação. Isso é incorreto. O %>% (pipe) passa o resultado da expressão à esquerda como o primeiro argumento da função à direita. O %% (pipe de atribuição composta) faz o mesmo, mas também atribui o resultado final de volta ao objeto original à esquerda do pipe.
4.2.2. ggplot2 (Parte do Tidyverse)
ggplot2 é um sistema para criar gráficos declarativamente, baseado na "Gramática dos Gráficos".57 Ele permite construir gráficos camada por camada.
· Componentes Essenciais:
· data: O data frame contendo os dados a serem plotados.
· aes() (aesthetic mappings): Define como as variáveis nos dados são mapeadas para atributos visuais do gráfico (e.g., x, y, color, fill, size, shape, alpha).
· geom_*() (geometric objects): Define o tipo de representação visual dos dados. Alguns exemplos:
· geom_point(): Para gráficos de dispersão (scatter plots). 2
· geom_line(): Para gráficos de linha. 2
· geom_bar() (para contagens) ou geom_col() (para valores pré-calculados): Para gráficos de barras. 2
· geom_histogram(): Para histogramas.
· geom_boxplot(): Para boxplots.
· geom_density(): Para gráficos de densidade.
· geom_smooth(): Para adicionar linhas de tendência (e.g., regressão linear com method = "lm"). 2
· geom_errorbar(): Para adicionar barras de erro.
· labs(): Para adicionar títulos, subtítulos, legendas de eixos, etc.
· theme(): Para customizar a aparência não relacionada aos dados do gráfico (e.g., fundo, grades, fontes).
· facet_wrap() ou facet_grid(): Para criar múltiplos painéis (subgráficos) baseados nos níveis de uma ou mais variáveis categóricas.
· scale_*(): Para controlar o mapeamento de dados para estéticas (e.g., scale_color_manual(), scale_x_continuous()). 2
· A questão Q31 2 refere-se à criação de visualizações eficientes com ggplot em R ou matplotlib em Python. A opção (c) que sugere criar gráficos de linha com dados já agregados e filtrados é geralmente uma boa prática para eficiência e clareza, especialmente com grandes volumes de dados.
· A questão Q122 2 sobre Q-Q plot usa qqnorm() e qqline(), que são funções base do R para gráficos estatísticos, não ggplot2.
· A questão Q159 2 tenta criar um gráfico de pizza com geom_piechart(). Não existe geom_piechart() diretamente no ggplot2. Gráficos de pizza em ggplot2 são geralmente feitos transformando um geom_bar() com coordenadas polares (coord_polar(theta="y")).
4.2.3. readr e Leitura de CSV
O pacote readr (parte do Tidyverse) oferece funções rápidas e amigáveis para ler dados retangulares como CSVs (read_csv()).56 A função base read.csv() também é amplamente utilizada.60
· read.csv(file, header = TRUE, sep = ",", dec = ".", stringsAsFactors = default.stringsAsFactors(),...) (Base R):
· file: Caminho para o arquivo.
· header: Booleano indicando se a primeira linha contém nomes de colunas.
· sep: Caractere separador de campos.
· dec: Caractere de ponto decimal.
· colClasses: Permite especificar os tipos de dados para cada coluna.
· skip: Número de linhas a serem puladas do início.
· na.strings: Vetor de strings a serem interpretadas como NA.
· As questões Q124, Q125, Q126, Q127 2 exploram o uso de read.csv() e read.delim() (que é uma variação de read.table com delimitador tabulação por padrão) com diferentes parâmetros e fontes de dados (local e URL). A questão Q128 2 está incorreta ao afirmar que não é possível importar dados via URL no RStudio; é possível.
4.2.4. jsonlite
Para trabalhar com dados JSON em R, o pacote jsonlite é uma escolha comum.2
· fromJSON(txt, simplifyVector = TRUE,...): Converte uma string JSON (ou arquivo/URL) em objetos R (listas, vetores, data frames).
· toJSON(x, pretty = FALSE, auto_unbox = FALSE,...): Converte um objeto R em uma string JSON.
· A questão Q145 2 pergunta sobre a leitura de um arquivo JSON com jsonlite::fromJSON(). A sintaxe jsonpouco incomum. O correto seria jsonde treino, o que é uma contradição; o overfitting geralmente apresenta alta taxa de acerto no treino e baixa no teste.
· Underfitting (Subajuste): Ocorre quando o modelo é muito simples para capturar a estrutura subjacente dos dados.119 Resulta em alto erro tanto nos dados de treinamento quanto nos dados de teste, indicando que o modelo não aprendeu bem nem mesmo os dados de treino [ Q213, Q256, Q265, S_D3 Q356, Q365].
· Viés (Bias): Refere-se ao erro introduzido por aproximar um problema do mundo real, que pode ser complexo, por um modelo excessivamente simples.121 Um alto viés pode levar ao underfitting, onde o modelo sistematicamente erra as previsões.
· Variância (Variance): Refere-se à sensibilidade do modelo a pequenas flutuações no conjunto de treinamento.121 Um modelo com alta variância presta muita atenção aos dados de treinamento e não generaliza bem para dados não vistos, levando ao overfitting.
· Trade-off Viés-Variância: Existe um trade-off fundamental: modelos muito simples (alta complexidade baixa, alto viés) tendem a ter baixa variância, enquanto modelos muito complexos (alta complexidade, baixo viés) tendem a ter alta variância.121 O objetivo é encontrar um equilíbrio que minimize o erro total no conjunto de teste. A questão Q214 sobre polinômios e o trade-off é complexa; em geral, aumentar o grau do polinômio aumenta a complexidade, podendo reduzir o viés mas aumentar a variância. Não há uma regra simples sobre ordens ímpares serem sempre melhores.
· Figura Ilustrativa: Trade-off Viés-Variância.
Complexidade do Modelo -->
Baixa Alta
----------------------------------------------------
Erro | / \
| / \ Erro Total
| Viés /
| / / \ Variância
| \ / /
| \ / /
| \ / Optimal /
| X /
| Underfitting Overfitting
----------------------------------------------------
(Eixo Y: Erro; Eixo X: Complexidade do Modelo)
A curva de Viés decresce com a complexidade.
A curva de Variância cresce com a complexidade.
A curva de Erro Total tem um formato de "U", com o ponto ótimo no meio.
```
(Questões relevantes: S_D3 Q307, Q308, Q363, Q364, Q365, Q368)
· Métricas de Avaliação de Modelos: 86
· Para Classificação:
· Matriz de Confusão: Uma tabela que resume o desempenho de um algoritmo de classificação. Para um problema binário, ela tem 4 células: Verdadeiros Positivos (TP), Falsos Positivos (FP), Verdadeiros Negativos (TN) e Falsos Negativos (FN).2
· Flashcard - Matriz de Confusão:
· Frente: Estrutura da Matriz de Confusão (Binária)
· Verso:
Predito Positivo Predito Negativo
Real Positivo TP FN (Erro Tipo II)
Real Negativo FP (Erro Tipo I) TN
· Acurácia: (TP+TN+FP+FN)(TP+TN). Proporção de predições corretas.89 Pode ser enganosa em datasets desbalanceados.
· Precisão: (TP+FP)TP. Das instâncias classificadas como positivas, quantas realmente são positivas.89 Importante quando o custo de um Falso Positivo é alto.
· Recall (Sensibilidade ou Revocação): (TP+FN)TP. Das instâncias que são realmente positivas, quantas foram corretamente classificadas como positivas.2 Importante quando o custo de um Falso Negativo é alto.
· F1-Score: 2×(Precisa˜o+Recall)(Precisa˜o×Recall). Média harmônica de precisão e recall, útil quando há um desequilíbrio entre as classes ou quando se busca um balanço entre precisão e recall.2
· Curva ROC (Receiver Operating Characteristic): Gráfico da Taxa de Verdadeiros Positivos (Recall) versus a Taxa de Falsos Positivos (1 - Especificidade) para diferentes limiares de classificação.2 Uma curva mais próxima do canto superior esquerdo indica melhor desempenho.
· AUC (Area Under the ROC Curve): Área sob a curva ROC. Varia de 0 a 1, onde 1 é um classificador perfeito e 0.5 é um classificador aleatório.89
· Mnemônico para Precisão e Recall 123:
· Precisão: Quão Preciso é o modelo quando ele Prediz Positivo? (TP / (TP+FP)) - Foco nas predições positivas.
· Recall: Quantos dos Realmente positivos o modelo consege Recuperar? (TP / (TP+FN)) - Foco nos casos reais positivos.
· Para Regressão:
· Erro Quadrático Médio (MSE - Mean Squared Error).
· Raiz do Erro Quadrático Médio (RMSE - Root Mean Squared Error).
· Erro Absoluto Médio (MAE - Mean Absolute Error).
· R2 (Coeficiente de Determinação): Proporção da variância na variável dependente que é previsível a partir das variáveis independentes.89
· Questões relevantes: Q233 (Curva ROC, AUC), Q288 (matriz de confusão), Q328 (F1-score), Q342 (revocação), Q343 (Curva ROC, AUC), Q346 (matriz de confusão), Q347 (Curva ROC), Q351 (métrica de classificação, taxa de erro).
· Validação Cruzada (Cross-Validation): Técnica para avaliar a performance de um modelo de forma mais robusta, dividindo o conjunto de dados em 'k' subconjuntos (folds). O modelo é treinado k vezes, cada vez usando k-1 folds para treino e 1 fold para teste [2 Q349, S_D3 Q358, Q359]. Ajuda a obter uma estimativa mais estável da performance do modelo em dados não vistos e a detectar overfitting.
· A questão Q13 2 menciona que Scikit-learn inclui métodos para validação cruzada.
· A questão Q357 (S_D3) está correta ao afirmar que K-fold é um método para detectar sobreajuste.
5.4. Pré-processamento de Dados
É uma etapa crucial no pipeline de machine learning que envolve transformar dados brutos em um formato adequado para os algoritmos de ML.2 A qualidade dos dados de entrada afeta diretamente a qualidade do modelo.
· Limpeza de Dados:
· Tratamento de Dados Ausentes (Missing Values):
· Remoção: Excluir linhas ou colunas com dados ausentes (dropna() no Pandas).73 Pode levar à perda de informação.
· Imputação: Preencher valores ausentes.
· Simples: Média, mediana (para dados numéricos), moda (para dados categóricos), valor constante (fillna() no Pandas, SimpleImputer no Scikit-learn).73
· Avançadas: Imputação KNN (usa os k vizinhos mais próximos para estimar o valor ausente), MICE (Multivariate Imputation by Chained Equations) [ Q317, S_D3 Q455].
· Tipos de dados ausentes (MNAR, MAR, MCAR) influenciam a escolha da técnica. A questão Q271 afirma que o tratamento de dados ausentes é prescindível, o que é geralmente incorreto, pois muitos algoritmos não lidam bem com NAs.
· Tratamento de Outliers (Dados Anômalos): Valores que se desviam significativamente dos demais.2
· Identificação: Boxplots (visual), IQR (Intervalo Interquartil - valores fora de Q1−1.5×IQR ou Q3+1.5×IQR são outliers).2
· Causas: Erros de medição, entrada de dados, ou eventos raros genuínos.2
· Tratamento: Remoção (com cautela), transformação (e.g., logarítmica para reduzir o impacto de valores extremos), ou uso de algoritmos robustos a outliers. A questão Q237 sugere que anomalias devem ser descartadas, o que nem sempre é a melhor abordagem; a decisão depende da natureza do outlier e do problema.
· Transformação de Dados:
· Escalonamento/Normalização: Coloca as features em escalas comparáveis, importante para algoritmos baseados em distância (e.g., KNN, SVM) ou gradiente.
· StandardScaler (Padronização ou Z-score): Transforma os dados para terem média 0 e desvio padrão 1. Fórmula: z=(x−μ)/σ.85
· MinMaxScaler: Escala os dados para um intervalo específico, geralmente . Fórmula: xscaled=(x−min(x))/(max(x)−min(x)).2
· Codificação de Variáveis Categóricas: Converte dados categóricos em representações numéricas.
· LabelEncoder: Atribui um valor numérico único para cada categoria (e.g., "Vermelho":0, "Verde":1, "Azul":2). Pode introduzir uma relação ordinal artificial se não houver uma inerente.85
· OneHotEncoder (ou dummy variables): Cria novas colunas binárias (0 ou 1) para cada categoria. Evita a suposição de ordinalidade, mas pode aumentar muito a dimensionalidade se houver muitas categorias.85 A questão Q380 (S_D3) afirma que one-hot encoding sempre reduz a dimensionalidade, o que é incorreto; geralmente aumenta.
· Discretização (Binning): Converte variáveis contínuas em um número finito de intervalos (bins), tratando-as como categóricas.2
· Discretização de frequência igual: Divide os dados de forma que cada intervalo contenha aproximadamente o mesmo número