Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menapis Struktur Data Panda dengan Cekap Menggunakan Pengindeksan Boolean?

Bagaimana untuk Menapis Struktur Data Panda dengan Cekap Menggunakan Pengindeksan Boolean?

DDD
DDDasal
2024-10-20 12:53:29655semak imbas

How to Efficiently Filter Pandas Data Structures Using Boolean Indexing?

Penapisan Cekap Struktur Data Pandas Menggunakan Pengindeksan Boolean

Pandas, perpustakaan Python yang popular untuk manipulasi data, menawarkan cara yang cekap untuk menapis DataFrames dan objek Siri. Apabila berbilang penapis perlu digunakan secara berturut-turut, adalah penting untuk mengoptimumkan proses untuk mengelakkan penyalinan data yang tidak diperlukan.

Pengindeksan Boolean: Pendekatan Unggul

Kaedah tradisional menggunakan indeks semula() mengakibatkan pertindihan data dan tidak cekap untuk set data yang besar. Pengindeksan Boolean, ciri Pandas dan NumPy, menyediakan alternatif yang lebih pantas.

Pertimbangkan contoh berikut:

<code class="python">import pandas as pd

df = pd.DataFrame({'col1': [0, 1, 2], 'col2': [10, 11, 12]})

def b(x, col, op, n): 
    return op(x[col],n)

def f(x, *b):
    return x[(np.logical_and(*b))]

b1 = b(df, 'col1', ge, 1)
b2 = b(df, 'col1', le, 1)

filtered_df = f(df, b1, b2)</code>

Pendekatan ini menggunakan pengindeksan boolean untuk melaksanakan operasi penapisan dengan cekap. Fungsi b mencipta objek Siri Boolean, dan fungsi f menggabungkannya menggunakan operator logik NumPy. Hasilnya ialah DataFrame baharu dengan hanya baris yang memenuhi kriteria yang ditetapkan.

Kaedah Pertanyaan Pandas untuk Prestasi Dipertingkatkan

Dalam Pandas versi 0.13 dan ke atas, kaedah pertanyaan menyediakan alternatif kepada secara eksplisit menggabungkan Siri Boolean. Ia memanfaatkan NuMexr untuk penilaian yang cekap dan menawarkan sintaks yang lebih mudah:

<code class="python">filtered_df = df.query('col1 <= 1 &amp; 1 <= col1')</code>

Keterlanjutan kepada DataFrames

Teknik yang diterangkan untuk objek Siri boleh diperluaskan kepada DataFrames dengan mudah. Setiap penapis yang anda gunakan akan bertindak pada DataFrame asal, mengecilkan hasil secara berperingkat.

Dengan memanfaatkan pengindeksan boolean dan algoritma dioptimumkan Pandas, anda boleh menggunakan berbilang penapis dengan cekap pada struktur data anda tanpa menjejaskan prestasi.

Atas ialah kandungan terperinci Bagaimana untuk Menapis Struktur Data Panda dengan Cekap Menggunakan Pengindeksan Boolean?. 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