Você está na página 1de 6

LINGUAGEM PYTHON PARA CIÊNCIA DE DADOS: UM

MAPEAMENTO SISTEMÁTICO
Evandro V. Mafort1 , Gabriel Rodrigues1 , Lorran F. da C. Parreira1
1
Bacharelado em Sistemas de Informação – Centro Federal de Educação Tecnológica
Celso Suckow da Fonseca - (Cefet/RJ)
Campus Nova Friburgo/RJ – Brazil, 2022

Abstract. The following work intends to show a view about the programming
language Python and her uses in the Data Science area, describing some of
the most needed libraries for manipulation and data analysis, mathematical
operations with arrays, data visualization, etc., having as purpose show some
practical cases of use to the students of the bachelor of Information Systems of
CEFET/RJ – Campus Nova Friburgo, as well as others interested in know more
of the area.

Resumo. O trabalho a seguir apresenta um breve apanhado sobre a linguagem


de programação Python e a utilização da mesma na área de ciência de dados,
descrevendo algumas das bibliotecas necessárias para análise e manipulação
de dados, de operações matemáticas com arrays, visualização de dados, etc.,
tendo como finalidade mostrar alguns casos práticos de uso para os alunos do
curso de Sistemas de Informação do CEFET/RJ - Campus Nova Friburgo, bem
como outros interessados em conhecer mais a área.

1. Introdução
Com o avanço das tecnologias e a subsequente geração de montanhas homéricas
de informação, é fato que as empresas e a comunidade acadêmica têm visto nos dados
uma “mina de ouro”. Seja para auxiliar na tomada de decisões e entender a “saúde” do
seu negócio ou como como ferramenta de apoio para a elaboração de artigos ou como
uma nova perspectiva de enxergar o mundo e seus fenômenos, os dados se tornaram o
sı́mbolo de uma nova forma de compreender vários fenômenos.
Uma das áreas responsáveis por lidar com esses dados é a Ciência de Dados, defi-
nida por [Grus 2019] na interseção de habilidades de hacker, conhecimento de matemática
e estatı́stica e competência significativa - portanto sendo um cruzamento de conhecimen-
tos em estatı́stica, programação e regras de negócio.
E por conta de a programação ser uma das peças-chave da área, ferramentas são
criadas e aprimoradas com o intuito de realizar a captura, processamento e armazena-
mento destes de formas cada vez mais eficientes e otimizadas. Uma dessas ferramentas
é a linguagem de programação Python, cada vez mais utilizada ao redor do mundo por
profissionais da área em suas tarefas diárias.

2. Fundamentação Teórica
Abaixo, segue a fundamentação teórica das principais ferramentas utilizadas por
cientistas, analistas e engenheiros da área de dados.
2.1. Python
De acordo com o site Python Institute1 , a linguagem que conhecemos por Python
surgiu em 20 de fevereiro de 1991, pelas mãos de Guido Van Rossum. Algumas carac-
terı́sticas principais sobre a linguagem e o que a cerca é que ela é open-source (ou seja,
qualquer um pode colaborar com o seu desenvolvimento), orientada a objetos, interpre-
tada, de alto nı́vel e que possui uma comunidade grande de desenvolvedores a mantendo
e a melhorando, além da sintaxe simplificada – sendo altamente beginner-friendly, além
de ser uma das linguagens mais utilizadas no mundo, segundo pesquisas.2 .

Figura 1. Linguagens de programação por porcentagem de usuários².

Uma outra caracterı́stica do Python é a quantidade de bibliotecas - conjuntos de


funções e módulos úteis para encurtar o tamanho de um código - disponı́veis para pronto
uso dos desenvolvedores. Há bibliotecas para todo tipo de tarefa: desenvolvimento web,
automação, interfaces gráficas, integração entre sistemas, etc., também fazendo parte do
escopo as bibliotecas voltadas para todos os aspectos de Ciência de dados. Abaixo fa-
laremos sobre as principais bibliotecas ligadas ao assunto, de forma rápida porém direta
(devido a limitação de tamanho de conteúdo para este trabalho).

