Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Memahami dan Menyelesaikan Tetapan PandasWithCopyWarning?

Bagaimana untuk Memahami dan Menyelesaikan Tetapan PandasWithCopyWarning?

DDD
Lepaskan: 2024-12-26 04:37:10
asal
716 orang telah melayarinya

How to Understand and Resolve Pandas' SettingWithCopyWarning?

Memahami SettingWithCopyWarning dalam Pandas

Latar Belakang:

Pandas versi 0.13 dan lebih tinggi SettingWithCopyWarning untuk menyerlahkan kemungkinan kekeliruan disebabkan oleh tugasan "berantai". Amaran ini bertujuan untuk menangani senario di mana salinan DataFrame diubah suai, membawa kepada hasil yang tidak dijangka.

Apakah Maksud Amaran?

Amaran menunjukkan bahawa nilai sedang ditetapkan pada salinan kepingan daripada DataFrame. Secara khusus, ia mencadangkan untuk menggantikan baris berikut:

quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
Salin selepas log masuk
Salin selepas log masuk

dengan:

quote_df.loc[row_index, 'TVol'] = value
Salin selepas log masuk

Cara Membetulkan Amaran:

Penyelesaian yang disediakan oleh amaran adalah untuk menggunakan pengindeksan loc sebaliknya. Walau bagaimanapun, ini mungkin tidak sesuai untuk semua kes penggunaan. Jika anda tidak mengambil berat tentang mengemas kini DataFrame asal, anda boleh melumpuhkan amaran dengan selamat dengan:

import pandas as pd
pd.options.mode.chained_assignment = None  # default='warn'
Salin selepas log masuk

Penjelasan Lain:

SettingWithCopyWarning menandakan tugasan berantai yang berfungsi tidak selalu berfungsi seperti yang diharapkan. Isu timbul apabila pilihan pertama mengembalikan salinan DataFrame, dan tugasan seterusnya dibuat kepada salinan tersebut. Corak ini boleh menyebabkan kekeliruan kerana perubahan tidak ditunjukkan dalam DataFrame asal.

Dalam kes anda, kod berikut menyebabkan amaran:

quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
Salin selepas log masuk
Salin selepas log masuk

Sejak quote_df['TVol' ] ialah salinan, tugasan tidak akan mengubah suai DataFrame asal. Sebaliknya, pertimbangkan untuk menggunakan:

quote_df = quote_df[quote_df['TVol'] > 0]
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
Salin selepas log masuk

Sumber Tambahan:

  • [Panduan Pengguna Pandas: Mengindeks dan Memilih Data](https://pandas.pydata .org/pandas-docs/stable/user_guide/indexing.html)
  • [Sains Data Python Buku Panduan: Pengindeksan dan Pemilihan Data](https://jakevdp.github.io/PythonDataScienceHandbook/02.01-indexing-and-selecting-data.html)
  • [Real Python: SettingWithCopyWarning dalam Pandas: Views vs Salinan](https://realpython.com/settingwithcopywarning-in-pandas/)
  • [Dataquest: SettingwithCopyWarning: Cara Membetulkan Amaran Ini dalam Panda](https://www.dataquest.io/blog/ settingwithcopywarning-pandas/)
  • [Ke arah Sains Data: Menjelaskan SettingWithCopyWarning dalam panda](https://towardsdatascience.com/explaining-the-settingwithcopywarning-in-pandas-520ea63f963a)

Atas ialah kandungan terperinci Bagaimana untuk Memahami dan Menyelesaikan Tetapan PandasWithCopyWarning?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan