Você está na página 1de 12

1

FACULDADE DE TECNOLOGIA SENAI GASPAR RICARDO JÚNIOR

OTIMIZAÇÃO DE LARGE DATASETS

LARGE DATASETS OPTIMIZATION

Rafael Henrique de Mattos Ribeiro1


Leonardo Fonseca Reginato²
André Cassulino Araujo Souza³

RESUMO
Este estudo comparou as bibliotecas Pandas e Polars em Python para manipulação e
análise de dados. Utilizando o ambiente de desenvolvimento Colab, foram realizados testes
de desempenho em grandes conjuntos de dados. Os resultados mostraram que o Polars
superou o Pandas em eficiência de processamento e uso de memória, destacando-se como
uma opção promissora para lidar com grandes volumes de dados.
Palavras-chaves: Python, Polars, Colab, Pandas.

ABSTRACT
This study compared the Python libraries Pandas and Polars for data manipulation and
analysis. Using the Colab development environment, performance tests were conducted on
large datasets. The results showed that Polars outperformed Pandas in processing efficiency
and memory usage, emerging as a promising option for handling large volumes of data.
Keywords: Python, Polars, Colab, Pandas.

1 INTRODUÇÃO
O processamento de dados tem se tornado cada vez mais essencial em diversas áreas,
desde análises de negócios até pesquisas acadêmicas. Com o avanço da tecnologia e a
crescente quantidade de informações disponíveis, a necessidade de ferramentas eficientes
para manipulação e análise de dados tornou-se evidente. Nesse contexto, o Python emergiu
como uma das linguagens de programação mais populares devido à sua versatilidade e à
ampla gama de bibliotecas disponíveis para análise de dados.
Uma dessas bibliotecas, chamada Pandas, oferece estruturas de dados poderosas e
ferramentas para manipulação e análise de dados de forma rápida e eficiente. Com essa
ferramenta é possível carregar, limpar, transformar e analisar conjuntos de dados de
maneira simples e intuitiva.
No entanto, apesar dos avanços significativos no processamento de dados utilizando o
Pandas, as pesquisas nessa área continuam a progredir em busca de técnicas mais eficientes

1
Vinculação do autor e endereço eletrônico. Exemplo: Graduando em Tecnólogo em Análise e
Desenvolvimento de Sistemas. E-mail: rafael.mattss@gmail.com
2

e otimizadas. A cada ano, novas abordagens são propostas para melhorar a velocidade, a
escalabilidade e a precisão do processamento de grandes conjuntos de dados.
Diante da situação atual, a pesquisa foi fundamentada na ideia de que o Polars seria a
melhor opção para manipulação e análise de dados, dadas suas características de alto
desempenho e eficiência no processamento de grandes conjuntos de dados.
Neste artigo, exploraremos o processamento de dados utilizando o Python e
discutiremos algumas das pesquisas recentes que visam aprimorar a otimização de
conjuntos de dados (em inglês dataset). Esta abordagem se fez muito útil tendo em vista as
reduções de aproximadamente 78 por cento do tempo de processamento e 61 por cento de
redução de espaço.

1.1 Problema de pesquisa


O problema de pesquisa abordado neste estudo diz respeito à eficiência do
processamento de dados em Python, considerando não apenas a biblioteca Pandas, mas
também outras ferramentas e bibliotecas amplamente utilizadas no ecossistema de ciência
de dados, como o polars, numpy, e entre outras. Este estudo busca investigar como
maximizar o desempenho das principais bibliotecas de processamento de dados para lidar
com conjuntos de dados cada vez maiores e mais complexos. A questão central é como
melhorar a eficiência dessas bibliotecas, seja através de técnicas de paralelização, algoritmos
de compressão de dados ou outras abordagens, a fim de atender à demanda crescente por
análises de dados em larga escala e em tempo real.

