Assim como foi feito para o RStudio em Primeiros passos no R (Studio), para facilitar a vida dos interessados em programação, estatística e/ou econometria, resolvi fazer uma introdução em Python. Mais a frente, o leitor verá que nosso RStudio aqui se chamará Rodeo, mas que teremos que perder esse apego (ou não) para experimentar algo melhor: O Jupyter Notebook!
O QUE É O PYTHON?
Wikipedia: Python é uma linguagem de propósito geral de alto nível, multi paradigma, suporta o paradigma orientado a objetos, imperativo, funcional e procedural. Possui tipagem dinâmica e uma de suas principais características é permitir a fácil leitura do código e exigir poucas linhas de código se comparado ao mesmo programa em outras linguagens. Devido às suas características, ela é principalmente utilizada para processamento de textos, dados científicos e criação de CGIs para páginas dinâmicas para a web.
Ou seja, Python serve para tudo. Inclusive, para estatística.
POR QUE PYTHON, SE JÁ TEMOS O R E O SAS?
A linguagem aparece como mais uma alternativa gratuita, tal como o R. Há inúmeros motivos para programar em Python, como: uma ampla comunidade online; crescimento das bibliotecas; linguagem funcional, fácil de ler, aprender e focada em produtividade; escalabilidade; visualização de dados muito boa – embora tenha uma distância considerável do R até o momento desse post, na minha opinião que pode estar limitada (sempre usei muito o R).
Claro, muitos dos elogios ao Python são aplicáveis ao R, então, ao final de tudo, você encontra vantagens e desvantagens para um e para o outro. Mas ao que tudo indica, estamos caminhando para o uso dessa linguagem em Data Science, e eu não recomendo ficar de fora. Agora, há três caminhos a serem seguidos:
- Programar direto no Python;
- Programar utilizando o Rodeo – que possui uma aparência semelhante a do RStudio;
- Programar utilizando o Jupyter Notebook (o mais indicado para iniciantes).
Abaixo, temos as 3 possibilidades detalhadas. Você pode ler como cada uma funciona e escolher a que acha mais adequada ou ir direto para alguma delas (sugiro pular direto para o item 3).
1. INSTALANDO O PYTHON
Antes de mais nada, vale dizer que hoje temos o (ou seria ‘a’?) ANACONDA, um ferramenta gratuita e que facilita demais a vida do programador. Se você não quer nenhuma dor de cabeça, quer uma forma fácil de programar, vá direto ao item 3 deste tutorial. Lá falo um pouco sobre a Anaconda e o Jupyter Notebook. Em suma, é uma plataforma que já vem com o Python e diversas bibliotecas embutidas para tornar sua vida mais fácil. Eu recomendo que você utilize o Jupyer notebook, pois é o que vou utilizar em todos os posts e é uma das plataformas mais utilizadas pelos cientistas de dados. Sendo assim, minha sugestão é que você pule direto ao item 3.
Agora, se você quiser conhecer o Python “raiz”:
- Acesse o https://www.python.org/
- Na tela inicial você já poderá ver o botão de DOWNLOAD, e ao passar o mouse sobre ele, você poderá escolher de acordo com seu sistema operacional. Como eu utilizo o Windows, baixei a versão 3.6.2. Assim como acontece no R, a versão mais recente pode não executar algumas rotinas de versões antigas. Até o momento, consegui executar todos os algoritmos que preciso para modelagem nessa versão mais recente:
- Depois que baixar o arquivo, você pode acessar o Python pelo ícone executável, ou até mesmo construir os códigos em Notepad++ e executar pelo Prompt de Comando.
Assim como o R, o Python não possui uma interface tão amigável. Eu recomendo o ambiente default só se você for muito raiz mesmo. Na verdade, mesmo nesse caso, eu optaria por um editor de texto como Notepad++ ou Atom para escrever o programa e depois o executar no Prompt de Comando.
Agora, é claro que muita gente não tem muita paciência para programar num bloco de notas e buscam algo mais prático. Para essas pessoas, recomendo ir de Rodeo – muito parecido com R Studio – ou o Jupyter Notebook – diferente do R Studio, mas meu preferido, ainda assim.
2. INSTALANDO O RODEO
Para os que estão acostumados com o Excel (ou mesmo o SAS Guide) o ideal é ter algo mais amigável. Assim como no R, já existem ambientes para facilitar a vida do usuário de Python. Alguns dos melhores são o Jupyter Notebook (pelo Anaconda, item abordado no próximo tópico) e o Rodeo. Este último é muito parecido com o RStudio foi o primeiro que utilizei. Novamente, não há nenhum segredo, basta acessar esse link e ir no botão download logo na página inicial. Há disponível no próprio site um documento com várias instruções (em inglês) que você pode conferir clicando aqui.
Com relação às 4 janelas do Rodeo, você não encontrará muita diferença para o RStudio:
- No topo à esquerda (2º quadrante) é onde você vai escrever seu código (o script). Você pode ter várias janelas contendo diferentes scripts. Para abrir mais de uma, basta ir em file – new. Depois que você escrever seu código, você deve selecionar a linha que gostaria de executar e clicar em run ou utilizar o atalho ctrl+enter.
- Assim que você executar seu código, você vai ver alterações no terminal, a tela abaixo à esquerda (3º quadrante). Você também pode escrever o código nessa tela, porém, é muito mais complicado manusear, fazer alterações e armazená-lo.
- No topo à direita (1º quadrante) você tem duas abas: environment e history. No caso de environment, eu recomendo que você não se preocupe muito. Basicamente, você terá seus objetos nessa aba, seus dados e variáveis criadas. Em history, estará o histórico de seu script, ou seja, todo o código que você for executando vai aparecer lá. Isso é útil, pois caso você feche o programa e escolha salvar seu workplace, ao abri-lo você não perderá o histórico (o log). Você poderá ver o script executado lá, facilitando o entendimento do programa;
- Abaixo à direita (4º quadrante) uma outra janela que vai facilitar muito sua vida, nela há 5 abas: files, plots e packages. Em files você terá o endereço do seu working directory. Esse diretório é onde você salva seus scripts e sua saída. Plots é onde você irá visualizar seus gráficos (abaixo teremos alguns exemplos). Packages possui uma ferramenta de busca para os pacotes em Python. Assim como em R, os pacotes são, colocando de forma prática, conjuntos de funções, dados e códigos compilados. Os pacotes fornecem funções que algum usuário já criou e você pode utilizá-las. Ou seja, para cada tema que você queira trabalhar, você pode buscar um pacote com funções que realizem todas as manipulações que você deseja (para maiores detalhes leia An Introduction to Python: Packages).
3. INSTALANDO ANACONDA E JUPYTER NOTEBOOK
Esta plataforma é talvez a mais popular entre iniciantes e, com certeza, a mais utilizada nos cursos de Ciência de Dados usando Python. Disponibilizado de graça, você pode encontrar em www.anaconda.com. Não tem muito segredo sua instalação, basta seguir os passos indicados no próprio site (que é basicamente ir em Downloads e baixar o programa). Feita a instalação, quando você abrir o Anaconda-Navigator, você vai se deparar com a tela abaixo:
Você deve ir no segundo item da primeira coluna, o Jupyter Notebook. Ao clicar no ícone, uma janela se abrirá no seu browser, parecida com a imagem abaixo:
A janela é o reflexo de seu diretório. Veja que no meu aparecem algumas coisas referentes ao R e ao SAS. Agora, para iniciar um script em Python, você precisa criar um novo “caderno”. Isso pode ser feito indo no botão New, no canto superior direito. Lá deve aparecer a opção de Notebook para Python (provavelmente aparecerá Python 3). Feito isto, um novo caderno será criado:
O nome notebook vem do fato de que o ambiente provido contém diversos elementos, como figuras e textos, além do seu código, é claro. Inclusive, por isso ele é bastante apreciado por muita gente. Com a inclusão dos outputs e figuras, fica sendo um ambiente excelente para análises.
Agora, você tem praticamente tudo que é preciso para programar. Você pode escrever um ou mais comandos no que chamamos de célula. A imagem anterior, contém uma célula. Na imagem abaixo, temos três:
Sempre que você quiser inserir uma célula nova, vá em Insert (quarto item na parte superior) e escolha entre inserir uma célula acima (Insert Cell Above) ou abaixo da célula selecionada (Insert Cell Below). Se você quiser executar o código, vá em Cell -> Run Cells. Para os atalhos, vá em Help -> Keyboard Shortcuts. Você verá que há atalho para dois modos:
- Command Mode: Quando a célula foi selecionada, mas não para edição. Ou seja, quando você clica na célula do lado de fora, por exemplo, quando a seta do mouse estiver bem ao lado esquerdo de In [ ].
- Edit Mode: Quando a célula estiver selecionada para edição. Ou seja, quando a célula estiver selecionada, de modo que ao apertar algum botão, o código apareça na célula.
Você pode executar somente uma linha em uma célula ou então executar uma linha em cada célula. Veja os dois exemplos abaixo:
Veja que gráficos também aparecem no notebook:
Esse, para mim, é um dos principais motivos para o Notebook ser tão utilizado. A partir do momento que você gera tabelas, gráficos e outras tantas coisas, todo seu histórico fica na página, facilitando os estudos que estão sendo feitos. Funciona quase como um relatório dinâmico.
Para salvar, é igual a qualquer outro programa: vá em File -> Save as:
Agora, sempre que você acessar o Jupyter, você verá o arquivo disponível:
Ao acessar o arquivo, você retomará exatamente de onde parou:
Mais sobre o Jupyter, você também pode assistir ao seguinte vídeo:
Bom, a partir daqui, eu explico algumas coisas em Python. Mas são coisas tão básicas, que não muda muito do que você viu acima para entender o Jupyter Notebook. Minha sugestão: acesse Mini Curso de Python e siga a ordem sugerida.
PRIMEIRAS MANIPULAÇÕES EM PYTHON
Abaixo, temos alguns exemplos de operações simples feitas no Python, todas feitas no Rodeo mas facilmente replicáveis no Jupyter Notebook. Por conta das limitações do WordPress, vou comentar o que está sendo feito, utilizando ‘#’, escrever o comando e na linha seguinte vou comentar o resultado (i.e. a saída do código). Se você estiver utilizando o Jupyter Notebook, caso você escreva vários comandos numa mesma célula, você só verá o resultado do último comando. Portanto, escreva um comando por célula, ou utilize o comando print(). O primeiro exemplo ficaria print(2+2).
Começando pelo básico, o Python serve como uma calculadora. Veja alguns cálculos que podem ser feitos com a ferramenta:
## Soma 2+2 #Resultado: 4 ## Subtracao 10-2 #Resultado:8 ## Multiplicacao 2*5 10 ## Divisao 10/2 #Resultado: 5.0 ## Resto da divisao 10%3 #Resultado: 1
No Rodeo, você teria o seguinte retorno:
## Soma ... 2+2 ... ... ## Subtracao ... 10-2 ... ... ##Multiplicacao ... 2*5 ... ... ## Divisao ... 10/2 ... ... ## Resto da divisao ... 10%3 ... ... 1
Pois é, o Rodeo também não entende que você quer o resultado linha a linha. Sendo assim, o output será apenas o resultado da última linha (não parece ser algo raro esse tipo de limitação: How to display full output in Jupyter, not only last result?). Caso você queira visualizar todas as saídas, tal como especifiquei no caso do Jupyter Notebook, será necessário criar variáveis que sejam resultados das operações e utilizar a função print() associada a cada uma delas:
## Soma ... a=2+2 ... print(a) ... ... ## Subtracao ... b=10-2 ... print(b) ... ... ##Multiplicacao ... c=2*5 ... print(c) ... ... ## Divisao ... d=10/2 ... print(d) ... ... ## Resto da divisao ... e=10%3 ... print(e) 4 8 10 5.0 1
Se quiser fazer algo mais amigável, pode até inserir um texto:
## Soma ... a=2+2 ... print('Resultado da soma: ',a) Resultado da soma: 4
Alguns operadores que pensamos ser triviais, não funcionam no Python, a não ser que seja utilizada alguma biblioteca ou módulo. É o caso do logaritmo, valor absoluto, raiz quadrada e somatório que fazem parte do módulo math. Para utilizá-la, primeiro importamos e atribuímos um nome, para em seguida fazer uso da função com nomeatribuido.nomedafuncao. Veja o exemplo abaixo:
# modulo math import math as math # calcula log de 10 math.log(10) # calcula modulo de -10 math.fabs(-10) # calcula raiz quadrada de 4 math.sqrt(4) # calcula somatorio de 1,1,1,1,1 math.fsum([1,1,1,1,1])
A lista completa das funções desse módulo pode ser encontrada aqui.
Para Machine Learning, é interessante aprender a utilizar o Scikit-Learn.
IMPORTANDO ARQUIVOS
Antes da criação dos gráficos, vamos importar o arquivo com os dados que serão utilizados. Por não ser tão intuitivo quanto o R, essa seção ficará separada aqui. Nest link é possível encontrar uma base de dados referente a diferentes espécies de Iris contendo diversas informações a respeito de cada uma delas, como por exemplo tamanho e largura das pétalas. Essa base foi disponibilizada em um site que já foi indicado aqui, o Kaggle. Você encontrará inclusive muitos códigos bons de Python para trabalhar essa base. Agora que você já baixou o arquivo e extraiu do zip, primeiro é preciso importar a biblioteca Pandas utilizar a função read_csv():
# carrega biblioteca import pandas as pd # carrega arquivo iris = pd.read_csv("../Iris.csv")
Pandas também possui outras funções comuns para manipulação de dados, como drop(), groupby() e rename().
Para leitura das primeiras linhas da tabela importada, a função será parecida com a utilizada no R. Deve ser utilizado o comando head(), mas este deve ser antecedido pelo nome da tabela em questão:
iris.head()
A figura abaixo mostra a saída no Terminal do Rodeo:
HISTOGRAMA E GRÁFICO DE DISPERSÃO
Para quem não entende muito o conceito, esse post explica o que é um histograma. Aqui, focaremos somente na visualização do gráfico pelo Rodeo:
## histograma iris.plot(kind="hist", x="SepalLengthCm", y="SepalWidthCm")
Também é possível fazer um gráfico de dispersão:
## grafico de dispersao iris.plot(kind="scatter", x="SepalLengthCm", y="SepalWidthCm")
Algumas pequenas mudanças podem ser feitas sem grandes dificuldades no gráfico acima, como por exemplo alterar seu título e sua cor:
## grafico de dispersao iris.plot(kind="scatter", x="SepalLengthCm", y="SepalWidthCm", color='Green', title='Grafico de Dispersao')
Note que o Python é bem coerente. Uma vez que se entende que o nome da tabela sendo utilizada deve anteceder as funções, a sintaxe começa a fazer sentido e até se assemelha ao R.
Outras bibliotecas capazes de fazer gráficos mais elegantes são a Seaborn e Bokeh.
MÓDULOS E BIBLIOTECAS
Assim como o R, o Python também possui suas próprias bibliotecas. A ideia é a mesma, dentro de cada uma é disponibilizado um conjunto de funções já construídas para facilitar as tarefas dos usuários. Algo que pode causar estranheza é que às vezes aparecerá a palavra biblioteca (library) e outras vezes a palavra módulo (module). Porém, não há muito o que se preocupar, a ideia é a mesma, uma biblioteca é apenas uma forma de fazer referência ao módulo. Quem quiser ler mais sobre o assunto, fica essa discussão do StackOverflow como recomendação.
PRÓXIMOS PASSOS
Se você tem vontade de se tornar um cientista de dados, não se esqueça de estudar também o conteúdo de Estatística Básica e Econometria. Você pode ir em Mini Curso de Python e ver a trilha recomendada.
O Coursera tem um curso gratuito em Python muito bom para iniciantes: Coursera: Programming for Everybody (Getting Started with Python). Kaggle é outra plataforma com muitas opções de curso. Eu adoro a trilha de Python deles.
Caso você queira ver um exemplo prático do uso de Python para analisar uma base, veja o tutorial feito com a base dos jogadores do Fifa 19: Análise dos Jogadores de Fifa 19 Usando Python. Se quiser ver modelos preditivos, sugiro ir em Machine Learning do Zero em Python (Classificador).
CALMA, NÃO SE VÁ…
Gostou do post? Por favor, não vá embora sem deixar uma curtida ou um comentário. Parece algo bobo, mas é um feedback bastante importante para este trabalho. Se encontrou algum erro ou tem alguma sugestão, dúvida, elogio ou crítica, pode escrever nos comentários ou me enviar uma mensagem diretamente em Sobre o Estatsite. E visite também a conta do Twitter @EstatSite.
Forte abraço e bons estudos!
Ótimo artigo. Parabéns!
Parabéns
Ótimo artigo, muito obrigado!
Obrigado, Igor! Satisfatório demais ler esses feedbacks!
Conteúdo incrível e muito completo
Obrigado pela moral, Thales!
Ótimo conteúdo. Obrigada!
Oi, Érica! Que bom que te serviu de ajuda. Agradeço muito o feedback. Forte abraço!
Muito bom!! Obrigado pelo conteúdo!