[SPIKE] Verificar frameworks de visualização de dados Open-Source (R, Python, JS e C#)
DATA:
OBJETIVO
Avaliar ferramentas de visualização de dados, e sua integração com diversos serviços.
JUSTIFICATIVA
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.
ENVOLVIDOS
Desenvolvimento do Estudo:
- João Thomas de Souza Telles - Assessor
- Caio César de Oliveira Freitas - Assessor
Suporte Técnico:
- Anderson Gomes de Souza - Assessor
Coordenador de Análise e Gestão de Dados:
- Abdenildo Deividy Sobreira dos Santos
Product Owner:
- Pedro Henrique de Andrade Gomes
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
SUMÁRIO
- Visualizando informação... por que não usar uma linguagem de programação?
- Conhecendo a alternativa em R
- Conhecendo a alternativa em Python
- Conhecendo a alternativa em JavaScript
- Conhecendo a alternativa em C#
- Comparativos
Visualizando informação... por que não usar uma linguagem de programaçã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.
Conhecendo a alternativa em R
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.
Alguns links para conhecer mais:
- 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.html
Guiabá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/
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.
Conclusão sobre o R
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.
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)
Conclusão(Sobre o Python)
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.
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.
Conclusão(Sobre javascript)
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.
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 (Sobre C#)
Embora seja uma ferramenta potente para N coisas, o C# não é indicado e nem eficiente na criação de banco de dados.