Rumah >pembangunan bahagian belakang >Tutorial Python >Mengoptimumkan Pemprosesan Data Berskala Besar dalam Python: Panduan untuk Menjajarkan Operasi CSV

Mengoptimumkan Pemprosesan Data Berskala Besar dalam Python: Panduan untuk Menjajarkan Operasi CSV

DDD
DDDasal
2024-12-13 06:26:15233semak imbas

Optimizing Large-Scale Data Processing in Python: A Guide to Parallelizing CSV Operations

Masalah

Pendekatan standard, seperti menggunakan pandas.read_csv(), selalunya gagal apabila memproses fail CSV besar-besaran. Kaedah ini adalah satu-benang dan boleh menjadi kesesakan dengan cepat disebabkan oleh I/O cakera atau had memori.


Ujian Amalan Pengaturcara Python Terbaik


Penyelesaian

Dengan menyelaraskan operasi CSV, anda boleh menggunakan berbilang teras CPU untuk memproses data dengan lebih pantas dan lebih cekap. Panduan ini menggariskan teknik menggunakan:

  1. Dask: Pengiraan selari dengan perubahan minimum pada kod panda.
  2. Polar: Pustaka DataFrame berprestasi tinggi.
  3. Modul pemproses berbilang Python: Keselarian tersuai.
  4. Pembahagian Fail: Bahagikan dan takluk menggunakan ketulan yang lebih kecil.

Teknik

1. Membahagi Fail Besar

Memecahkan fail CSV yang besar kepada bahagian yang lebih kecil membolehkan pemprosesan selari. Berikut ialah contoh skrip:

import os

def split_csv(file_path, lines_per_chunk=1000000):
    with open(file_path, 'r') as file:
        header = file.readline()
        file_count = 0
        output_file = None
        for i, line in enumerate(file):
            if i % lines_per_chunk == 0:
                if output_file:
                    output_file.close()
                file_count += 1
                output_file = open(f'chunk_{file_count}.csv', 'w')
                output_file.write(header)
            output_file.write(line)
        if output_file:
            output_file.close()
    print(f"Split into {file_count} files.")

2. Pemprosesan Selari dengan Dask

Dask ialah pengubah permainan untuk mengendalikan data berskala besar dalam Python. Ia boleh menyelaraskan operasi pada set data yang besar dengan mudah:

import dask.dataframe as dd

# Load the dataset as a Dask DataFrame
df = dd.read_csv('large_file.csv')

# Perform parallel operations
result = df[df['column_name'] > 100].groupby('another_column').mean()

# Save the result
result.to_csv('output_*.csv', single_file=True)

Dask mengendalikan kekangan memori dengan mengendalikan ketulan data dan menjadualkan tugas secara bijak merentas teras yang tersedia.


Ujian Amalan Pengaturcara Python Terbaik


3. Supercharge dengan Polar

Polars ialah perpustakaan yang agak baharu yang menggabungkan kelajuan Rust dengan fleksibiliti Python. Ia direka untuk perkakasan moden dan boleh mengendalikan fail CSV dengan ketara lebih pantas daripada panda:

import polars as pl

# Read CSV using Polars
df = pl.read_csv('large_file.csv')

# Filter and aggregate data
filtered_df = df.filter(pl.col('column_name') > 100).groupby('another_column').mean()

# Write to CSV
filtered_df.write_csv('output.csv')


Polar cemerlang dalam situasi di mana kelajuan dan keselarian adalah kritikal. Ia amat berkesan untuk sistem dengan berbilang teras.

4. Keselarian Manual dengan Multiprocessing

Jika anda lebih suka mengekalkan kawalan ke atas logik pemprosesan, modul pemproses berbilang Python menawarkan cara yang mudah untuk menyelaraskan operasi CSV:

from multiprocessing import Pool
import pandas as pd

def process_chunk(file_path):
    df = pd.read_csv(file_path)
    # Perform operations
    filtered_df = df[df['column_name'] > 100]
    return filtered_df

if __name__ == '__main__':
    chunk_files = [f'chunk_{i}.csv' for i in range(1, 6)]
    with Pool(processes=4) as pool:
        results = pool.map(process_chunk, chunk_files)

    # Combine results
    combined_df = pd.concat(results)
    combined_df.to_csv('final_output.csv', index=False)

Pertimbangan Utama

  1. I/O Cakera lwn. Terikat CPU

    Pastikan strategi selari anda mengimbangi pemprosesan CPU dengan kelajuan baca/tulis cakera. Optimumkan berdasarkan sama ada kesesakan anda ialah I/O atau pengiraan.

  2. Memori Overhed

    Alat seperti Dask atau Polar adalah lebih cekap memori berbanding dengan multiprocessing manual. Pilih alatan yang selaras dengan kekangan memori sistem anda.

  3. Pengendalian Ralat

    Pemprosesan selari boleh memperkenalkan kerumitan dalam penyahpepijatan dan pengurusan ralat. Laksanakan pembalakan yang teguh dan pengendalian pengecualian untuk memastikan kebolehpercayaan.


Ujian Amalan Pengaturcara Python Terbaik

Atas ialah kandungan terperinci Mengoptimumkan Pemprosesan Data Berskala Besar dalam Python: Panduan untuk Menjajarkan Operasi CSV. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn