跳過到頁腳內容
PYTHON 幫助

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

Python 是一種功能強大的資料分析和機器學習語言,但處理大型資料集對資料分析來說可能具有挑戰性。 這時Dask就派上用場了。 Dask 是一個開源函式庫,它為分析提供進階並行化功能,能夠有效率地處理超出單一機器記憶體容量的大型資料集。本文將介紹 Dask 庫的基本用法,以及Iron Software開發的另一個非常有趣的 PDF 生成庫IronPDF ,用於生成 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 資料幀

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 處理時間序列資料、生成合成資料集以及利用其平行處理能力(使用多個 Python 進程、分散式調度程序和多核心計算資源)高效計算聚合(例如小時平均值)的能力。

輸出

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/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 用於資料處理和IronPDF用於 PDF 生成。 它表明:

  1. Dask 整合:使用 dask.datasets.timeseries() 產生合成時間序列 DataFrame (df)。 列印前 10 行 (df.head(10)),並根據列"x"和"y"計算平均小時資料幀 (dfmean)。
  2. IronPDF用法:使用 License.LicenseKey 設定IronPDF許可證金鑰。 建立一個包含來自已產生和已計算 DataFrame 的標題和資料的 HTML 字串 (content),然後使用 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 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me