[SPIKE] Verificar frameworks de visualização de dados Open-Source (R, Python, JS e C#)
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
Suporte Técnico:
- Anderson Gomes de Souza
Coordenador de Análise e Gestão de Dados:
- Abdenildo Deividy Sobreira dos Santos
Product Owner:
- Pedro Henrique de Andrade Gomes
GLOSSÁRIO
- lista de termos
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
- Conclusão
- Referências
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 ao redor do mundo que implementam pacotes de funções, dados e códigos compilados que fornecem um leque de opções para análise de dados. Em 1997, foi anunciado o 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.
Principais características:
- Ler dados e arquivos de texto;
- Web scraping;
- Pré-processamento de dados;
- Cálculos matemáticos, análise estatística, machine learning, deep learning, etc.
- Gráficos estáticos (ggplot2; D3) e interativos (echarts, googleVis, highcharts, plotly, dygraph);
- Documentos estáticos e interativos (PDF, Word, PowerPoint, HTML) ;
- 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 VS. 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, que podem ser aprimorados com temas em CSS, htmlwidgets e ações em JavaScript.
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:
- Download do R: https://cran.r-project.org/
- Download do RStudio: https://www.rstudio.com/products/rstudio/download/#download
- Shiny: https://shiny.rstudio.com/
- R Markdown: https://rmarkdown.rstudio.com/index.html
- Galerias oficiais do RStudio:
- Outros links podem ser encontrados na internet.
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, e 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 artigos
- 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
- Flexibilidade e facilidade na elaboração de visualizações;
- Disponibilidade de diversos pacotes voltados à análise de dados;
- Ao que tudo indica, deve ser mais rápido que Python (ainda não testei PyScript);
- Não tem um back-end muito bom, depende sempre de outra linguagem em caso de implementação web;
- Alta complexidade de implementação em um cenário onde existem vários dashboards a serem feitos em R;
- Exige conhecimento em outras linguagens (HTML, CSS e JavaScript) para estilizar os dashboards.
Conclusão (Sobre o R)
O R é uma linguagem potente devido às suas facilidades e capacidade de lidar com dados eficientemente, além de ser eficaz na geração de gráficos e visualizações. 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