Ir para o conteúdo principal

[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 
  • Caio César de Oliveira Freitas

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/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 (ggplot2; D3) e interativos (echarts, googleVis, highcharts, plotly, dygraph);
    • 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).

    image.png

    Vantagens e desvantagens do R

    O R há muito o que melhorar - pouco mais de 20 anos de vida -

    • 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 à 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.

    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.htmlhttps://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:

    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.

    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