フッターコンテンツにスキップ
PYTHONヘルプ

Dask Python(開発者向けのしくみ)

Pythonはデータ分析と機械学習における強力な言語ですが、大規模なデータセットを扱うことはデータ分析において挑戦となることがあります。 ここでDaskが登場します。 Dask is an open-source library that provides advanced parallelization for analytics, enabling efficient computation on large datasets that exceed the memory capacity of a single machine. In this article, we will look into the basic usage of the Dask library and another very interesting PDF-generation library called IronPDF from Iron Software to generate PDF documents.

なぜDaskを使うのか?

Daskは、Pythonコードを1台のラップトップから大規模クラスターにスケールするように設計されています。 これは、NumPy、pandas、scikit-learnなどの人気のPythonライブラリとシームレスに統合され、コードの大幅な変更なしに並列実行を可能にします。

Daskの主な特徴

  1. 並列計算:Daskを使用して複数のタスクを同時に実行でき、計算の速度を大幅に向上させることができます。
  2. スケーラビリティ:Daskはデータセットを小さなチャンクに分割し、それを並列に処理することでメモリを超えるデータセットを扱うことができます。
  3. 互換性:既存のPythonライブラリと連携良好で、現在のワークフローに組み込みやすいです。
  4. 柔軟性:pandas、NumPy、およびリストにそれぞれ模した高レベルのコレクション、Dask DataFrame、タスクグラフ、Dask Array、Dask Cluster、およびDask Bagを提供します。

Daskの入門

インストール

Daskのインストールにはpipを使用できます:

pip install dask[complete]
pip install dask[complete]
SHELL

基本的な使用法

ここでは、Daskがどのように計算を並列化するかを示す簡単な例を紹介します:

import dask.array as da

# Create a large Dask array
x = da.random.random((10, 10), chunks=(10, 10))
print('Generated Input')
print(x.compute())

# Perform a computation
result = x.mean().compute()
print('Generated Mean')
print(result)
import dask.array as da

# Create a large Dask array
x = da.random.random((10, 10), chunks=(10, 10))
print('Generated Input')
print(x.compute())

# Perform a computation
result = x.mean().compute()
print('Generated Mean')
print(result)
PYTHON

この例では、Daskが大きな配列を作成しそれを小さなチャンクに分割します。 compute()メソッドは並列計算をトリガーし、結果を返します。 タスクグラフは、Python Daskで並列計算を実現するために内部で使用されます。

出力

Dask Python(開発者のための作業メカニズム):図1

Dask DataFrame

Dask DataFrameは、pandas DataFrameに似ていますが、メモリを超えるデータセットを扱うために設計されています。 こちらが例です:

import dask

# Generate a synthetic timeseries DataFrame
df = dask.datasets.timeseries()
print('\nGenerated DataFrame')
print(df.head(10))

# Compute mean hourly resampled DataFrame
print('\nComputed Mean Hourly DataFrame')
print(df[["x", "y"]].resample("1h").mean().head(10))
import dask

# Generate a synthetic timeseries DataFrame
df = dask.datasets.timeseries()
print('\nGenerated DataFrame')
print(df.head(10))

# Compute mean hourly resampled DataFrame
print('\nComputed Mean Hourly DataFrame')
print(df[["x", "y"]].resample("1h").mean().head(10))
PYTHON

このコードは、Daskが時系列データを処理し、合成データセットを生成し、複数のPythonプロセス、分散スケジューラ、および複数のコア計算リソースを使用して、時系列データを処理し、合計の計算(例えば、毎時の平均など)を効率的に実行するDaskの能力を示しています。

出力

Dask Python(開発者のための作業メカニズム):図2

ベストプラクティス

  1. 小さく始める:大規模なデータセットにスケールアップする前に、まず小さなデータセットでDaskの動作を理解しましょう。
  2. ダッシュボードの使用:Daskは計算進度とパフォーマンスを監視するためのダッシュボードを提供します。
  3. チャンクサイズの最適化:メモリの使用と計算速度のバランスを取る適切なチャンクサイズを選択してください。

IronPDFの紹介

Dask Python(開発者のための作業メカニズム):図3 - IronPDF:Python PDFライブラリ

IronPDFは、HTML、CSS、画像、およびJavaScriptを使用してPDFドキュメントを作成、編集、署名するために設計された強力なPythonライブラリです。 これは、メモリ使用量を最小限に抑えながら、パフォーマンス効率に重点を置いています。 主な特徴には以下が含まれます:

  • HTMLからPDFへの変換:HTMLファイル、文字列、URLを簡単にPDFドキュメントに変換し、ChromeのPDFレンダリング機能を活用します。
  • クロスプラットフォームサポート:Windows、Mac、Linux、さまざまなクラウドプラットフォーム上のPython 3+全体でシームレスに動作します。 .NET、Java、Python、およびNode.js環境とも互換性があります。
  • 編集と署名:PDFプロパティをカスタマイズし、パスワードや権限のようなセキュリティ手段を適用し、デジタル署名をシームレスに追加します。
  • ページテンプレートと設定:ヘッダー、フッター、ページ番号、調整可能な余白、カスタム用紙サイズ、レスポンシブデザインを備えたPDFレイアウトを調整します。
  • 標準準拠:PDF/AおよびPDF/UAのようなPDF標準に厳密に準拠し、UTF-8文字エンコーディング互換性を保証します。 画像、CSSスタイルシート、フォントなどのアセットの効率的な管理もサポートされています。