1.2 Objetivos
Este estudo tem como objetivo principal investigar e propor estratégias para otimizar o
processamento de dados em Python, visando aprimorar a eficiência e a escalabilidade das
operações realizadas em grandes conjuntos de dados. Para atingir esse objetivo, será
realizada uma revisão abrangente da literatura sobre técnicas de otimização de
processamento de dados em Python. Além disso, serão avaliados o desempenho das
principais bibliotecas de processamento de dados, como Pandas, NumPy e Polars, em
cenários de grande escala. A partir dessa avaliação, serão identificados gargalos e áreas de
melhoria no processamento de dados em Python.
Este estudo propõe estratégias de otimização, como paralelização e uso de algoritmos
eficientes, para melhorar o desempenho do processamento de dados em Python. Essas
estratégias foram validadas experimentalmente em diversos conjuntos de dados, visando
fornecer diretrizes práticas para profissionais que lidam com análise de dados, com foco em
melhorar a eficiência e escalabilidade de suas operações.

1.3 Justificativa
Este projeto justifica-se pela crescente demanda por eficiência no processamento de
dados em Python, devido ao aumento do volume e da complexidade dos conjuntos de
dados. Busca-se avançar nas melhores práticas de otimização para contribuir com o
desenvolvimento contínuo da ciência de dados, economizando tempo e recursos para
profissionais e organizações.
3

2 REVISÃO DE LITERATURA
Nos tempos atuais, o processamento de dados desempenha um papel fundamental em
quase todos os aspectos de nossas vidas. Desde a análise de dados para tomada de decisões
empresariais até a personalização de recomendações em plataformas de entretenimento, os
dados são a espinha dorsal de muitos serviços e sistemas. No entanto, com o avanço da
tecnologia e o surgimento de novas fontes de dados, como sensores IoT e redes sociais, o
volume de dados gerados diariamente atingiu proporções gigantescas. Esse crescimento
exponencial de dados rapidamente excede os limites das tecnologias de processamento de
dados mais antigas, tornando imperativo o desenvolvimento de soluções mais eficientes e
escaláveis para lidar com esses desafios.

Figura 1: Tabela demonstrativa sobre quantidade/tipos de dados gerados por plataformas.

No atual estágio de desenvolvimento computacional e de integração global propiciado


pela rede mundial de computadores, a quantidade de dados e informações produzidos
chega a patamares nunca vistos. Não é com espanto que se ouve que a humanidade
produziu mais nas últimas décadas em termos de volume de dados e de informação do que
em toda sua história (LEONCIO, 2022).
É essencial ressaltar que, mesmo diante dos desafios impostos pelo crescimento
exponencial do volume de dados, as pesquisas na área de processamento de dados não
param. Pelo contrário, novas tecnologias e abordagens continuam a surgir constantemente,
impulsionadas pela necessidade de lidar com conjuntos de dados cada vez maiores e mais
complexos. À medida que a demanda por soluções mais eficientes e escaláveis cresce,
pesquisadores e desenvolvedores dedicam seus esforços ao desenvolvimento de
ferramentas inovadoras e técnicas avançadas de processamento de dados. Essa incessante
busca por soluções melhores e mais eficazes é um reflexo do dinamismo e da adaptabilidade
da comunidade de ciência de dados, que está sempre buscando superar os desafios
impostos pelo rápido crescimento do volume de dados. Portanto, apesar dos obstáculos
apresentados pelo aumento exponencial dos dados, podemos esperar que novas tecnologias
continuem a surgir e evoluir, fornecendo soluções cada vez mais sofisticadas para lidar com
os desafios do processamento de dados em larga escala.
Em relação aos dados utilizados em Big Data, os principais desafios estão na sua
complexidade e no processo de análise. Novas tecnologias, métodos de análise,
ferramentas, software, soluções em geral devem ser desenvolvidos à medida que o número
de dados aumenta (CAROLINE, 2018).
O surgimento do Polars pode ser entendido como uma resposta direta aos desafios
apresentados pelo crescimento exponencial do volume de dados e às demandas por
soluções mais eficientes e escaláveis de processamento. Desenvolvido como uma alternativa
ao Pandas, o Polars oferece uma abordagem inovadora e orientada para o desempenho,
projetada especificamente para lidar com grandes conjuntos de dados de forma rápida e
4

