跳至頁尾內容
PYTHON 幫助

Dask Python(對開發者的工作原理)

Python 是進行資料分析和機器學習的強大語言,但處理大型資料集對資料分析來說可能很具挑戰性。 這就是 Dask 派上用場的地方。 Dask 是一個開源程式庫,提供先進的分析並行化功能,使能夠對超過單臺機器記憶體容量的大型資料集進行高效計算。在本文中,我們將探討 Dask 程式庫的基本用法以及另一個非常有趣的生成 PDF 的程式庫,叫做來自 Iron SoftwareIronPDF 用於生成 PDF 文件。

為什麼要使用 Dask?

Dask 被設計為從單臺筆電擴展您的 Python 程式碼到大型叢集。 它與流行的 Python 程式庫如 NumPy、pandas 和 scikit-learn 無縫整合,以便無需對程式碼進行重大更改即可進行並行執行。

Dask 的關鍵功能

  1. 並行計算: Dask 允許您同時執行多個任務,大大加快計算速度。
  2. 可擴展性: 它可以通過將資料集分成小塊並進行並行處理來處理大於記憶體的資料集。
  3. 相容性: 與現有 Python 程式庫效果良好,使其易於整合到您當前的工作流程中。
  4. 靈活性: 提供高級集合如 Dask DataFrame、任務圖、Dask Array、Dask Cluster 和 Dask Bag,分別模仿 pandas、NumPy 和列表。

開始使用 Dask

安裝

您可以使用 pip 安裝 Dask:

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 DataFrames

Dask DataFrames 類似於 pandas DataFrames,但設計用於處理大於記憶體的資料集。 這是一個例子:

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 處理時間序列資料、生成合成資料集並通過使用其多進程處理、大量調度器和多核計算資源的並行處理能力計算類似於每小時均值的聚合。

輸出

Dask Python(對開發者的工作原理):圖 2

最佳實踐

  1. 從小範圍開始: 從小資料集開始以了解 Dask 的工作原理,然後擴展。
  2. 使用儀錶盤: Dask 提供儀錶盤來監控計算的進度和性能。
  3. 優化分塊大小: 選擇適當的分塊大小以平衡記憶體使用和計算速度。

介紹 IronPDF

Dask Python(對開發者的工作原理):圖 3 - IronPDF:Python PDF 程式庫

IronPDF 是一個強大的 Python 程式庫,設計用於使用 HTML、CSS、圖片和 JavaScript 建立、編輯、簽署 PDF 文件。 它強調性能效率,記憶體使用率極低。 其主要功能包括:

  • HTML 到 PDF 轉換: 借助 Chrome 的 PDF 渲染能力,輕鬆將 HTML 文件、字串和 URL 轉換為 PDF 文件。
  • 跨平台支持: 在 Windows、Mac、Linux 和多個雲平台上的 Python 3+ 中順利運行。 它還與 .NET、Java、Python 和 Node.js 環境相容。
  • 編輯與簽署: 調整 PDF 屬性、應用如密碼和權限的安全措施,並順利加入數位簽章。
  • 頁面模板與設定: 使用頁頭、頁尾、頁碼、可調整邊距、自定義紙張尺寸、響應式設計調整 PDF 布局。
  • 標準合規性: 嚴格遵循 PDF 標準,如 PDF/A 和 PDF/UA,確保 UTF-8 字元編碼的相容性。 有效管理圖片、CSS 樣式表和字體等資產。

安裝

pip install ironpdf dask

使用 IronPDF 和 Dask 生成 PDF 文件

先決條件

  1. 確保已安裝 Visual Studio Code。
  2. 已安裝 Python 版本 3。

首先,讓我們建立一個 Python 文件來新增我們的腳本。

打開 Visual Studio Code 並建立一個文件,daskDemo.py

安裝必要的庫:

pip install dask ironpdf

然後新增以下 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 用於資料處理和 IronPDF 用於生成 PDF 的功能。 它展示了:

  1. Dask 整合: 使用 dask.datasets.timeseries() 生成合成時間序列 DataFrame(df)。 列印出前 10 行(df.head(10))並基於欄位 "x" 和 "y" 計算每小時的平均 DataFrame(dfmean)。
  2. IronPDF 的使用: 使用 License.LicenseKey 設定 IronPDF 授權金鑰。 建立一個 HTML 字串(content),其中包含標題和從生成和計算出的 DataFrame 中取得的資料,然後使用 ChromePdfRenderer() 將這些 HTML 內容渲染成 PDF(pdf),最後將 PDF 保存為 "DemoIronPDF-Dask.pdf"。

此程式碼結合了 Dask 的大規模資料處理能力和 IronPDF 將 HTML 內容轉換為 PDF 文件的功能。

輸出

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 是一個強大的 Python 程式庫,用於使用 HTML、CSS、圖片和 JavaScript 來建立和操縱 PDF 文件。 它提供 HTML 到 PDF 轉換、PDF 編輯、數位簽署和跨平台支援等功能,適用於 Python 應用程式中的各種文件生成和管理任務。

這兩個程式庫共同使資料科學家能夠進行高級資料分析和科學操作,然後使用 IronPDF 將輸出結果以標準 PDF 格式儲存。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話