As principais ferramentas de desenvolvimento em ciência de dados

Leticia Portella
pizzadedados
Published in
7 min readJan 16, 2019

Quando você começa nesse mundo, as coisas ficam extremamente confusas. São milhares de termos e conceitos, todos aprendidos ao mesmo tempo. Normalmente, os textos focam em linguagens a serem estudadas para essa área, mas dessa vez optamos por trazer algo diferente. Nesse texto, vim trazer uma explicação “simples” para algumas ferramentas de desenvolvimento na área de ciência de dados. Embora algumas vezes a própria ferramenta esteja atrelada a uma linguagem específica, o objetivo é deixar claro o que são essas ferramentas, seus principais potenciais. Esse não é um texto sobre como abrir planilhas e processar dados, mas sobre aonde essas ferramentas de análise vivem e se reproduzem :)

Todos prontos?

Virtualenv

Virtualenv é uma ferramenta de Python feita para isolar ambientes de desenvolvimento com Python. Ela é muito prática pra isolar os ambientes e pacotes usados em um projeto de outro projeto que usa versões diferentes. É especialmente importante se você considerar que alguns sistemas operacionais usam Python por baixo dos panos. Imagine que seu sistema usa uma determinada biblioteca com uma determinada versão. Alterar isso pode gerar complicações no seu sistema operacional como um todo.

Imagine que o seu computador (e sistema operacional) é uma caixa enorme que contém vários pacotes:

Seu sistema operacional é como se fosse uma caixa, com uma versão de Python e das bibliotecas Python que ele precisa, com as versões que ele precisa.

O virtualenv é como se você criasse uma nova "caixinha", e dentro dela instalasse o que você quiser: qualquer versão de Python e qualquer versão das bibliotecas que você usa. Como você criou uma nova "caixinha", o que está dentro dela é totalmente isolada do seu ambiente geral e facilmente apagado, caso o seu projeto deixe de existir.

Exemplificação de como um virtualenv é uma "caixinha" dentro da "caixona" que é seu sistema operacional

Como você pode criar múltiplos virtualenvs, cada projeto pode (e normalmente deve) ter sua própria "caixinha", facilitando o gerenciamento de pacotes e bibliotecas para cada projeto e deixando as ferramentas do seu sistema operacional intactas.

Um mesmo sistema operacional pode ter múltiplos virtualenvs

Jupyter

O projeto Jupyter é um projeto de código aberto (open-source) que dá suporte para que as pessoas possam fazer computação científica e ciência de dados de maneira iterativa e em várias linguagens. Normalmente, quando as pessoas falam Jupyter, elas provavelmente estarão se referindo à ferramenta mais conhecida do projeto: o Jupyter Notebook.

Os notebooks surgiram em 2014 e rapidamente ganharam espaço no mundo científico e acadêmico. Ele é um ambiente de desenvolvimento que permite que você escreva códigos, textos, gráficos, fórmulas, vídeos e muito mais em um único lugar. Ele é extremamente poderoso, por exemplo, para dar aulas, porque a explicação do que o código faz e o código em si ficam no mesmo documento. Um exemplo genial é da Professora Lorena Barba que fez 12 notebooks para explicar como aplicar em código equações de mecânica de fluidos bem complexas.

Neste notebook você pode ver exemplos de várias coisas que um Jupyter Notebook te permite fazer.

Exemplo de um Jupyter Notebook

Ao rodar o sistema do Jupyter no seu computador, o ambiente abre dentro de um navegador padrão de internet. O que facilita o acesso ao ambiente para muitos usuários. Os arquivos são salvos com a extensão .ipynb e podem ser exportados para HTML (abrir em qualquer navegador padrão) ou para PDF.

Spyder

Spyder também é um ambiente de desenvolvimento voltado para computação científica e ciência de dados usando Python. Ao contrário do Jupyter Notebook, ele é uma aplicação Desktop. O ambiente integra uma área de desenvolvimento de código, um terminal para rodar os comandos (e scripts) e uma área de visualização das variáveis já existentes.

Ele também conta com ferramentas de análise de qualidade de código e atalhos para acesso rápido à documentação de uma função, o que facilita bastante o desenvolvimento, especialmente para quem está começando!

Uma coisa legal é que o Spyder também tem um plugin para Jupyter Notebook, permitindo que você leia, altere e crie arquivos notebooks dentro do ambiente do Spyder.

Exemplo do ambiente do Spyder. A direita a árvore de arquivos, em seguida o script com o código, depois verificações de erros, e à direita acima as variáveis disponíveis e à direita abaixo o terminal com as figuras que são resultado do script.

R-Studio

Do mesmo jeito que o Spyder engloba script, interpretador e variáveis disponíveis para trabalhar usando Python, o R-Studio permite a mesma coisa para a linguagem de programação R. O R-Studio também é uma ferramenta de código aberto e tem versões para desktop e navegador.

O R-Studio também possui uma espécie de notebook de trabalho próprio chamado RMarkdown (extensao .rmd). Esse arquivo é semelhante à um arquivo do tipo Markdown só mais turbinado. Assim como no Jupyter, ele permite que códigos e textos coexistam no mesmo documento e que ele possa ser exportado para formatos diversos como PDF e HTML.

