Primeiros passos em Python

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:

  1. Programar direto no Python;
  2. Programar utilizando o Rodeo – que possui uma aparência semelhante a do RStudio;
  3. Programar utilizando o Jupyter Notebook (meu preferido!!!)

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.

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 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áci.

Agora, se você quiser conhecer o Python “raiz”:

  • 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:

Python

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

pythonidle

IDLE (Python 3.6 32-bit)

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

rodeo.PNG

Rodeo

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. ANACONDA E JUPYTER NOTEBOOK

Esta plataforma, talvez a mais popular – por isso minha preferida – e utilizada em muitos cursos de Python, pode ser baixada 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:

Captura de Tela 2019-01-04 às 16.17.07.png

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:

Captura de Tela 2019-01-04 às 16.18.34.png

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:

captura de tela 2019-01-04 às 16.22.25

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:

captura de tela 2019-01-04 às 16.28.03

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:

captura de tela 2019-01-04 às 22.49.25

captura de tela 2019-01-04 às 22.49.52

Veja que gráficos também aparecem no notebook:

captura de tela 2019-01-04 às 22.56.07

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:

captura de tela 2019-01-04 às 22.57.51

Agora, sempre que você acessar o Jupyter, você verá o arquivo disponível:

captura de tela 2019-01-04 às 22.58.08

Ao acessar o arquivo, você retomará exatamente de onde parou:

Captura de Tela 2019-01-04 às 22.59.51.png

PRIMEIRAS MANIPULAÇÕES

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:

Capturar

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")

histograma

Também é possível fazer um gráfico de dispersão:

## grafico de dispersao
iris.plot(kind="scatter", x="SepalLengthCm", y="SepalWidthCm")

dispersao

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')

dispersao2

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.

O Coursera tem um curso gratuito em Python muito bom para iniciantes: Coursera: Programming for Everybody (Getting Started with Python)

Para quem quer saber mais sobre a diferença entre R e Python: R vs. Python for Data Science: The Winner is…

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

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!

Anúncios

5 comentários

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s