O Python possui muitos módulos excelentes prontos para uso. Uma das mais úteis são as coleções . Ele contém "tipos especializados para criar contêineres", que são alternativas ao ditado universal, lista , conjunto e tupla . Abaixo, examinamos três classes contidas no módulo que a maioria dos pythonists encontrou, mas esquece constantemente de colocar em prática.
NamedTuple
É difícil superestimar a utilidade de tuplas nomeadas para cientistas de dados. Digamos que você esteja criando um novo modelo, adicionando constantemente novos recursos à lista, que planeja alimentar a estrutura de aprendizado de máquina. Com um aumento no número de características, mais cedo ou mais tarde você começará a ficar confuso e esquecerá qual índice é responsável por quê. Pior ainda, se os colegas precisam trabalhar com o seu código: eles podem não entender nada.
Apenas algumas linhas podem colocar o script em ordem . Veja:
from collections import namedtuple Features = namedtuple('Features', ['age', 'gender', 'name']) row = Features(age=22, gender='male', name='Alex') print(row.age)
Agora, em vez de especificar índices, você pode usar nomes para acessar itens de linha, o que torna o código muito mais limpo e simples.
Contador
Contador , como o nome indica, conta. Parece fácil, mas os cientistas de dados precisam continuar contando constantemente , portanto a ferramenta é extremamente útil na prática.
Existem várias maneiras de criar um contador, mas o mais simples é inicializá-lo com uma lista de valores:
from collections import Counter ages = [22, 22, 25, 25, 30, 24, 26, 24, 35, 45, 52, 22, 22, 22, 25, 16, 11, 15, 40, 30] value_counts = Counter(ages) print(value_counts.most_common())
Ao executar esse código (que, a propósito, pode ser feito passando o trecho correspondente para pythonanywhere.com/gists/ ), você verá:
[(22, 5), (25, 3), (24, 2), (30, 2), (35, 1), (40, 1), (11, 1), (45, 1), (15, 1), (16, 1), (52, 1), (26, 1)]
Uma lista de tuplas em ordem decrescente da prevalência de valores, onde o primeiro elemento da tupla é o valor e o segundo é a frequência com que aparece na lista original. Algumas linhas de código foram suficientes para descobrir que "22" é a idade mais comum e ocorre 5 vezes.
Defaultdict
Uma das minhas ferramentas favoritas na biblioteca padrão. DefaultDict - um dicionário com um valor padrão para qualquer nova chave. Um exemplo:
from collections import defaultdict my_default_dict = defaultdict(int) for letter in 'the red fox ran as fast as it could': my_default_dict[letter] += 1 print(my_default_dict)
Devoluções:
defaultdict(<type 'int'>, {'a': 4, ' ': 8, 'c': 1, 'e': 2, 'd': 2, 'f': 2, 'i': 1, 'h': 1, 'l': 1, 'o': 2, 'n': 1, 's': 3, 'r': 2, 'u': 1, 't': 3, 'x': 1})
Ao trabalhar com um dicionário comum, você deve verificar constantemente se existe uma chave e inicializar manualmente chaves inexistentes. No exemplo acima, para cada chave inexistente, já existe um valor padrão de 0. Isso permite que você escreva o código de forma mais limpa e clara .
Além do número inteiro, DefaultDict é frequentemente usado em conjunto com uma lista vazia para começar a adicionar itens sem um clichê.
Vá para o código limpo!
Tente se lembrar se você pode aplicar classes de coleções a tarefas que você resolveu recentemente. Às vezes, “redescobrir” os módulos antigos da biblioteca padrão é mais útil do que dominar novas ferramentas.