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

Mary-Kate Olsen
Lepaskan: 2024-10-24 06:15:30
asal
479 orang telah melayarinya

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>
Salin selepas log masuk

Gunakan:

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

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!