eficiente. Ao utilizar estratégias avançadas de processamento e otimização de dados, o


Polars demonstrou ser capaz de superar as limitações do Pandas em termos de velocidade
de processamento e eficiência de uso de memória. Com sua arquitetura moderna e recursos
inovadores, o Polars emerge como uma escolha promissora para profissionais e
pesquisadores que buscam enfrentar os desafios do processamento de dados em larga
escala, oferecendo uma alternativa poderosa e eficaz ao Pandas.

3 METODOLOGIA
3.1 Aprofundamento em pesquisas
O início desta pesquisa foi marcado pela seleção cuidadosa do tema, com o
reconhecimento da crescente importância do processamento de dados em Python e a
relevância das bibliotecas Pandas e Polars nesse contexto. A partir dessa escolha, foram
iniciadas pesquisas aprofundadas para entender melhor o assunto, abrangendo desde
conceitos fundamentais, como estatísticas e amostragem de dados, até a exploração de
bibliotecas específicas em Python voltadas para análise de dados. Paralelamente, foram
estudados conceitos de otimização de processamento de dados, visando compreender as
técnicas disponíveis para melhorar a eficiência das operações realizadas.

Fonte: DATABASE-LIKE ops benchmark. 2021.


Figura 2: Tabela comparativa de várias bibliotecas em python para análise de dados.

Além disso, durante essa fase inicial, foram explorados conceitos de tipagem de dados e
sua influência no desempenho das operações de processamento. A compreensão desses
aspectos foi fundamental para orientar o desenvolvimento posterior do estudo,
proporcionando uma base sólida para a seleção de metodologias e a realização de testes e
análises comparativas entre as bibliotecas Pandas e Polars.

3.2 Biblioteca Polars


Durante o desenvolvimento desta pesquisa, uma etapa crucial envolveu a exploração
detalhada da documentação do Polars, a fim de compreender por que essa biblioteca está
ganhando destaque e sendo amplamente utilizada para processamento de dados em
Python. A investigação começou com uma análise minuciosa da visão geral fornecida na
documentação, destacando os principais recursos e vantagens oferecidos pelo Polars em
comparação com outras bibliotecas similares, como Pandas.
5

Uma das principais áreas de foco foi identificar as principais funções e métodos
disponíveis no Polars, especialmente aqueles que são fundamentais para o processamento
eficiente de grandes conjuntos de dados. Isso incluiu a análise de operações de leitura e
escrita de dados, manipulação de dataframes, operações de agregação e transformação,
bem como operações de junção e filtragem de dados. A compreensão dessas
funcionalidades permitiu uma avaliação detalhada das capacidades do Polars em lidar com
diversas tarefas de análise de dados.
Além disso, a pesquisa na documentação do Polars também abordou aspectos
relacionados à performance e otimização da biblioteca, incluindo o suporte para operações
paralelas e o uso eficiente de memória. Ao compreender as técnicas de otimização
implementadas no Polars, foi possível contextualizar as comparações de desempenho entre
esta biblioteca e o Pandas, identificando as situações em que o Polars oferece vantagens
significativas em termos de eficiência e escalabilidade. Essa análise detalhada da
documentação do Polars desempenhou um papel fundamental no processo de pesquisa,
fornecendo insights valiosos para a comparação e avaliação das principais funcionalidades
oferecidas por esta biblioteca em relação ao Pandas.

3.3 Exploração de dados


