Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Penggunaan Tugasan Berantai yang Tidak Betul Boleh Menghasilkan Keputusan Yang Tidak Dijangka dalam Panda?

Bagaimanakah Penggunaan Tugasan Berantai yang Tidak Betul Boleh Menghasilkan Keputusan Yang Tidak Dijangka dalam Panda?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-24 06:15:30463semak imbas

How Can Incorrect Use of Chained Assignments Lead to Unexpected Results in Pandas?

Tugasan Berantai dalam Panda

Apabila bekerja dengan bingkai data dalam Panda, tugasan berantai boleh membawa kepada tingkah laku yang tidak dijangka atau positif palsu, seperti yang ditunjukkan oleh SettingWithCopyWarning. Amaran ini bertujuan untuk memaklumkan pengguna tentang kemungkinan perangkap dengan tugasan berantai.

Cara Tugasan Berantai Berfungsi

Dalam Panda, kebanyakan panggilan kaedah mengembalikan salinan objek. Ini bermakna apabila anda melaksanakan tugasan berantai, seperti df['column'] = df['column'].fillna(...), anda mungkin mengubah suai salinan kerangka data asal dan bukannya kerangka data asal itu sendiri.

Kesan Rantaian dengan .ix(), .iloc(), dan .loc()

Pilihan ix(), iloc(), dan loc () boleh menjejaskan gelagat tugasan berantai:

  • ix() ditamatkan dan tidak boleh digunakan.
  • iloc() mendapatkan semula data menggunakan indeks integer. Kaedah ini hanya boleh mengakses elemen secara langsung dan tidak menyokong tugasan berantai.
  • loc() mendapatkan semula data menggunakan label. Tugasan berangkai menggunakan loc() mencipta objek baharu, yang mungkin mengubah suai kerangka data asal atau tidak.

Amalan Pengekodan Optimum

Untuk mengelakkan potensi isu dengan tugasan berantai, adalah disyorkan untuk menyerahkan hasil operasi anda kepada pembolehubah baharu secara eksplisit. Sebagai contoh, bukannya:

<code class="python">df['amount'] = df['amount'].fillna(...)</code>

Gunakan:

<code class="python">df['amount_updated'] = df['amount'].fillna(...)</code>

Positif Palsu

Sesetengah tugasan berantai mungkin mencetuskan amaran walaupun ia melakukannya tidak mengubah suai kerangka data asal. Dalam kes sedemikian, anda boleh mematikan amaran menggunakan:

<code class="python">pd.set_option('chained_assignment', None)</code>

Contoh

Pertimbangkan kod berikut:

<code class="python">data['amount'] = data.apply(lambda row: function1(row, date, qty), axis=1) 
data['amount'] = data['amount'].astype(float)</code>

Kod ini boleh meningkatkan SettingWithCopyWarning kerana data['amount'] diberikan kepada dua kali. Untuk membetulkannya, tetapkan hasil operasi pertama kepada pembolehubah baharu:

<code class="python">temp_amount = data.apply(lambda row: function1(row, date, qty), axis=1) 
data['amount'] = temp_amount.astype(float)</code>

Atas ialah kandungan terperinci Bagaimanakah Penggunaan Tugasan Berantai yang Tidak Betul Boleh Menghasilkan Keputusan Yang Tidak Dijangka dalam Panda?. 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