Data Science e Python por onde começar?

Compartilhe!

Data Science e Python por onde começar?

Se você já ouviu falar de ciência de dados, certamente já ouviu falar de Python.

Você quer explorar os dois, mas não tem ideia por onde começar?

Não se preocupe – Python é uma das linguagens de programação mais fáceis de aprender. E, graças ao trabalho árduo de milhares de colaboradores de código aberto, você também pode fazer “ciência de dados”.

Quando você olhar o conteúdo deste artigo, pode achar que há muito o que dominar, mas este artigo foi projetado para aumentar suavemente a dificuldade à medida que avançamos.

Obviamente, um artigo não pode ensinar tudo o que você precisa saber sobre ciência de dados com python, mas depois de acompanhá-lo, você saberá exatamente onde olhar para dar os próximos passos em sua jornada de ciência de dados.

Conteúdo:

  • Por que Python?
  • Instalando Python
  • Usando Python para ciência de dados
  • Cálculo numérico em Python
  • Análise estatística em Python
  • Manipulação de dados em Python
  • Trabalho com bancos de dados em Python
  • Engenharia de dados em Python
  • Engenharia de Big Data em Python
  • Mais estatísticas em Python
  • Aprendizado de máquina em Python
  • Aprendizagem profunda em Python
  • APIs de ciência de dados em Python
  • Aplicativos em Python
  • Resumo

Por que Python?

Imagem para postagem

Python, como linguagem, possui muitos recursos que o tornam uma excelente escolha para projetos de ciência de dados.

É fácil de aprender, simples de instalar (na verdade, se você usa um Mac, provavelmente já o tem instalado) e tem muitas extensões que o tornam ótimo para fazer ciência de dados.

Só porque Python é fácil de aprender, não significa que seja uma linguagem de programação de brinquedo – grandes empresas como o Google também usam Python para seus projetos de ciência de dados. Eles até contribuem com pacotes para a comunidade, para que você possa usar as mesmas ferramentas em seus projetos!

Você pode usar Python para fazer muito mais do que apenas ciência de dados – você pode escrever scripts úteis, construir APIs, construir sites e muito mais. Aprender para ciência de dados significa que você também pode aprender facilmente todas essas outras coisas.

Coisas a serem observadas

Existem algumas coisas importantes a serem observadas sobre Python.

No momento, existem duas versões do Python que são de uso comum. São as versões 2 e 3.

A maioria dos tutoriais e o restante deste artigo presumem que você está usando a versão mais recente do Python 3. É bom estar ciente de que às vezes você pode encontrar livros ou artigos que usam o Python 2.

A diferença entre as versões não é enorme, mas às vezes copiar e colar o código da versão 2 quando você estiver executando a versão 3 não funcionará – você terá que fazer algumas edições leves.

A segunda coisa importante a notar é que o Python realmente se preocupa com os espaços em branco (ou seja, espaços e caracteres de retorno). Se você colocar um espaço em branco no lugar errado, seu programa provavelmente gerará um erro.

Existem ferramentas para ajudá-lo a evitar isso, mas com a prática você pegará o jeito.

Se você vem de programação em outras linguagens, Python pode se sentir um pouco aliviado: não há necessidade de gerenciar a memória e a comunidade o apoia muito.

Se Python é sua primeira linguagem de programação, você fez uma excelente escolha. Eu realmente espero que você aproveite seu tempo usando-o para construir coisas incríveis.

Instalando Python

A melhor maneira de instalar o Python para ciência de dados é usar a distribuição Anaconda (você notará uma grande quantidade de palavras relacionadas a cobras na comunidade).

Ele tem tudo de que você precisa para começar a usar Python para ciência de dados, incluindo muitos dos pacotes que abordaremos neste artigo.

Se você clicar em Produtos -> Distribuição e rolar para baixo, verá instaladores disponíveis para Mac, Windows e Linux.

Imagem para postagem

Mesmo se você já tiver Python disponível em seu Mac, você deve considerar a instalação da distribuição Anaconda, pois torna a instalação de outros pacotes mais fácil.

Se você preferir fazer as coisas sozinho, pode ir para o site oficial do Python e baixar um instalador lá.

Gestores de Pacotes

Os pacotes são partes do código Python que não fazem parte da linguagem, mas são realmente úteis para realizar certas tarefas. Falaremos muito sobre pacotes ao longo deste artigo, por isso é importante que estejamos preparados para usá-los.