Após a imersão na documentação do Polars e compreensão de suas capacidades, o
próximo passo da pesquisa envolveu a aplicação prática dos conceitos aprendidos. Nesse
estágio, o orientador forneceu conjuntos de dados fictícios, gerados aleatoriamente, para
simular uma situação em que fosse necessário otimizar o processamento de dados visando
melhorar os resultados. Esses conjuntos de dados foram projetados para representar
desafios comuns encontrados em cenários reais de análise de dados, incluindo grande
volume de dados, diversidade de tipos e complexidade nas operações a serem realizadas.
O ambiente de desenvolvimento escolhido para essa etapa foi a caixa de areia (em
inglês Sandbox), que proporcionou um ambiente seguro e isolado para realizar
experimentações e testes. Utilizando o Polars e o Pandas, foram implementadas diversas
operações de manipulação e análise de dados nos conjuntos fornecidos, com o objetivo de
identificar oportunidades de otimização e melhorar a eficiência do processamento. Essa
abordagem prática permitiu explorar diretamente as capacidades das bibliotecas em
situações controladas, proporcionando insights valiosos sobre suas performances relativas e
suas respectivas vantagens em diferentes contextos de uso.

3.4 Testes de processamento


Os testes de processamento de dados tiveram início com a comparação do espaço
ocupado por diferentes tipos de dados, incluindo strings e booleanos. Essa análise foi
fundamental para entender o impacto do tipo de dado na ocupação de memória e no
desempenho das operações de processamento. Por meio da medição do espaço ocupado
por cada tipo de dado nos conjuntos fornecidos, foi possível identificar padrões e tendências
que influenciaram as estratégias de otimização a serem adotadas.
6

Fonte: Autor.
Figura 3: Teste de uso de memória utilizando uma coluna de um milhão de linhas.

Esta imagem representa um teste feito para poder comparar o quanto de espaço se ocupa em
relação ao tipo da coluna, entre os tipos booleanos e string.
A partir destes testes foi possível concluir que seria mais viável trocar colunas do tipo
string que tenham apenas duas variações para o tipo booleano, economizando cerca de oito
vezes mais espaço na memória e gastando metade do tempo.
Além disso, foram realizados testes de amostragem dos dados, com o objetivo de
simplificar a visualização e análise de conjuntos de dados volumosos. A amostragem
permitiu reduzir o tamanho dos conjuntos de dados de forma controlada, facilitando a
identificação de padrões e insights relevantes para a otimização dos datasets. Essa
abordagem proporcionou uma visão mais clara e focada das características dos dados,
permitindo identificar pontos de intervenção para a aplicação de técnicas de otimização com
maior precisão e eficácia. Ao realizar esses testes iniciais de processamento de dados, foi
possível estabelecer uma base sólida para a investigação mais aprofundada das estratégias
de otimização a serem implementadas nos conjuntos de dados fornecidos.

Fonte: Autor.
Figura 4: Amostragem dos dados da coluna de local de compras.
7

Uma situação ocorrida que foi de grande ajuda para esclarecer alguns conceitos da
otimização e organização de datasets foi quando havia colunas indicando locais de
pagamento e métodos de pagamento, que apareciam dando as seguintes informações: um
cliente fazia compras pela internet e pagando fisicamente com cheque e os gráficos
puderam demonstrar esse tipo de ocorrência.
Através de situações como essa foi importante observar que há momentos em que não
há lógica em algumas linhas da tabela que informam um caso em que há métodos de
pagamentos físicos em lugares de compra online. Graças ao momento de amostragem foi
possível enxergar muitas oportunidades para otimizar os datasets gerados pelo orientador.

3.5 Otimização no processamento

O processo de otimização de processamento foi conduzido utilizando a biblioteca


Polars, com foco na redução do tempo de processamento e na minimização do uso de
memória. Para isso, foi essencial monitorar cuidadosamente o tempo de cada operação
realizada, visando identificar oportunidades de melhoria.
Uma das estratégias de otimização adotadas foi a conversão dos tipos de dados inteiros
(int64) e de ponto flutuante (float64) para tipos de dados mais compactos sempre que
possível. Essa abordagem permitiu reduzir significativamente o espaço ocupado pelos dados
na memória, contribuindo para a eficiência do processamento. Além disso, algumas strings
com apenas duas variantes possíveis foram convertidas em variáveis booleanas,
aproveitando a economia de espaço proporcionada por esse tipo de dado.

