[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:
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 (ggplot2; D3) e interativos (echarts, googleVis, highcharts, plotly, dygraph, bokeh);
- 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: shinydashboard, shinydashboardPlus, bs4dash e 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).
- Python: 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
- Javascript: é universalmente compatível, desde que você use uma linguagem que terá interface web. (Em alguns casos não é necessária a interface web, mas na maioria.)
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.
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.
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:
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!
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
- Documentação oficial: https://cran.r-project.org/manuals.html
- Download do R: https://cran.r-project.org/
- Download do RStudio: https://www.rstudio.com/products/rstudio/download/#download
- Guia
de R Markdown:https://bookdown.org/yihui/rmarkdown/ Guia de Shiny:https://mastering-shiny.org/index.htmlGuiabásico de R: https://bookdown.org/ripberjt/labbook/basics-of-r.html- Guia de R Avançado: https://adv-r.hadley.nz/index.html
- Guia de Visualização de Dados com R: https://clauswilke.com/dataviz/
- Guia de R Markdown: https://bookdown.org/yihui/rmarkdown/
- Guia de Shiny: https://mastering-shiny.org/index.html
- Guia de Shiny Avançado: https://unleash-shiny.rinterface.com/welcome.html
- Guia de R para Data Science: https://r4ds.had.co.nz/index.html
- Guia de Mineração de Texto com R: https://www.tidytextmining.com/
GuidaGuia de JavaScript para R: https://book.javascript-for-r.com/- Lista de guias para aprendizado: https://bookdown.org/
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
Nenhum comentário