Neste artigo, abordaremos o básico do Python. Estamos cada vez mais próximos do objetivo. Em geral, em breve começaremos a trabalhar com as principais bibliotecas da Data Science e usaremos o TensorFlow (para escrever e implantar redes neurais, você entenderá o Deep Learning).
Instalação
O Python pode ser baixado em python.org. No entanto, se ainda não estiver instalado, em vez disso
Eu recomendo o pacote de distribuição Anaconda, que já inclui a maioria das bibliotecas necessárias para trabalhar no campo da ciência de dados.
Se você não estiver usando a distribuição Anaconda, certifique-se de instalar o gerenciador de pacotes pip, o que facilita a instalação de pacotes de terceiros, pois precisaremos de alguns deles. Também vale a pena instalar o shell IPython interativo muito mais amigável. Lembre-se de que a distribuição do Anaconda vem com pip e IPython.
Espaço em branco
Muitas linguagens de programação usam blocos de código diferenciados.
aparelho. O recuo é usado no Python:
Isso facilita a leitura do código, mas ao mesmo tempo segue a formatação. O espaço entre parênteses e colchetes é ignorado, o que facilita a escrita de expressões detalhadas:
e fácil de ler código:
Para continuar a instrução, a barra invertida é usada na próxima linha; no entanto, esse registro raramente será usado:
two_plus_three = 2 + \ 3
A formatação do código com espaço em branco torna difícil copiar e colar o código no shell do Python. Por exemplo, tentando copiar o seguinte código:
for i in [ 1, 2, 3, 4, 5] :
no shell padrão do Python lançará um erro:
porque para o intérprete, uma sequência vazia indica o final de um bloco de código com um loop for.
O IPython possui uma função mágica "% paste" que cola corretamente tudo na área de transferência, incluindo espaço em branco.
Módulos (Importando Bibliotecas)
Algumas bibliotecas do ambiente de programação baseadas em Python não são carregadas por padrão. Para que essas ferramentas sejam usadas, você deve importar os módulos que as contêm.
Uma abordagem é simplesmente importar o próprio módulo:
import re my_regex = re.compile ("[0-9]+",re.I)
Aqui
re é o nome do módulo que contém funções e constantes para trabalhar com expressões regulares. Ao importar o módulo inteiro dessa maneira, você pode acessar as funções prefixando-as com re.
Se já existe uma variável com o nome re no código, você pode usar o alias do módulo:
import re as regex my_regex = regex.compile("[0-9)+",regex.I)
O alias também é usado nos casos em que o módulo importado possui um nome complicado ou quando o módulo acessa frequentemente o módulo.
Por exemplo, ao visualizar dados com base no módulo
matplotlib , geralmente
use o seguinte alias padrão:
import matplotlib.pyplot as plt
Se você precisar obter vários valores específicos do módulo, poderá importá-los explicitamente e usar sem restrições:
from collections import defaultdict , Counter lookup = defaultdict(int) my_counter = Counter()
Funções
Uma função é uma regra que recebe zero ou mais argumentos de entrada e retorna o resultado correspondente. No Python, as funções são geralmente definidas usando a instrução def:
def double() : """, , docstring, , . , 2""" return * 2
Funções em Python são tratadas como objetos de primeira classe. Isso significa que eles podem ser atribuídos a variáveis e transmitidos para outras funções da mesma maneira que qualquer outro argumento:
Além disso, você pode criar facilmente funções anônimas curtas ou expressões lambda:
= apply_to_one(lambda : + 4)
Expressões lambda podem ser atribuídas a variáveis. No entanto, é recomendável usar o operador def:
another double = lmbd : 2 *
Além disso, você pode passar argumentos padrão para parâmetros de função, que devem ser especificados apenas quando um valor diferente do padrão é esperado:
def my_print (message="oe " ): print (message ) my_print ( "pe")
Às vezes, é aconselhável especificar argumentos por nome:
No futuro, as funções serão usadas com muita frequência.
Linhas
As cadeias de caracteres (ou sequências de caracteres) nos dois lados são limitadas a aspas simples ou duplas (elas devem corresponder):
single_quoted_string = ' '
A barra invertida é usada para codificar caracteres especiais. Por exemplo:
tab_string = "\t"
Se você precisar da barra invertida, que ocorre diretamente
nos nomes de diretório no sistema operacional Windows, usando r '"' é possível criar uma
sequência não formatada :
not_tab_string = r"\t"
Blocos de texto com várias linhas são criados usando o modo triplo simples (ou
duplo) citações:
multi_line_string = """ . """
Exceções
Quando algo dá errado, o Python lança uma exceção. Exceções não tratadas fazem com que o programa pare inesperadamente. As exceções são tratadas usando as
instruções try e
except :
try: print (0 / 0) except ZeroDivisionError : rint ( " ")
Embora em muitas linguagens de programação o uso de exceções seja considerado um estilo de programação ruim, no Python não há nada com que se preocupar se for usado para tornar o código mais limpo, e às vezes faremos exatamente isso.
Listas
Provavelmente a estrutura de dados mais importante do Python é uma lista. Esta é apenas uma coleção (ou coleção) ordenada, semelhante a uma matriz em outras linguagens de programação, mas com funcionalidade adicional.
integer_list = [1, 2, ]
Você pode definir o valor e acessar o enésimo elemento da lista usando colchetes:
= list(range (10))
Além disso, colchetes são usados para "cortar" listas:
first_three = [:]
Python possui uma instrução ln que verifica se um elemento pertence a uma lista:
1 ln [1, 2, 3]
A verificação consiste em visualizar todos os elementos, um de cada vez; portanto, vale a pena usá-lo somente quando se souber com certeza que a lista é pequena ou se não importa quanto tempo leva para verificar.
As listas são fáceis de encadear:
= [1, 2, 3] . extend ( [ 4, 5, 6] )
Se você quiser deixar a lista x inalterada, poderá usar a adição de listas:
= [1, 2, 3] = + [4, 5, 6]
Geralmente, um elemento é adicionado às listas em uma operação:
= [1, 2, 3] x.append (0)
Muitas vezes, é conveniente descompactar uma lista se você souber quantos elementos ela contém:
, = [1, 2]
Se o número de elementos não for o mesmo nos dois lados da expressão, uma mensagem de erro ValueError será exibida.
Para um valor descartado, um sublinhado é geralmente usado:
_, = [1, 2]
Tuplas
As tuplas são primos imutáveis (ou imutáveis) das listas.
Quase tudo o que pode ser feito com uma lista sem fazer alterações pode ser feito com uma tupla. Em vez de colchetes, uma tupla é formada com colchetes, ou eles podem ficar sem eles:
my_list = [1, 2]
As tuplas fornecem uma maneira conveniente de retornar vários valores das funções:
Tuplas (e listas) também são usadas em várias atribuições:
, = 1, 2
Dicionários
Um dicionário ou lista associativa é outra estrutura de dados básica.
Nele, os valores são associados às chaves, o que permite recuperar rapidamente o valor correspondente a uma chave específica:
empty_dict = {}
O valor da chave pode ser acessado usando colchetes:
rigory_aleksee = grades[ "Grigoriy"]
Se você tentar solicitar um valor que não esteja no dicionário, você receberá uma mensagem de erro KeyError:
try: kates_grade = grades [ "Kate "] except eyError: rint ( " ! " )
Você pode procurar por uma chave usando o operador in:
grigoriy_has_grade = "Grigoriy" in grades
Os dicionários têm um método get () que, ao procurar uma chave ausente, em vez de gerar uma exceção, retorna o valor padrão:
grigoriy_grade = grades. get ( "Grigoriy ", 0)
A atribuição do valor-chave é realizada usando os mesmos colchetes:
grades [ "Tim" ] = 99
Os dicionários são frequentemente usados como uma maneira fácil de representar
dados:
tweet = { "user" : " grinaleks", "text" : " - ", " retweet_count" : 100, "hashtags " : [ "# data", " #science", " #datascience " , " #awesome", "#yolo" ] }
Além de procurar chaves individuais, você pode entrar em contato com todos de uma vez:
tweet_keys = tweet.keys()
As chaves devem ser imutáveis; em particular, listas não podem ser usadas como chaves. Se você precisar de uma chave composta, é melhor usar uma tupla ou encontrar uma maneira de converter a chave em uma string.
Dicionário padrão
Deixe o documento precisar contar as palavras. A solução óbvia para o problema é criar um dicionário no qual as chaves sejam palavras e os valores sejam as frequências das palavras (ou o número de ocorrências de palavras no texto). Durante a verificação de palavras, se a palavra atual já estiver no dicionário, sua frequência aumentará e, se estiver ausente, será adicionada ao dicionário:
Além disso, você pode tirar proveito de um método chamado "é melhor pedir perdão do que permissão" e detectar o erro ao tentar acessar a chave ausente:
word_ counts = { } for word in document : try: word_counts [word] += 1 except eyError : word_counts [word] = 1
O terceiro truque é usar o método get (), que supera normalmente a situação com a falta de chaves:
word_counts = { } for word in document : previous_count = word_counts.get (word, 0) word_counts [word] = previous_count + 1
Todas essas técnicas são um pouco complicadas e, por esse motivo, é aconselhável usar o dicionário defaultdict (que também é chamado de dicionário com: valor padrão). Parece um dicionário comum, exceto por um recurso - ao tentar acessar uma chave que não está nele, ele primeiro adiciona um valor usando a função sem argumentos, que é fornecida quando é criada. Para usar dicionários defaultdict, você deve importá-los do módulo de coleções:
from collections import defaultdict word_counts = defaultdict(int)
Além disso, o uso de dicionários defaultdict é útil quando se trabalha com listas, dicionários e até mesmo com funções definidas pelo usuário:
dd_list = defaultdict (list)
Esses recursos serão necessários quando dicionários forem usados para "coleção"
resultados para uma determinada chave e quando é necessário evitar duplicados
verifica a presença de uma chave no dicionário.
Counter Dictionary
Uma subclasse de dicionários de contador transforma uma sequência de valores em um objeto do tipo defaultdict (int), onde as teclas são mapeadas para frequências ou, mais precisamente, as teclas são exibidas (map) em frequência.
Ele será usado principalmente na criação de histogramas:
from collections import Counter = Counter([0,1,2,0])
Sua funcionalidade facilita bastante a resolução do problema de contagem de frequências de palavras:
O dicionário do contador possui o método most_common (), que geralmente é útil:
Muitos
O conjunto ou estrutura de dados do conjunto é uma coleção de elementos não ordenados sem repetições:
s = set ()
Muitos serão usados por duas razões. Primeiro, a operação em conjuntos é muito rápida. Se você precisar verificar um grande conjunto de elementos para pertencer a uma determinada sequência, a estrutura de dados do conjunto é mais adequada para isso do que uma lista:
O segundo motivo é obter elementos exclusivos no conjunto de dados:
item_list = [1, 2, 3, 1, 2, 3]
Muitos serão usados com muito menos frequência do que dicionários e listas.
Estruturas de controle
Como na maioria das outras linguagens de programação, as ações podem ser executadas por condição usando a instrução if:
if 1 > 2: message " 1 2 . . . " elif 1 > 3: message "elif 'else if '" else: message = " , else "
Além disso, você pode usar o operador triplo se-então-outra linha, que às vezes será usado posteriormente:
parity = "" if % 2 === else " "
Python tem um loop whlle:
= 0 while < 10: print (x, " 10") += 1
No entanto, o loop for será usado com mais frequência com o operador in:
for in range (lO) : print (x, " 10" ) 51
Se você precisar de uma lógica de controle de loop mais complexa, poderá usar os operadores
continue break: for 1n range (10) : 1f == 3: continue
Como resultado, 0, 1, 2 e 4 serão impressos.
Veracidade
Variáveis booleanas no Python funcionam da mesma maneira que na maioria das outras linguagens de programação, com apenas uma exceção - elas estão em maiúsculas:
one_is_less_than_two = 1 < 2
Para indicar um valor inexistente, é usado um objeto None especial, que corresponde a null em outros idiomas:
= None print (x == None )
Python pode usar qualquer valor em que seja esperado um tipo booleano booleano. Todos os seguintes elementos têm um valor booleano de False:
- Falso .
- Nenhuma
- set () (conjunto):
- [] (lista vazia);
- {} (dicionário vazio);
Praticamente tudo o resto é considerado verdadeiro. Isso facilita o uso de instruções if para verificar listas vazias. linhas vazias, dicionários vazios, etc. Às vezes, porém, isso leva a erros difíceis de reconhecer, se você não levar em consideração o seguinte:
s = some_function_that_returns_a_string ()
Aqui está uma maneira mais fácil de fazer o mesmo:
first_char = s and s [0]
porque o operador lógico e retorna o segundo valor, se o primeiro for verdadeiro, e o primeiro valor, se for falso. Da mesma forma, se x na expressão a seguir for um número ou possivelmente Nenhum, o resultado será de alguma forma um número:
safe = or 0
A função all interna do Python pega uma lista e retorna True somente quando cada item da lista é verdadeiro, e a função interna retorna true quando pelo menos um elemento é verdadeiro:
all ( [True, 1, { 3 }])