Fonte: Autor.
Figura 5: Demonstração de transformação de coluna para booleano com gráfico e tempo.

Outra técnica utilizada foi a conversão de algumas strings em dados categóricos,


especialmente aquelas que representavam valores repetidos em um conjunto de dados. A
categorização desses dados permitiu economizar ainda mais espaço na memória, mantendo
a integridade das informações e facilitando operações subsequentes de manipulação e
análise de dados.
Durante cada alteração realizada, foi observado o quanto de espaço era reduzido em
comparação com a configuração anterior. Essa análise permitiu avaliar o impacto de cada
modificação na eficiência de uso de memória e no desempenho geral do processamento de
8

dados. Ao longo desse processo de otimização, o tempo de processamento foi


constantemente monitorado e comparado com os resultados anteriores, garantindo que as
alterações realizadas resultassem em melhorias significativas de desempenho. Ao final do
processo, foi possível alcançar uma otimização eficaz do processamento de dados, com
ganhos substanciais em eficiência e economia de recursos.

Fonte: Autor.
Figura 6: Gráfico de redução de memória a partir das modificações com polars.

Após a análise dos resultados obtidos com o Polars, foram realizados testes
comparativos com o Pandas. Utilizando as mesmas operações e conjuntos de dados,
buscamos avaliar o desempenho e a eficiência do Pandas em relação ao Polars. Os testes
foram conduzidos de forma resumida, aproveitando os insights obtidos com as análises
anteriores para direcionar os esforços de comparação entre as duas bibliotecas. Essa
abordagem permitiu uma avaliação abrangente das vantagens e limitações de cada
biblioteca em diferentes cenários de processamento de dados.
9

Fonte: Autor.
Figura 7: Gráfico de redução de memória a partir das modificações com pandas.

4 RESULTADOS E DISCUSSÕES
4.1 Resultado Pandas e Polars
Após a realização das otimizações com as bibliotecas Pandas e Polars, ficou evidente
que o Polars se destacou em termos de eficiência e economia de recursos. Os testes
demonstraram que o tempo necessário para executar as operações com o Polars foi
consideravelmente menor em comparação com o Pandas, enquanto o espaço ocupado na
memória também foi significativamente reduzido. Esses resultados indicam que o Polars é
mais viável para processamento de grandes conjuntos de dados (em inglês large datasets),
oferecendo um desempenho superior e uma melhor utilização dos recursos do sistema.

Fonte: Autor.
Figura 8: Comparação de espaço e tempo de processamento do pandas e polars.

Além disso, durante a análise comparativa, identificamos a LazyAPI do Polars como uma
alternativa ainda mais eficiente. A utilização da LazyAPI permitiu reduzir a necessidade de
10

refazer leituras do dataset, resultando em um processamento mais rápido e uma melhor


utilização dos recursos disponíveis. Essa descoberta ressalta a importância de explorar
diferentes recursos e funcionalidades das bibliotecas de processamento de dados para obter
os melhores resultados em termos de desempenho e eficiência. Em suma, os resultados
desta pesquisa indicam que o Polars, especialmente quando combinado com a LazyAPI, é
uma escolha promissora para lidar com grandes conjuntos de dados, oferecendo um
processamento mais rápido e eficiente em comparação com outras bibliotecas disponíveis.

Fonte: Autor.
Figura 9: Demonstração do tempo e espaço de uso da LazyAPI do polars.

