Ir para o conteúdo principal

[SPIKE][WALL-E] Verificar frameworks de visualização de dados Open-Source (R, Python, JS e C#)


Data de elaboração 18/07/2022
Responsável pelo estudo

Anderson Gomes de Souza - Assessor

Caio César de Oliveira Freitas - Assessor

João Thomas de Souza Telles - Assessor

Equipe do estudo Time EVA e Time Wall-E
Alvo projeto
Origem

Objetivo estratégico: Avaliar ferramentas de visualização de dados, e sua integração com diversos serviços.

Objetivo O Data Studio e o Power BI, embora ferramentas potentes, são limitados em comparação à qualquer linguagem de programação, na maioria dos aspectos.
Documentação correlata
Observações


Glossário

  • Dashboard: Painel com vários gráficos, utilizado para monitorar alguma informação.
  • Docker: Ferramenta de conteinerização 
  • IFrame: tag do HTML que permite invocar um site dentro de outro.
  • Back-end: a parte da aplicação que lida com servidor e banco de dados
  • Front-end: O visual da aplicação

Introdução

Uma das etapas mais importantes da Análise de Dados é a visualização dos dados. No cenário atual, os métodos de visualização utilizados são todos ferramentas prontas, que tem como vantagem a conveniência, e até mesmo a velocidade na criação de visualizações potentes. Porém essas ferramentas tem falhas grandes: o Data Studio não é viável atualmente devido ao requerimento do banco ter um IP externo publicado, enquanto o Power BI é caro, lento, de difícil adaptabilidade e integração em um ambiente web. Então surge a dúvida, por que não... R? Por que não... Python? Por que não... uma alternativa open-source? Este estudo busca analisar qual a melhor alternativa, e documentar as alternativas conhecidas nas linguagens citadas no título.

Desenvolvimento - Verificar frameworks de visualização de dados Open-Source (R, Python, JS e C#)

O R é uma linguagem de programação para computação e gráficos estatísticos sustentado pelo R Core Team e pela R Foundation for Statistical Computing. Foi criado pelos estatísticos Ross Ihaka e Robert Gentleman na Universidade de Auckland, Nova Zelândia, em 1995, e sua primeira versão oficial em 2000.

A linguagem conta com uma comunidade de colaboradores/desenvolvedores ao redor do mundo que implementam e disponibilizam pacotes de funções, dados e códigos compilados fornecendo um toolkit para análise de dados, além dos pacotes já fornecidos pelos desenvolvedores.

Os pacotes ficam disponíveis no CRAN (Comprehensive R Archive Network), onde ficam armazenados arquivos executáveis do R, códigos fonte, documentações e pacote contribuídos pelos usuários. Porém, muitos desenvolvedores disponibilizam seus pacotes em outras plataformas, como o Github, por exemplo - às vezes os pacotes estão tanto no CRAN como no Github. Sendo assim, os meios de instalação de pacotes mais usuais são: via CRAN e via Github.

O CRAN oferece uma lista de tópicos onde estão agrupados os principais pacotes referente a uma determinada tarefa, são elas:

rTasks.png

Como principais tarefas que podem ser desenvolvidas no R, podemos listar algumas:

  • Leitura de dados em diversas extensões;
  • Pré-processamento de dados;
  • Operações matemáticas/lógicas, análise estatística, machine learning, deep learning, etc.;
  • Gráficos estáticos (ggplot2D3) e interativos (echartsgoogleVishighchartsplotlydygraphbokeh);
  • Web scraping (raspagem de dados);
  • Documentos estáticos e interativos (artigos, livros, slides);
  • Dashboards;
  • Aplicativos e websites para visualização de dados.

Existem algumas interfaces para programar em R, como por exemplo: Rattle GUI, R Commander, RKWard e Tinn-R. Além disso, a linguagem pode ser programada em Eclipse via StatET plugin e Visual Studio via R Tools para Visual Studio. No entanto, o ambiente mais utilizado (disparadamente) é o RStudio.

Existem diversos pacotes para elaborar visualização de dados em R são, um dos mais populares é o Shiny. Essa biblioteca permite construir aplicativos web interativos e dashboards através do R - sem exigir conhecimentos de outras linguagens, no entanto, os resultados podem ser aprimorados através de CSS, htmlwidgets e ações em JavaScript.

Para elaboração de dashboards, existem alguns pacotes específicos com funções que auxiliam na construção, como: shinydashboardshinydashboardPlusbs4dash flexdashboard - esse último permite criar dashboards simples de forma rápida. Além disso, é possível implementar outros templates de dashboards, como o Material, do Google; argonDash; e tablerDash.

Outra biblioteca bastante popular é o R Markdown. O pacote conta com diversas funções que permitem criar documentos com análise dinâmicas. Os documentos podem ser gerados em diversos formatos, incluindo HTML, PDFs, arquivos em Word, slideshows, entre outros.

Integrando R com outras linguagens!

- C# com ASP.NET : O R possui uma biblioteca, R.NET, que permite algum nível de integração entre R e C#, mas o ASP.NET entra em conflito com ela. A solução neste cenário seria subir uma imagem do Docker com um aplicativo em R Shiny e utilizar o Iframe dentro da página, conforme o exemplo abaixo (note que: 1 - o dashboard abaixo é público; 2 - não foi feito para ser utilizado como Iframe).

image.png

Vantagens e desvantagens do R

Embora o R seja uma boa alternativa, existem pontos a serem melhorados. Dessa forma, é possível listar algumas vantagens e desvantagens do R:

  • Flexibilidade e facilidade na elaboração de visualizações;
  • Permite elaborar 
  • Disponibilidade de diversos pacotes voltados a tratamento, análise e reportagem de dados;
  • Ao que tudo indica, deve ser mais rápido que Python (ainda não testei PyScript);
  • Alta complexidade de implementação em um cenário onde existem vários dashboards a serem feitos em R;
  • Requer conhecimento de outras linguagens para estilizar os dashboards.

Conhecendo a alternativa em Python

O Python é uma linguagem potente, com capacidade de trabalhar tanto na estruturação do projeto no back-end, quanto na visualização dos dados. Seja integração com IA, visualização de dados ou projetos web, Python é uma linguagem extremamente potente.

Com a biblioteca Dash, você consegue criar dashboards interativos através do Python, usando Pandas e Plotly, porém essa alternativa requer um back-end feito em Python.

image.png

Com o uso de PyScript, auxiliado ou não pela biblioteca Altair, é possível utilizar Python da mesma maneira que JavaScript, reduzindo muito a necessidade de um back-end feito em Python, conforme é demonstrado no vídeo a seguir: https://www.youtube.com/watch?v=3mfqTGs05cE. O PyScript é algo extremamente recente, porém já é extensamente utilizado em diversos projetos.

image.png

Integrando Python com outras linguagens!

- C#: O ambiente .Net dificulta integrações. Porém, existe a biblioteca IronPython para C#, que simula Python no código, mas compila esse código para .Net; a desvantagem disso é que IronPython não é Python, então não é possível fazer muitas das coisas que Python faz. Com PyScript, a história é diferente: assim como JavaScript, PyScript é integrável em qualquer ambiente web.

- R: O R é extremamente integrável com Python, como demonstrado nestes https://www.business-science.io/business/2018/10/08/python-and-r.html , https://towardsdatascience.com/five-ways-to-work-seamlessly-between-r-and-python-in-the-same-project-bf173e35fdef artigos. 

- Javascript: Universalmente compatível.

Vantagens e desvantagens do Python

- Linguagem robusta, permite um front e um back-end, removendo a necessidade de outra linguagem fazer o back-end(como seria com R)

- De mais fácil integração, graças ao PyScript

- Maior customização dos Dashboards

- Maior complexidade de código

- Relativamente pesado(mesmo pesado, ainda mais rápido que o Power BI)

Você escolheu Python? Comece aqui!!

Iniciante com Python

https://www.youtube.com/watch?v=rfscVS0vtbw

https://www.youtube.com/watch?v=XKHEtdqhLK8

https://do1.dr-chuck.com/pythonlearn/EN_us/pythonlearn.pdf(aqui tem os links desse mesmo pdf em diversas linguagens: https://www.py4e.com/book )

Iniciante com Data Science

https://www.youtube.com/watch?v=WUuiEEuvgFE&list=PL3ZslI15yo2qCEmnYOa2sq6VQOzQ2CFhj

Dashboards com Python

https://www.youtube.com/watch?v=aS64PvDqCbU

https://www.youtube.com/watch?v=ugSBaOT0rVI

Conhecendo a alternativa em Javascript

O Javascript é uma linguagem extremamente firme no mercado front-end, se demonstrando adaptável, e com diversas bibliotecas que facilitam a vida de um programador Javascript. Tanto no back-end, quanto no front-end, Javascript é uma tecnologia que não para de se expandir no mercado profissional de informação. Além disso, por ser uma linguagem baseada principalmente em web, o Javascript é universalmente integrável com qualquer front-end.

Com a biblioteca Chart.js, é possível criar lindos gráficos e dashboards interativos, tudo utilizando linguagens nativas do browser, como HTML canvas e Javascript:

js.gif

Já a biblioteca D3.Js é uma biblioteca extremamente potente, utilizada nos mais diversos cenários de dados no cenário web. Mais complexa que o Chart.js, a D3 permite muito mais controle, interatividade e visualização na apresentação dos seus dados, a custo de ser mais complexa de programar. Em termos de velocidade, ambas são extremamente eficientes. Segue abaixo um exemplo de uma visualização com D3.Js!

d3.gif

Vantagens e desvantagens do Javascript

- Os Dashboards mais bonitos serão feitos com Javascript

- A melhor interação entre usuário e Dashboard com certeza está no Javascript

- Leve. Como uma biblioteca nativa da web, o Javascript é consideravelmente mais rápido que as outras opções demonstradas nesse documento.

- Integrável. Você consegue integrar Js em qualquer outra coisa.

- Complexo: o Javascript, como linguagem fracamente tipada, tende a ter um código um pouco mais abstruso que linguagens fortemente tipadas.


Você escolheu Javascript? Comece aqui!!

Iniciante 

https://www.youtube.com/watch?v=BXqUH86F-kA&list=PLntvgXM11X6pi7mW0O4ZmfUI1xDSIbmTm

https://www.youtube.com/watch?v=LLqq6FemMNQ&list=PLJ_KhUnlXUPtbtLwaxxUxHqvcNQndmI4B(Node.js)

Chart.js

https://www.youtube.com/watch?v=7aBtf062oAs

https://www.youtube.com/watch?v=sQh40y9KqrI

D3.js

https://www.youtube.com/watch?v=mVEOUW0KCEI

https://www.youtube.com/watch?v=C4t6qfHZ6Tw&pp=ugMICgJwdBABGAE%3D

https://www.youtube.com/watch?v=urfyp-r255A

Conhecendo a alternativa em C#

O C# é a ferramenta mais utilizada no ambiente da SETIC, e seria favorecida caso as outras linguagens não apresentassem tanta eficiência e facilidade. 

Existem algumas bibliotecas de C# que permitem a criação de Dashboards, mas nenhuma delas é amplamente utilizada no mercado.

Integrando C# com outras linguagens!

- O C# não é particularmente integrável. Por algum motivo, quase todas as integrações que ele poderia ter fora de ferramentas Microsoft são extremamente dificultadas.

Vantagens e desvantagens do C#

- Não é integrável com facilidade.

- Comparativamente pior que todas as outras opções no trabalho de gerar visualizações de dados.

Conclusão

O R é uma linguagem potente devido à sua flexibilidade e capacidade de lidar com tratamento de dados, além de ser eficaz na geração de ilustrações gráficas, visualizações e realização de análise estatística. Além disso, a gama de pacotes existentes permitem a implementação de metodologias robustas e atualizadas para análise de dados.

Com o uso de um ShinyApp rodando em Docker, é possível integrar R com qualquer cenário web, porém ao mesmo tempo, essa é a limitação do R. Em um cenário em que se é necessário construir vários dashboards com R, você teria que ou implementar várias instâncias do Docker (uma para cada dashboard), ou construir uma aplicação em R extremamente robusta. Além disso, seria necessário um back-end em outra linguagem que não fosse R.

O Python é uma alternativa potente, altamente independente e adaptável.  Conhecido na Data Science por causa de bibliotecas com Pandas e Plotly, o Python se apresenta como uma alternativa que requer esforço. Embora possua diversas vantagens em sua independência e capacidade de integração, ele também é correspondentemente mais complexo: você consegue fazer de tudo, mas ao mesmo tempo, você precisa saber fazer de tudo. O Python é extremamente viável no cenário atual da Coordenadoria, principalmente devido ao conhecimento já adquirido por alguns membros da mesma.

O Javascript é a melhor ferramenta se seu objetivo é criar visuais impactantes, interativos e bonitos. Com sua capacidade de ser integrado em todas as linguagens web, as únicas limitações do Javascript são as limitações de complexidade e a capacidade do programador. Adaptável, rápido e eficiente são palavras chave associadas à ele.

Embora seja uma ferramenta potente para N coisas, o C# não é indicado e nem eficiente na criação de banco de dados.


Referências

Iniciante com Python

https://www.youtube.com/watch?v=rfscVS0vtbw

https://www.youtube.com/watch?v=XKHEtdqhLK8

https://do1.dr-chuck.com/pythonlearn/EN_us/pythonlearn.pdf(aqui tem os links desse mesmo pdf em diversas linguagens: https://www.py4e.com/book )

Iniciante com Data Science

https://www.youtube.com/watch?v=WUuiEEuvgFE&list=PL3ZslI15yo2qCEmnYOa2sq6VQOzQ2CFhj

Dashboards com Python

https://www.youtube.com/watch?v=aS64PvDqCbU

https://www.youtube.com/watch?v=ugSBaOT0rVI


Iniciante com JavaScript

https://www.youtube.com/watch?v=BXqUH86F-kA&list=PLntvgXM11X6pi7mW0O4ZmfUI1xDSIbmTm

https://www.youtube.com/watch?v=LLqq6FemMNQ&list=PLJ_KhUnlXUPtbtLwaxxUxHqvcNQndmI4B(Node.js)

Chart.js

https://www.youtube.com/watch?v=7aBtf062oAs

https://www.youtube.com/watch?v=sQh40y9KqrI

D3.js

https://www.youtube.com/watch?v=mVEOUW0KCEI

https://www.youtube.com/watch?v=C4t6qfHZ6Tw&pp=ugMICgJwdBABGAE%3D

https://www.youtube.com/watch?v=urfyp-r255A