[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 é....(alguma coisa)
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
- Mais fácil na hora de criar visualizações.
- 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.
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 app Shiny 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.