top of page

Então, use Python Dask para análise e análise de dados

  • Foto do escritor: Claude Paugh
    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!

+1 508-203-1492

Bedford, MA 01730

bottom of page