Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Menggabungkan Banyak Bingkai Data Panda Secara Eksponen Lambat, dan Bagaimana Saya Boleh Mengelakkannya?

Mengapa Menggabungkan Banyak Bingkai Data Panda Secara Eksponen Lambat, dan Bagaimana Saya Boleh Mengelakkannya?

DDD
DDDasal
2024-12-20 03:38:13857semak imbas

Why is Concatenating Many Pandas DataFrames Exponentially Slow, and How Can I Avoid It?

Penggabungan DataFrames Secara Eksponen Lambat

Apabila bekerja dengan set data yang besar, adalah perkara biasa untuk membahagikan data kepada bahagian yang lebih kecil untuk pemprosesan yang cekap. Walau bagaimanapun, penyatuan kembali ketulan ini boleh menjadi lebih perlahan apabila bilangan ketulan bertambah.

Punca Kelembapan

Kelembaban itu dikaitkan dengan cara pd.concat() dilaksanakan. Apabila dipanggil dalam gelung, ia mencipta DataFrame baharu untuk setiap gabungan, menghasilkan penyalinan data yang banyak. Kos penyalinan ini meningkat secara kuadratik dengan bilangan lelaran, yang membawa kepada peningkatan eksponen yang diperhatikan dalam masa pemprosesan.

Mengelakkan Kelembapan

Untuk mengelakkan kesesakan prestasi ini, adalah penting untuk mengelak daripada memanggil pd.concat() di dalam gelung untuk. Sebaliknya, simpan ketulan dalam senarai dan gabungkan kesemuanya sekali gus selepas diproses:

super_x = []
for i, df_chunk in enumerate(df_list):
    [x, y] = preprocess_data(df_chunk)
    super_x.append(x)
super_x = pd.concat(super_x, axis=0)

Menggunakan pendekatan ini, penyalinan hanya berlaku sekali, dengan ketara mengurangkan masa pemprosesan keseluruhan.

Atas ialah kandungan terperinci Mengapa Menggabungkan Banyak Bingkai Data Panda Secara Eksponen Lambat, dan Bagaimana Saya Boleh Mengelakkannya?. 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