2.2. Numpy
Segundo [McKinney 2017], criada em 2005 por Travis Oliphant e construı́da
majoritariamente na linguagem de programação C, o Numpy (https://numpy.org) realiza
operações numéricas (Aritmética, Álgebra Linear, Cálculo, etc.) com arrays multidimen-
sionais em estruturas de dados, independente do grau de complexidade das estruturas.

2.3. Pandas
Construı́da a partir de 2010 por Wes McKinney [McKinney 2017], o Pandas
(https://pandas.pydata.org) é, talvez, uma das pedras basais da extração, transformação e
1
https://pythoninstitute.org/about-python. Acesso: 24 nov, 2022
2
https://lp.jetbrains.com/python-developers-survey-2021/GeneralPythonUsage; Acesso : 24nov, 2022
carregamento de dados (processo conhecido como ETL). Oferece dois tipos de estruturas
para o processamento e visualização de dados em baixı́ssimo tempo de execução: Se-
ries – um objeto arrays unidimensional – e o DataFrame – estrutura de dados em forma
de tabela, com linhas e colunas. Além disso, ainda oferece funcionalidades para séries
temporais e não-temporais, tratamento para dados ausentes, combinações entre vários
DataFrame, dentre outros features que, por limitações de conteúdo, não serão descritos
neste trabalho.

2.4. Matplotlib
Matplotlib (https://matplotlib.org) é uma das mais ferramentas de visualização
de dados mais populares entre cientistas, analistas e desenvolvedores Python em geral.
John D. Hunter é o criador da biblioteca em questão, a lançando em 2003. Histogramas,
gráficos de dispersão, gráficos comparativos, clusters gráficos, etc., todos estes tipos e
outros mais podem ser elaborados através de poucas linhas de código e poucos parâmetros
de funções.

2.5. Scikit-learn
Antes de explicar qual é a função desta biblioteca, é necessário explicar o que
é Machine Learning - ou Aprendizado de Máquina, em português. A área pode ser
definida como a ciência da programação de computadores de modo que eles possam
aprender com os dados [Géron 2019]. Tendo esta definição em vista, a biblioteca Scikit-
learn (https://scikit-learn.org), criada em 2010, traz facilitações na forma de módulos para
classificação, regressão, pré-processamento de dados, redução de dimensionalidade, entre
outras funcionalidades.3 .

Figura 2. Exemplo de código escrito em Python utilizando a biblioteca Pandas.³

Figura 3. Exemplo da estrutura DataFrame gerada pelo Pandas.³

3. Metodologia de pesquisa
Motivados pelo interesse em estruturar o tópico de Python para Ciência de Dados
como uma área de interesse para futuros trabalhos, optamos em realizar um mapeamento
3
Gerada pelos próprios autores
sistêmico da literatura, através da busca de artigos e textos no site Google Scholar, por ser
uma ferramenta de busca abrangente. Levando em consideração os elementos descritos
acima, desejamos estabelecer respostas para os seguintes questionamentos: (a) Quais são
os usos da linguagem Python dentro da área de ciência de dados e (b) Quais foram os
resultados obtidos ao utilizar a ferramenta e suas bibliotecas. O processo foi dividido
em quatro etapas: Busca, filtragem, leitura e resultados.

3.1. Busca
A primeira etapa, evidentemente, foi definir uma plataforma para estabelecer as
buscas por artigos e outros textos acadêmicos. A plataforma escolhida foi o Google Scho-
lar, por possuir uma ferramenta de busca abrangente e de fácil uso por qualquer um que
não esteja acostumado a utilizar.

3.2. Filtragem
Finda a primeira etapa, seguimos para a filtragem de resultados envolvendo o
que querı́amos obter, definindo os critérios de inclusão e de eliminação dos documentos.
Durante a primeira rodada de buscas, sem filtros aplicados, obtivemos um pouco menos
de 1500 resultados. Na segunda rodada, aplicando filtros (obedecendo os critérios de in-
clusão e exclusão que serão citados adiante), mas sem alterar a strings de busca, obtivemos
exatamente 1270 resultados.

Tabela 1. Filtragem e os seus resultados


String Filtros Resultados
”Python”And ”Ciência de dados” Inaplicado 1490
”Python”And ”Ciência de dados” Aplicado 1270
”Python”And ”Ciência de dados”And ”Machine Learning” Inaplicado 76
And ”Big Data”And ”ETL”
”Python”And ”Ciência de dados”And ”Machine Learning” Aplicado 54
And ”Big Data”And ”ETL”

Adicionando mais elementos a string de busca, assim como os filtros anterior-


mente aplicados, reduzimos a quantidade de artigos por volta de 97% do número original,
obtendo 54 resultados. E, por fim, desses 54, chegamos a 4 artigos - dois de análise de
dados e dois de aprendizado de máquina. Em termos estatı́sticos, escolhemos 1 artigo
entre 11 pré-selecionados (que obedeciam aos critérios estabelecidos pelo grupo).

Tabela 2. Critérios estabelecidos pelo grupo

Inclusão Exclusão
It1: Textos publicados de 2018 em diante Ex1: Textos com data anterior a 2018
It2: Textos apenas em Português Ex2: Textos em idiomas além do Português
It3: Textos ligados diretamente com o assunto Ex3: Textos que possuem acima de 60 páginas
- Ex4: Textos que se afastam da proposta
3.3. Leitura
Logo terminada a segunda fase, seguimos para a terceira. Como os textos não
possuem a mesma quantidade de páginas, dividimos de forma proporcional a leitura de
cada artigo e os resultados obtidos por cada um foram unificados em apenas um texto.

3.4. Resultados
Como o nosso mapeamento sistemático de literatura consiste em elucidar quais
resultados diferentes trabalhos da área de dados obtiveram ao utilizar Python, focamos
em responder a nossa pergunta utilizando os textos obtidos como casos de uso, apontando
os elementos em comum destes para obtermos as nossas respostas.
(a) Quais foram os resultados obtidos ao utilizar a ferramenta e suas bibli-
otecas? Como cada trabalho possui um aspecto único, cada caso precisa ser observado
primeiramente. Por exemplo, [Castro and Oliveira 2021] e [Pazos and Sirqueira 2022] re-
alizaram trabalhos envolvendo análise de dados sobre, respectivamente, casos de dengue
na cidade de Mossoró no perı́odo 2017/2022 e informações sobre postagens na rede social
Twitter durante o perı́odo de uma hora. Nestes dois trabalhos, os autores não só realizaram
a coleta dos dados de forma eficiente e organizada, de modo que o código ficasse bem es-
crito, como puderam tratar adequadamente esses dados em DataFrames construı́dos para
este tipo de tarefa e, finalmente, tornar os dados palpáveis de observações e insights,
através das ferramentas Matplotlib e a Seaborn– biblioteca que faz parte do ecossistema
Matplotlib.
Já nos outros dois trabalhos, o approach utilizado para a solução do problema é via
aprendizado de máquina, seja para oferecer um sistema de suporte para o auxı́lio na esco-
lha da faculdade que um aluno tem interesse em ingressar [Santos 2021] ou na detecção
de outliers (valores distantes da maioria das observações [Bruce and Bruce 2017] nas eta-
pas de processamento e análise de dados [Souza 2021]. No primeiro caso, temos os
dados sendo extraı́dos diretamente do INEP, sendo comprimidos através do pacote de
Python Pickles – para que o tamanho do arquivo fosse reduzido e, consequentemente, o
seu tempo de execução - e processados via algoritmos de clustering, para posteriormente
serem lançados em uma aplicação web, via API desenvolvida em Flask (um “microfra-
mework web” Python usado para construir APIs). Já no caso do texto sobre outliers,
alguns métodos do pacote Scikit-learn – especificamente o DBSCAN – em conjunto com
o pacote Pyod (de detecção de outliers) foram o suficiente para determinar os valores fora
do que seria considerado normal, posteriormente sendo inseridos em objetos DataFrame
para que estes fossem exibidos de forma ordenada e concisa – o que resultou em ótimos
dados sendo obtidos e interpretados facilmente.
Em ambos os casos, é perceptı́vel que a linguagem Python possuiu papel de desta-
que nas quatro soluções de problemas propostos. Se não foi a protagonista, desempenhou
muitas tarefas-chave para que tudo fosse desenvolvido da melhor forma possı́vel.
(b) Qual é o grau de similaridade nas metodologias adotadas em cada traba-
lho? Temos que todos os trabalhos seguem à risca os princı́pios do ETL, ou seja: Os dados
foram extraı́dos utilizando APIs próprias, escritas na linguagem Python e foram transfor-
mados em objetos DataFrame para melhor manuseio dos dados, alterando, criando ou
concatenando os objetos citados para, finalmente, serem exportados para visualização –
seja em uma aplicação web, no caso de [Souza 2021], sejam através de gráficos apresen-
tados no próprio texto, como em [Souza 2021] e [Pazos and Sirqueira 2022] ou através
dos próprios DataFrame do pacote Pandas, dispensando o uso de interfaces gráficas
[Souza 2021].

4. Conclusão
Através da leitura dos trabalhos na área de ciência de dados, podemos concluir que
o Python consegue cobrir todas as necessidades de cientistas e analistas de dados, desde
a extração dos dados, sejam de uma ou várias fontes, simuladas ou não, passando pelo
tratamento e rearranjo dos mesmos, utilizando pacotes especializados em manipulação
de estruturas de dados multidimensionais, até o carregamento dos dados já processados
e tratados – sejam em sites, softwares ou quaisquer outros meios. A versatilidade, a
curva de aprendizado e a facilidade operacional desta linguagem explicam o fato de a
mesma possuir um grau de adesão bastante acentuado entre a comunidade de tecnologia,
sobretudo na área de dados, adesão essa que é refletida nas pesquisas de popularidade.
Ainda há muito caminho a percorrer no tocante as melhorias que o Python pode oferecer –
atualmente, a linguagem se encontra na versão 3.11 e há planos de melhorias a longo prazo
que tem como meta igualar o tempo de execução ao de linguagens compiladas, como
C++ e C, ampliando o leque de utilidades para tarefas que exijam alto desempenho de
execução, também podendo ampliar as perspectivas de trabalho dentro da área de dados.
Por conta desses detalhes, Python segue sendo uma ótima ferramenta para todas as tarefas
relacionadas a dados.

Referências
Bruce, P. and Bruce, A. (2017). Practical Statistics for Data Scientists: 50 Essential
Concepts. 2° edition.
Castro, A. and Oliveira, A. (2021). Study on Dengue cases using Data Analysis techni-
ques: A case study in the state of Pernambuco, Brazil.
Grus, J. (2019). Data Science from Scratch: First Principles with Python. O’Reilly
Media, Inc., 2ª edition.
Géron, A. (2019). Hands-On Machine Learning with Scikit-Learn, Keras, and Tensor-
Flow: Concepts, Tools, and Techniques to Build Intelligent Systems. O’Reilly Media,
Inc., 2° edition.
McKinney, W. (2017). Python for Data Analysis: Data Wrangling with Pandas, NumPy,
and IPython. O’Reilly Media, Inc., 2ª edition.
Pazos, D. M. and Sirqueira, T. F. M. (2022). Análise de Dados em Gráficos com base na
API do Twitter. Caderno de Estudos em Engenharia de Software, 3(2). Number: 2.
Santos, F. V. C. d. (2021). Um sistema de suporte à decisão para auxı́lio no processo de
escolha de ensino superior. Publisher: Universidade Federal Fluminense.
Souza, J. O. d. (2021). Detecção de outliers em pipelines de dados. Publisher: Universi-
dade Tecnológica Federal do Paraná.

Você também pode gostar