5 CONCLUSÃO
Após uma análise detalhada do processamento de dados utilizando as bibliotecas
Pandas e Polars, fica evidente que o Polars se mostrou como a opção mais viável para lidar
com large datasets. Os resultados dos testes revelaram uma diferença significativa no
desempenho entre as duas bibliotecas, com o Polars processando os dados em apenas 14
segundos e ocupando 3.3 MB de memória, enquanto o Pandas levou 64 segundos e utilizou
8.5 MB. Essa discrepância destaca a eficiência do Polars em termos de tempo de
processamento e utilização de recursos.
Ao longo deste estudo, foi possível aprender a importância de explorar diferentes
bibliotecas e técnicas de otimização para alcançar os melhores resultados em
processamento de dados. A análise comparativa entre Pandas e Polars destacou a
necessidade de considerar não apenas a velocidade de processamento, mas também o
consumo de memória, especialmente ao lidar com conjuntos de dados volumosos. Além
disso, a descoberta da LazyAPI do Polars como uma opção ainda mais eficiente ressalta a
importância de explorar e aproveitar ao máximo os recursos disponíveis nas bibliotecas de
processamento de dados.
Em suma, este estudo demonstra a importância de escolher a ferramenta certa para
cada tarefa de processamento de dados, levando em consideração não apenas o
desempenho, mas também a eficiência em termos de uso de recursos. O conhecimento
adquirido ao longo deste processo contribui para uma melhor compreensão das melhores
práticas e técnicas de otimização em ciência de dados, permitindo que profissionais e
pesquisadores tomem decisões mais informadas ao enfrentar desafios de processamento de
dados em larga escala.
11

REFERÊNCIAS

CIENTÍFICA, Potencialidades e Limites do Processamento de Dados em Pesquisas Sobre A


Produção. POTENCIALIDADES E LIMITES DO PROCESSAMENTO DE DADOS EM PESQUISAS
SOBRE A PRODUÇÃO CIENTÍFICA. Matinhos, Pr, Brasil: Movimento Revista de Educação
Física da Ufrgs, 2022. 15 p. Disponível em:
https://www.scielo.br/j/mov/a/XSGq9BdcnNvbkFdrKj8yZGR/?format=pdf. Acesso em: 16
fev. 2024.

INTERNET LIVE STATS. [Elaboration of data by International Telecommunication Union (ITU),


World Bank, and United Nations Population Division]. Disponível em:
https://www.internetlivestats.com/. Acesso em: 27 nov. 2021.

DATABASE-LIKE ops benchmark. 2021. Disponível em: https://h2oai.github.io/db-


benchmark/. Acesso em: 16 fev. 2024.

ROSA, Caroline Silvério. Estudo sobre as técnicas e métodos de análise de dados no


contexto de Big Data. Patos de Minas - Mg: Faculdade de Engenharia Elétrica, da
Universidade Federal de Uberlândia, Campus Patos de Minas, 2018. 61 p. Disponível em:
https://repositorio.ufu.br/bitstream/123456789/23710/1/EstudoTecnicasMetodos.pdf.
Acesso em: 16 fev. 2024.

SOBRE O(S)AUTOR(ES)

Sobre os autores:
_________________

Rafael Henrique de Mattos Ribeiro (ALUNO)

Graduando em Tecnólogo em Análise e Desenvolvimento de Sistemas


pela escola de tecnologia Faculdade Senai Gaspar Ricardo Junior.
Estagiário pela empresa 2RPnet
12

Leonardo Fonseca Reginato (ORIENTADOR)

Possui bacharel em Engenharia de Petróleo pela Universidade Católica


de Santos (2018) e Mestrado em Engenharia de Minas e Petróleo pela
Universidade de São Paulo (2022). Tem experiência nas áreas de ciência
de dados, engenharia de dados, análise de dados, desenvolvimento de
software e arquitetura de software. Atualmente, ocupa o cargo de
Engenheiro de Machine Learning Pleno na 2RP Net (2021 - 2024).

André Cassulino Araujo Souza (CO-ORIENTADOR)

Possui graduação em Análise e Desenvolvimento de Sistemas pelo


Instituto Federal de São Paulo (2012) e mestrado em Ciência da
Computação pela Universidade Federal de São Carlos (2017).
Atualmente é professor de ensino superior - SENAI - Departamento
Regional de São Paulo. Tem experiência na área de Ciência da
Computação, com ênfase em Desenvolvimento de Sistemas.

Você também pode gostar