インストール

pip install ironpdf
pip install dask
pip install ironpdf
pip install dask
SHELL

IronPDFとDaskを使用してPDFドキュメントを生成する

前提条件

  1. Visual Studio Codeがインストールされていることを確認してください。
  2. Pythonバージョン3がインストールされています。

まず、スクリプトを追加するためのPythonファイルを作成しましょう。

Visual Studio Codeを開き、daskDemo.pyというファイルを作成します。

必要なライブラリをインストールします:

pip install dask
pip install ironpdf
pip install dask
pip install ironpdf
SHELL

その後、以下のPythonコードを追加して、IronPDFとDask Pythonパッケージの使用法を示します:

import dask
from ironpdf import *

# Apply your license key
License.LicenseKey = "key"

# Generate a synthetic timeseries DataFrame
df = dask.datasets.timeseries()
print('\nGenerated DataFrame')
print(df.head(10))

# Compute the mean hourly DataFrame
dfmean = df[["x", "y"]].resample("1h").mean().head(10)
print('\nComputed Mean Hourly DataFrame')
print(dfmean)

# Initialize the PDF renderer
renderer = ChromePdfRenderer()

# Create HTML content for the PDF
content = "<h1>Awesome Iron PDF with Dask</h1>"

# Add generated DataFrame to the content
content += "<h2>Generated DataFrame (First 10)</h2>"
rows = df.head(10)
for i in range(10):
    row = rows.iloc[i]
    content += f"<p>{str(row[0])}, {str(row[2])}, {str(row[3])}</p>"

# Add computed mean DataFrame to the content
content += "<h2>Computed Mean Hourly DataFrame (First 10)</h2>"
for i in range(10):
    row = dfmean.iloc[i]
    content += f"<p>{str(row[0])}</p>"

# Render the HTML content as PDF
pdf = renderer.RenderHtmlAsPdf(content)

# Save the PDF to a file
pdf.SaveAs("DemoIronPDF-Dask.pdf")
import dask
from ironpdf import *

# Apply your license key
License.LicenseKey = "key"

# Generate a synthetic timeseries DataFrame
df = dask.datasets.timeseries()
print('\nGenerated DataFrame')
print(df.head(10))

# Compute the mean hourly DataFrame
dfmean = df[["x", "y"]].resample("1h").mean().head(10)
print('\nComputed Mean Hourly DataFrame')
print(dfmean)

# Initialize the PDF renderer
renderer = ChromePdfRenderer()

# Create HTML content for the PDF
content = "<h1>Awesome Iron PDF with Dask</h1>"

# Add generated DataFrame to the content
content += "<h2>Generated DataFrame (First 10)</h2>"
rows = df.head(10)
for i in range(10):
    row = rows.iloc[i]
    content += f"<p>{str(row[0])}, {str(row[2])}, {str(row[3])}</p>"

# Add computed mean DataFrame to the content
content += "<h2>Computed Mean Hourly DataFrame (First 10)</h2>"
for i in range(10):
    row = dfmean.iloc[i]
    content += f"<p>{str(row[0])}</p>"

# Render the HTML content as PDF
pdf = renderer.RenderHtmlAsPdf(content)

# Save the PDF to a file
pdf.SaveAs("DemoIronPDF-Dask.pdf")
PYTHON

コードの説明

このコードスニペットは、データ処理のためにDaskを、PDF生成のためにIronPDFを統合します。 次を示します:

  1. Dask統合dask.datasets.timeseries()を使用して合成時系列DataFrame(df)を生成します。 最初の10行(df.head(10))を印刷し、列「x」と「y」に基づいて平均毎時DataFrame(dfmean)を計算します。
  2. IronPDFの使用法License.LicenseKeyでIronPDFライセンスキーを設定します。 生成および計算されたDataFrameからのヘッダーとデータを含むHTML文字列(content)を作成し、ChromePdfRenderer()を使用してこのHTMLコンテンツをPDF(pdf)にレンダリングし、最後に「DemoIronPDF-Dask.pdf」としてPDFを保存します。

このコードは、IronPDFのHTMLコンテンツをPDFドキュメントに変換する機能とDaskの大規模データ操作の能力を組み合わせています。

出力

Dask Python(開発者のための作業メカニズム):図4

PDF

Dask Python(開発者のための作業メカニズム):図5

IronPDFライセンス

IronPDFライセンスキーは、購入前にその豊富な機能を確認することができます。

IronPDFパッケージを使用する前に、スクリプトの先頭にライセンスキーを配置します。

from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
PYTHON

結論

Daskは、Pythonでのデータ処理能力を大幅に向上させることができる多用途のツールです。 並列計算と分散計算を可能にすることで、大規模なデータセットを効率的に処理し、既存のPythonエコシステムにシームレスに統合することができます。 IronPDFは、HTML、CSS、画像、およびJavaScriptを使用してPDFドキュメントを作成および操作するための強力なPythonライブラリです。 HTMLからPDFへの変換、PDF編集、デジタル署名、クロスプラットフォームサポートなどの機能を提供し、Pythonアプリケーションのさまざまなドキュメント生成や管理タスクに適しています。

両者のライブラリを組み合わせることで、データサイエンティストは高度なデータ分析と科学操作を実行し、IronPDFを使用してその出力結果を標準のPDF形式で保存できます。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。