Como os pacotes são apenas pedaços de código Python, podemos copiar e colar o código e colocá-lo em algum lugar que o interpretador Python (a coisa que executa seu código) possa encontrá-lo.

Mas isso é um incômodo – significa que você terá que copiar e colar coisas toda vez que iniciar um novo projeto ou se o pacote for atualizado.

Para contornar tudo isso, usaremos um gerenciador de pacotes.

Se você escolheu usar a distribuição Anaconda, parabéns – você já tem um gerenciador de pacotes instalado. Caso contrário, recomendo instalar o pip .

Não importa qual você escolha, você poderá usar comandos no terminal (ou prompt de comando) para instalar e atualizar pacotes facilmente.

Usando Python para ciência de dados

Agora que você instalou o Python, está pronto para começar a fazer ciência de dados.

Mas como você começa?

Como o Python atende a tantos requisitos diferentes (desenvolvedores da web, analistas de dados, cientistas de dados), existem muitas maneiras diferentes de trabalhar com a linguagem.

Python é uma linguagem interpretada, o que significa que você não precisa compilar seu código em um arquivo executável, você pode apenas passar documentos de texto contendo código para o interpretador!

Vamos dar uma olhada rápida nas diferentes maneiras de interagir com o interpretador Python.

No terminal

Imagem para postagem

Se você abrir o terminal (ou prompt de comando) e digitar a palavra ‘python’, você iniciará uma sessão shell. Você pode digitar qualquer comando Python válido lá e eles funcionarão exatamente como você espera.

Essa pode ser uma boa maneira de depurar algo rapidamente, mas trabalhar em um terminal é difícil mesmo em um projeto pequeno.

Usando um editor de texto

Imagem para postagem
Imagem para postagem

Se você escrever uma série de comandos Python em um arquivo de texto e salvá-lo com uma extensão .py, poderá navegar até o arquivo usando o terminal e, digitando python YOUR_FILE_NAME.py, poderá executar o programa.

Isso é essencialmente o mesmo que digitar os comandos um a um no terminal; é muito mais fácil corrigir erros e alterar o que seu programa faz.

Em um IDE

Imagem para postagem

Um IDE é um software de nível profissional que ajuda a gerenciar projetos de software.

Um dos benefícios de um IDE é que você pode usar recursos de depuração que informam onde você cometeu um erro antes de tentar executar seu programa.

Alguns IDEs vêm com modelos de projeto (para tarefas específicas) que você pode usar para definir seu projeto de acordo com as práticas recomendadas.

Notebooks Jupyter

Imagem para postagem

Nenhuma dessas maneiras é a melhor para fazer ciência de dados com python – essa honra particular pertence aos blocos de notas Jupyter.

Os notebooks Jupyter oferecem a capacidade de executar seu código um ‘bloco’ de cada vez, o que significa que você pode ver a saída antes de decidir o que fazer a seguir – isso é realmente crucial em projetos de ciência de dados, onde muitas vezes precisamos ver gráficos antes de Próxima Etapa.

Se estiver usando o Anaconda, você já terá o laboratório Jupyter instalado. Para iniciá-lo, você só precisa digitar ‘jupyter lab’ no terminal.

Se estiver usando pip, você terá que instalar o laboratório Jupyter com o comando ‘python pip install jupyter’.

Computação Numérica em Python

Provavelmente não será surpresa para você saber que a ciência de dados trata principalmente de números.

O pacote NumPy inclui muitas funções úteis para realizar o tipo de operações matemáticas de que você precisará para fazer o trabalho de ciência de dados.

Ele vem instalado como parte da distribuição Anaconda, e instalá-lo com pip é tão fácil quanto instalar notebooks Jupyter (‘pip install numpy’).

As operações matemáticas mais comuns que precisaremos fazer em ciência de dados são coisas como multiplicação de matrizes, computação do produto escalar de vetores, alteração dos tipos de dados de matrizes e criação de matrizes em primeiro lugar!

Veja como você pode fazer uma lista em uma matriz NumPy:

Imagem para postagem

Veja como você pode fazer a multiplicação de matrizes e calcular produtos escalares no NumPy:

Imagem para postagem

E aqui está como você pode fazer a multiplicação de matrizes em NumPy:

Imagem para postagem

Estatísticas em Python

Com a matemática fora do caminho, devemos avançar para a estatística.

O pacote Scipy contém um módulo (uma subseção do código de um pacote) especificamente para estatísticas.