Exemplo do ambiente R-Studio. A direita no canto inferior uma janela para documentação do R e também acesso à árvore de arquivos e gráficos, à direita no canto superior as variáveis disponíveis. À esquerda na parte superior os scripts em aberto para edição e na parte inferior o console para execução de códigos R.

MATLAB

MATLAB é um software focado em cálculo numérico, especialmente de matrizes (MATrix LABoratory). Ele é um software proprietário (e nada barato), disponível para Desktop e que tem uma linguagem de programação própria. Como a linguagem só existe dentro do software, normalmente fala-se de MATLAB tanto como ambiente de desenvolvimento e linguagem de programação. Ele é bastante usado na academia, mas o seu alto custo complica bastante a sua ampla utilização.

Exemplo do ambiente do MATLAB. À esquerda o script, no centro em cima um espaço para figuras, no centro embaixo o interpretador, à direita em cima as variáveis disponíveis e à direita abaixo o histórico de comandos digitados no interpretador.

Gera arquivos com a extensão .m

Octave

GNU Octave é uma linguagem computacional, desenvolvida para computação matemática. Como o MATLAB, o Octave é ao mesmo tempo um ambiente de desenvolvimento e uma linguagem de programação. Ele é considerado uma alternativa ao MATLAB aberta e muito boa, uma vez que ele lê os arquivos de extensão .m . Entre as compatibilidades entre Octave e MATLAB têm-se:

  • Matrizes como tipo fundamentais
  • Suporte para número complexos embutidos
  • Poderosas funções matemáticas

Diferenças existem, mas podem ser trabalhadas nas preferências de

Exemplo do ambiente do Octave. À esquerda em cima os arquivos disponíveis na pasta, à esquerda embaixo as variáveis disponíveis e o interpretador à direita com uma figura sobreposta.

Pip

Quando você for trabalhar, é comum precisar usar pacotes (chamados também de módulos ou bibliotecas) que outras pessoas criaram para facilitar a sua vida. O Spyder e o Jupyter são exemplos disso.

O Pip é uma ferramenta que gerencia a instalação de pacotes da linguagem Python. Ele contém mais de 600 mil projetos, o que torna ele ideal para instalar qualquer pacote Python que você quiser.

Importante: R, MATLAB e Octave não possuem gerenciadores de dependência específicos.

Anaconda

A Anaconda é uma distribuição livre e open-source que visa facilitar a instalação, uso e deploy de ferramentas de ciência de dados tanto de R quanto de Python em qualquer ambiente operacional (Windows, Linux e MacOS). Basicamente é um instalador que já deixa tudo pronto para você sair usando e trabalhando na área. Inclusive ele já instala todas as principais bibliotecas e ferramentas dessa área como o Pandas, Jupyter e Numpy. Como tem bastante coisa, a instalação é um pouco mais robusta e exige mais espaço no seu computador.

A distribuição Anaconda então é composta de algumas partes, como mostra a figura abaixo retirada do site do projeto.

Conda

Conda é um gerenciador open-source de pacotes (e dependências) que é a principal base do Anaconda, ou seja, todo o Anaconda é construído em cima dele. Ele é, digamos, um Pip com esteroides. Porque o mais impressionante é que ele funciona para todas as maiores linguagens da área de análise de dados: Python, R, Ruby, Lua, Scala, Java, JavaScript, C/ C++, FORTRAN.

Apesar dele ter sido construído como a base do Anaconda, ele pode ser instalado totalmente independente ao Anaconda. Ele ocupa bem menos espaço que a grande infra-estrutura do Anaconda, com um poder muito grande. O Conda é especialmente bom para gerenciar pacotes que precisam de uma outra dependência. Imagine que você precisa instalar um pacote que depende de uma ferramenta em Java… Instalar cada peça pode dar muita dor de cabeça, especialmente se falarmos de ambiente Windows. O Conda abstrai essa dificuldade para você.

Ah! E o conda também cria virtualenvs :)

Git e Github

Imagine que você fez um código lindo e maravilhoso, mas seu colega teve uma ideia brilhante e quer testar e melhorar seu código. Ele não precisa ir ao seu computador! Ele altera um arquivo e manda as correções para você. Mas como saber o que foi feito? O que foi alterado, quando e por quem? É exatamente isso que o Git faz. O Git é um sistema que controla versões. Com ele é possível saber quem alterou o quê, quando, onde e todos os comentários que a pessoa fez nas alterações. Ele é uma das bases do desenvolvimento de software nos dias de hoje e os cientistas de dados não estão de fora dessa.

Agora, imagine que você fez o seu código com uma análise super complexa, de uma conjunto de dados enorme e que a análise demorou pra sempre. E aí seu computador morreu. Senta e chora? Não se você usar uma plataforma online para colocar seu código! O Github, assim como outras plataformas semelhantes como o Bitbucket e o Gitlab, é um sistema que permite que você armazene seu código online. O diferencial dele para um Dropbox ou Google Drive é que ele implementa o sistema Git para você. Isso permite que todas as alterações do código e as pessoas que as fizeram estejam guardadas na nuvem e não sejam perdidas caso o computador de alguém morra. Dessa forma, você pode voltar a "versões passadas" do seu código (caso algo tenha dado errado) ou achar momentos em que erros foram introduzidos. É uma ferramenta fundamental para quem quer construir um portfólio :)

--

--

Leticia Portella
pizzadedados

A happy dev, in love with data science and podcaster at Pizza de Dados