Menambahkan Komputasi Paralel ke Panda

Mungkin Anda telah menghadapi tugas komputasi paralel pada kerangka data panda. Masalah ini dapat diselesaikan baik dengan Python asli, dan dengan bantuan perpustakaan yang luar biasa - pandarallel. Pada artikel ini saya akan menunjukkan bagaimana perpustakaan ini memungkinkan Anda untuk memproses data Anda menggunakan semua kapasitas yang tersedia.



Perpustakaan memungkinkan Anda untuk tidak memikirkan jumlah utas, membuat proses, dan menyediakan antarmuka interaktif untuk memantau kemajuan.


Instalasi


pip install pandas jupyter pandarallel requests tqdm

Seperti yang Anda lihat, saya juga menginstal tqdm. Dengan itu, saya akan jelas menunjukkan perbedaan dalam kecepatan eksekusi kode dalam pendekatan sekuensial dan paralel.


Kustomisasi


import pandas as pd
import requests

from tqdm import tqdm
tqdm.pandas()

from pandarallel import pandarallel
pandarallel.initialize(progress_bar=True)

Anda dapat menemukan daftar lengkap pengaturan dalam dokumentasi pandarallel.


Buat bingkai data


Untuk percobaan, buat bingkai data sederhana - 100 baris, 1 kolom.


df = pd.DataFrame(
    [i for i in range(100)],
    columns=["sample_column"]
)


Contoh tugas yang cocok untuk paralelisasi


Seperti kita ketahui, solusi tidak semua masalah bisa diparalelkan. Contoh sederhana dari tugas yang sesuai adalah memanggil beberapa sumber eksternal, seperti API atau database. Dalam fungsi di bawah ini, saya memanggil API yang mengembalikan saya satu kata acak. Tujuan saya adalah menambahkan kolom dengan kata-kata yang berasal dari API ini ke bingkai data.


def function_to_apply(i):
    r = requests.get(f'https://random-word-api.herokuapp.com/word').json()

    return r[0]


df["sample-word"] = df.sample_column.progress_apply(function_to_apply)

, tqdm, — progress_apply apply. , , progress bar.



"" 35 .



, parallel_apply:


df["sample-word"] = df.sample_column.parallel_apply(function_to_apply)


5 .



pandas , pandarallel, Github .



! — .


All Articles