Você pode importá-lo (disponibilizar suas funções em seu programa) para seu notebook usando o comando ‘from scipy import stats’.

Este pacote contém tudo que você precisa para calcular medidas estatísticas em seus dados, realizar testes estatísticos, calcular correlações, resumir seus dados e investigar várias distribuições de probabilidade.

Veja como acessar rapidamente as estatísticas de resumo (mínimo, máximo, média, variância, inclinação e curtose) de uma matriz usando Scipy:

Imagem para postagem

Manipulação de dados com Python

Os cientistas de dados têm que gastar uma quantidade infeliz de tempo limpando e organizando dados. Felizmente, o pacote Pandas nos ajuda a fazer isso com código em vez de manualmente.

As tarefas mais comuns para as quais uso o Pandas são ler dados de arquivos CSV e bancos de dados.

Ele também tem uma sintaxe poderosa para combinar diferentes conjuntos de dados (os conjuntos de dados são chamados de DataFrames no Pandas) e realizar a manipulação de dados.

Você pode ver as primeiras linhas de um DataFrame usando o método .head:

Imagem para postagem

Você pode selecionar apenas uma coluna usando colchetes:

Imagem para postagem

E você pode criar novas colunas combinando outras:

Imagem para postagem

Trabalho com bancos de dados em Python

Para usar o método read_sql do pandas, você terá que estabelecer uma conexão com um banco de dados.

O método mais à prova de balas de se conectar a um banco de dados é usando o pacote SQLAlchemy para Python.

Como SQL é uma linguagem própria e a conexão com um banco de dados depende de qual banco de dados você está usando, deixarei você para ler a documentação se estiver interessado em aprender mais.

Engenharia de Dados em Python

Às vezes, preferimos fazer alguns cálculos em nossos dados antes que cheguem em nossos projetos como um DataFrame do Pandas.

Se você está trabalhando com bancos de dados ou extraindo dados da web (e armazenando-os em algum lugar), esse processo de mover dados e transformá-los é chamado de ETL (Extrair, transformar, carregar).

Você extrai os dados de um lugar, faz algumas transformações nele (resume os dados adicionando-os, encontrando a média, alterando os tipos de dados e assim por diante) e, em seguida, carrega-os em um local onde possa acessá-los.

Existe uma ferramenta muito legal chamada Airflow que é muito boa para ajudá-lo a gerenciar fluxos de trabalho ETL. Melhor ainda, foi escrito em Python.

Ele foi desenvolvido pela Airbnb quando eles tinham que mover uma quantidade incrível de dados, você pode descobrir mais sobre isso aqui (Em Inglês).

Engenharia de Big Data em Python

Às vezes, os processos ETL podem ser muito lentos. Se você tiver bilhões de linhas de dados (ou se eles forem de um tipo de dados estranho como texto), você pode recrutar muitos computadores diferentes para trabalhar na transformação separadamente e juntar tudo no último segundo.

Esse padrão de arquitetura é chamado de MapReduce e se tornou popular pelo Hadoop.

Hoje em dia, muitas pessoas usam o Spark para fazer esse tipo de trabalho de transformação / recuperação de dados e há uma interface Python para o Spark chamada (surpresa, surpresa) PySpark.

A arquitetura MapReduce e o Spark são ferramentas muito complexas, então não vou entrar em detalhes aqui. Saiba apenas que eles existem e que, se você estiver lidando com um processo ETL muito lento, o PySpark pode ajudar. Aqui está um link para o site oficial.

Mais estatísticas em Python

Já sabemos que podemos executar testes estatísticos, calcular estatísticas descritivas, valores-p e coisas como inclinação e curtose usando o módulo de estatísticas de Scipy, mas o que mais o Python pode fazer com estatísticas?

Um pacote específico que acho que você deve conhecer é o pacote lifelines.

Usando o pacote de linhas de vida, você pode calcular uma variedade de funções a partir de um subcampo de estatísticas chamado análise de sobrevivência.

A análise de sobrevivência tem muitas aplicações. Usei-o para prever o churn (quando um cliente cancela uma assinatura) e quando uma loja de varejo pode ser roubada.

Eles são totalmente diferentes dos aplicativos para os quais os criadores do pacote imaginaram que seria usado (a análise de sobrevivência é tradicionalmente uma ferramenta de estatística médica). Mas isso apenas mostra quantas maneiras diferentes existem para enquadrar problemas de ciência de dados!

