Então, use Python Dask para análise e análise de dados
- Claude Paugh
- 25 de abr.
- 6 min de leitura
Atualizado: 3 de mai.
No mundo de dados atual, processar e analisar com eficiência grandes conjuntos de dados é um desafio considerável para desenvolvedores de software e cientistas de dados. Herkömmliche Datenverarbeitungsbibliotheken as Pandas são intuitivamente, pode ser o grande número de dados que verificam as muitas organizações que são alteradas para o manual. Consulte Dask-Bibliothek unverzichtbar.
Com a Biblioteca Python Dask, você pode facilmente executar cálculos complexos em big data usando Python. Isso também pode ser alcançado usando CPUs e GPUs econômicas. Portanto, é importante distinguir entre manipulação e pré-processamento de dados, que podem ser realizados na CPU, e operações algorítmicas e processamento de imagem e vídeo, que são mais adequados para a GPU.
Nesta postagem do blog, discutiremos as funções da Dask-Bibliothek ein, permitindo-lhe otimizar seu uso de dados.
Detalhes da Biblioteca Python DASK
Dask é uma biblioteca de código aberto para computação paralela que permite aos usuários dimensionar com eficiência aplicativos Python de uma única máquina para grandes clusters. Comparado ao Pandas, que trabalha principalmente na memória, o Dask se caracteriza por gerenciar computações paralelas e pode servir dados maiores que a memória disponível.
Dos principais componentes do Dask são:
Matrizes Dask
Dask DataFrames
Bolsas Dask
A verdadeira beleza do Dask é sua capacidade de se integrar às bibliotecas Python existentes e trabalhar perfeitamente com elas.
Instalar Dask
Por favor, instale-o primeiro e depois instale-o.
Por favor, use Dask ganz einfach com pip installieren:
```bash
pip install dask
```
As funções do Scheduler são as seguintes:
```bash
pip install dask[distributed]
```
Após a instalação, verifique sua instalação verificando a versão do DASK em seu ambiente Python:
import dask
print(dask.__version__)
Dask-Arrays: Computação fora do núcleo
Dask-Arrays é uma ferramenta poderosa para processar grandes quantidades de dados numéricos que não cabem na memória. Matrizes muito grandes para Speicher podem ser divididas em partes menores, permitindo computação paralela.
Criando matrizes Dask
Você pode usar o NumPy para criar matrizes Dask. Por exemplo:
import dask.array as da
import numpy as np
Criando uma grande matriz NumPy
numpy_array = np.random.rand(10000, 10000)
Criando uma matriz de tarefas a partir de uma matriz NumPy
x = da.from_array(numpy_array, chunks=(1000, 1000))
Você pode
Operação básica
Dask-Arrays suportam operações NumPy-ähnliche, Calechnungen werden jedoch erst geschäften, wenn sie exprenschen angefordert werden. Por exemplo:
result = (x + 1).mean()
Para calcular o resultado, use:
final_result = result.compute()
Esta solução pode melhorar significativamente o desempenho, especialmente ao trabalhar com grandes conjuntos de dados.
Dask DataFrames: Uma interface familiar para big data
Wenn Sie Igual ao Pandas verraut sind, é uma compreensão intuitiva dos Dask DataFrames. Eles são capazes de processar grandes conjuntos de dados por meio de uma interface familiar, mas aproveitam o processamento paralelo.
Criação de Dask-Datenrahmen
Você pode criar um Dask DataFrame lendo um arquivo CSV ou convertendo um Pandas DataFrame da seguinte maneira:
import dask.dataframe as dd
Lendo arquivos CSV grandes no Dask DataFrame
df = dd.read_csv('large_dataset.csv')
Dieser Vorgang divide o CSV-Datei em múltiplas partições e implementa empilhamento paralelo. O Dask também suporta leitura de JSON, HDF5, Parquet, Orc e tabelas de banco de dados usando SQL. Os Dask DataFrames podem ser escritos em CSV, HDF5, Parquet e SQL.
Operação Dask-Datanrahmen
Operações comuns do DataFrame, como filtragem e agregação, podem ser executadas sem problemas:
filtered_df = df[df['avg_gain'] > 30]
Diese Vorgänge sind verzögert, bedeutet, dass Dask
.compute()
Descrição das bolsas Dask: Projetos sem data de construção
Dask-Bags são úteis para coleções de objetos Python. Isso é particularmente benéfico para processar arquivos JSON, dados de texto ou outros tipos de dados não estruturados. A função from_sequence é Möglichkeit, Python-Iterables zu lesen. É também uma lição de Avro-Formaten. Ele pode operar com os formatos CSV, JSON e Avro.
Criando um pacote Dask
Você pode criar um Dash Bag lendo um arquivo JSON:
import dask.bag as db
bag = db.read_text('data/*.json')
Operando em Dunklen Säcken
Dask-Taschen oferece suporte a mapeamentos e filtros padrão. A seguir, um exemplo do processo de mapeamento:
mapped_bag = bag.map(lambda x: x['slope'])
Você pode usar Arrays e dados „.compute()“ para executar as operações:
final_output = mapped_bag.compute()
Programação com Dask
A primeira vez que foi usado é o Agendador padrão. Esta é uma opção para planejadores de thread única e multithread ou verticais.
Programador local
O agendador local é fácil de usar para pequenas cargas de trabalho. Ele usa funções de threading do Python para executar tarefas em paralelo, tornando-o ideal para cálculos rápidos com conjuntos de dados de tamanho moderado.
Programador Distribuído
Em casos em que o conjunto de dados é grande ou a computação é intensiva, usar o módulo dask.distributed pode melhorar significativamente o desempenho. Aqui está uma breve configuração:
from dask.distributed import Client
client = Client() # This starts a local cluster
# or
client = Client(processes=False)
Você pode monitorar o status do seu cluster e tarefas para controlar melhor seus recursos. Um agendador de vários nós requer a instalação do Dask em cada nó e configuração adicional do agendador e dos trabalhadores.
dask.config.set(scheduler='threads')
x.compute()
Ou como um gerenciador de contexto:
with dask.config.set(scheduler='threads'):
x.compute()
Com o poolbasierten Einzelmaschinen-Scheduler você pode usar pools definidos pelo usuário ou definir os desejos desejados Anzahl e Workern angeben:
from concurrent.futures import ThreadPoolExecutor
with dask.config.set(pool=ThreadPoolExecutor(4)):
x.compute()
with dask.config.set(num_workers=4):
x.compute()
Wenn Sie é um Dask-Cloud-Bereitstellung relacionado ao Kubernetes, mas em Dask-Dokumentation
Deckt Szenarien para vários Knoten, Cloud, Kubernetes e HPC ab. No final do documento você encontrará todo o conhecimento e todas essas
Wenn Sie Skalierbarkeit O problema é que o interpretador Python com o GIL não tem problema, é a implementação de Workern höchstwahrscheinlich obrigatória. Você pode ajustar o número de threads por trabalhador, mas é recomendado um thread por núcleo do processador (CPU ou vCPU).
Isso pode ser atribuído a vários funcionários ou apenas a um. Na minha instância baseada em nuvem (oficialmente não Kubernetes) com 12 vCPUs, posso configurar o seguinte
dask worker --nworkers 12 --nthreads 1 tcp://192.0.0.100:8786
# or
dask worker --nworkers 1 --nthreads 12 tcp://192.0.0.100:8786
Morra em Befehlszeilenoptionen, morra em einer Shell ou einem Skript gerunnen werden. CompleteBefehlszeilenreferenz finden
Inicie o Sie den Scheduler von der Kommandozeile como segue:
$ dask scheduler
Scheduler at: tcp://192.0.0.100:8786
Observe que o Dask-Worker é iniciado na versão Scheduler. Uma desvantagem do Dask (com a qual você pode lidar, no entanto) é que ele
Ao iniciar o planejador e os trabalhadores, use o servidor web de diagnóstico e a URL
Otimização de desempenho usando Dask
Um das Potenzial von Dask voll auszuschöpfen, ist die Leistungsoptimierung entscheidend. As duas estratégias a seguir podem alcançar excelentes resultados:
Particionamento de dados
Correct Aufteilung der Daten in überschaubare Blöcke verbessert die Leistung. Por exemplo, em Dask DataFrames, os cálculos podem ser mais rápidos se o número de partições for especificado explicitamente.
Jede Partition é essencialmente um Pandas-Datanrahmen empacotado, ou seja, as funções do Dask-Datanrahmen e as funções da família Pandas. Por exemplo, se você quiser um conjunto de dados em um dataframe Dask com 1 bilhão de linhas e 100 partições, o Dask criará implicitamente 10 milhões de dataframes Pandas.
Dask usa a função Datengraf para implementar Datenrahmen com Pandas. Você pode usar as especificações de parâmetros do Pandas, mas há algumas limitações, dependendo da versão do Pandas que o Dask usa.
Portanto, evite fazer muitas tarefas pequenas
Das Erstellen zu kleiner Aufgaben cann zu Ineffizienzen führen. Cada tarefa exige muito esforço e, se as tarefas forem muito granulares, os benefícios do processamento paralelo serão compensados. Eine kleinere Anzahl größerer Aufgaben ist für Dask im großen Maßstab besser geeignet.
Casos de uso comuns do Dask
Dask ist in verschiedenen Szenarien zur Datenverarbeitung and-análise anwendbar:
Análise de dados em larga escala
Dask DataFrames são ideais para análise de big data, Speichergrenzen überschreiten e recursos analíticos padrão do Pandas. Verifique a versão do Pandas que o Dask usa para ver quais recursos são suportados.
Aprendizado de máquina
A integração do Dask confia que a biblioteca do Scikit-learn não é complicada. Por exemplo, você pode usar o Dask-ML para dimensionar com eficiência tarefas de aprendizado de máquina em grandes conjuntos de dados, melhorando significativamente o tempo de processamento. Dask fornece processamento paralelo distribuído de funções Python. Se você também tem funções, pode usar essas funções paralelas de decoradores. Allerdings hat die Verschachtelung auch ihre Grenzen.
Datas e alterações
Isso simplifica a leitura e a conversão de grandes conjuntos de dados para uso na fase de pré-processamento antes da análise de significado entscheidender e permite que você manipule vários formatos sem problemas.
Nutzen Sie Dask para seu fluxo de trabalho de dados
Analisar e analisar dados em escala, especialmente em termos de manipulação de dados. Se você entender os recursos mais importantes, poderá integrar o Dask efetivamente ao seu fluxo de trabalho de ciência de dados Python.
Recursos paralelos semelhantes ao Dask, mas com a capacidade de usar ferramentas tradicionais. Não importa se você trabalha com grandes matrizes, dataframes ou dados não estruturados, o Dask abre novas maneiras de manipular dados de forma eficiente.
Sie sind jetzt well gerüstet, um die Leistung von Dask zu nutzen and Ihre Datenverarbeitungsaufgaben effizient and skalierbar zu gestalten.
Programar é divertido!