A documentação do pacote é muito boa, verifique aqui (Em Inglês) .

Aprendizado de máquina em Python

Agora, este é um tópico importante – o aprendizado de máquina está tomando o mundo de assalto e é uma parte crucial do trabalho de um cientista de dados.

Simplificando, o aprendizado de máquina é um conjunto de técnicas que permite a um computador mapear os dados de entrada para os dados de saída. Existem alguns casos em que esse não é o caso, mas eles são minoria e geralmente é útil pensar no ML dessa maneira.

Existem dois pacotes de aprendizado de máquina realmente bons para Python, vamos falar sobre os dois.

Scikit-Learn

A maior parte do tempo que você gasta fazendo aprendizado de máquina em Python será gasto usando o pacote Scikit-Learn (às vezes abreviado como sklearn).

Este pacote implementa um monte de algoritmos de aprendizado de máquina e os expõe por meio de uma sintaxe consistente. Isso torna realmente mais fácil para os cientistas de dados aproveitarem ao máximo cada algoritmo.

A estrutura geral para usar o Scikit-Learn é mais ou menos assim –

Você divide seu conjunto de dados em conjuntos de dados de treinamento e teste:

Imagem para postagem

Em seguida, você instancia e treina um modelo:

Imagem para postagem

E então você usa o módulo de métricas para testar o quão bem o seu modelo funciona:

Imagem para postagem

XGBoost

O segundo pacote comumente usado para aprendizado de máquina em Python é o XGBoost.

Onde o Scikit-Learn implementa uma grande variedade de algoritmos, o XGBoost implementa apenas um único – árvores de decisão com gradiente aumentado.

Este pacote (e algoritmo) tornou-se muito popular recentemente devido ao seu sucesso nas competições Kaggle ( competições de ciência de dados online nas quais qualquer pessoa pode participar).

O treinamento do modelo funciona da mesma maneira que um algoritmo Scikit-Learn.

Aprendizado profundo em Python

Os algoritmos de aprendizado de máquina disponíveis no Scikit-Learn são suficientes para quase todos os problemas. Dito isso, às vezes você precisa usar a coisa mais avançada disponível.

A popularidade das redes neurais profundas disparou devido ao fato de que os sistemas que as utilizam superaram quase todas as outras classes de algoritmo.

Porém, há um problema – é muito difícil dizer o que uma rede neural está fazendo e por que está tomando as decisões que ela está fazendo. Por causa disso, seu uso em finanças, medicina, direito e profissões relacionadas não é amplamente endossado.

As duas principais classes de rede neural são redes neurais convolucionais (que são usadas para classificar imagens e completar uma série de outras tarefas em visão computacional) e redes neurais recorrentes (que são usadas para entender e gerar texto).

Explorar como as redes neurais funcionam está fora do escopo deste artigo, mas saiba que os pacotes que você precisará procurar se quiser fazer esse tipo de trabalho são TensorFlow (uma contribuição do Google!) E Keras .

Keras é essencialmente um wrapper para TensorFlow que torna mais fácil trabalhar com ele.

APIs de ciência de dados em Python

Depois de treinar um modelo, você gostaria de poder acessar as previsões dele em outro software. A maneira de fazer isso é criando uma API.

Uma API permite que seu modelo receba dados, uma linha por vez, de uma fonte externa e retorne uma previsão.

Como Python é uma linguagem de programação de propósito geral que também pode ser usada para criar serviços da web, é fácil usar Python para servir seu modelo via API.

Se você precisa construir uma API, deve examinar o pickle e o Flask. Pickle permite que você salve modelos treinados em seu disco rígido para que você possa usá-los mais tarde. E o Flask é a maneira mais simples de criar serviços da web.

Aplicativos da Web em Python

Finalmente, se você gostaria de construir um aplicativo da web completo em torno de seu projeto de ciência de dados, você deve usar a estrutura Django.

Django é imensamente popular na comunidade de desenvolvimento web e foi usado para construir a primeira versão do Instagram e Pinterest (entre muitos outros).

Resumo

E com isso concluímos nosso rápido tour pela ciência de dados com Python.

Abordamos tudo que você precisa aprender para se tornar um cientista de dados completo. Se ainda parece intimidador, você deve saber que ninguém sabe tudo isso e que até mesmo os melhores de nós ainda buscam o básico no Google de vez em quando.

Créditos: towardsdatascience

Compartilhe!