Memahami SettingWithCopyWarning dalam Pandas
Pengenalan
Setelah menaik taraf kepada Pandas 0.13.0rc1, anda mungkin menghadapi amaran baharu, SettingWithCopyWarning. Amaran ini berfungsi untuk memaklumkan anda tentang isu yang mungkin berlaku apabila mengubah suai salinan kepingan DataFrame dan bukannya DataFrame asal itu sendiri.
Punca Amaran
Amaran dicetuskan apabila nilai diberikan kepada kepingan DataFrame yang sebelum ini dibuat sebagai salinan. Sebagai contoh, pertimbangkan kod berikut:
quote_df = pd.read_csv(StringIO(str_of_all), sep=',', names=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg')) quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
Dalam kod ini, pembolehubah quote_df pada mulanya dicipta sebagai salinan DataFrame asal. Menetapkan nilai baharu pada lajur 'TVol' dalam quote_df mencetuskan SettingWithCopyWarning kerana perubahan tidak disebarkan kembali ke DataFrame asal.
Akibat Mengabaikan Amaran
Mengabaikan amaran boleh membawa kepada tingkah laku yang tidak dijangka dan ketidakkonsistenan dalam data anda manipulasi.
Pendekatan Disyorkan
Untuk mengelakkan amaran dan memastikan manipulasi data yang betul, anda harus menggunakan pengakses .loc untuk mengubah suai nilai terus dalam DataFrame asal. Kod berikut menulis semula contoh di atas menggunakan pengakses .loc:
quote_df.loc[:, 'TVol'] = quote_df['TVol']/TVOL_SCALE
Dengan menggunakan .loc, anda memastikan bahawa perubahan digunakan pada DataFrame asal dan bukannya salinan.
Melumpuhkan Amaran
Jika anda yakin tugasan berantai itu bertujuan dan tidak membawa kepada sebarang isu, anda boleh melumpuhkan SettingWithCopyWarning menggunakan kod berikut:
import pandas as pd pd.options.mode.chained_assignment = None # default='warn'
Walau bagaimanapun, secara amnya disyorkan untuk menangani isu asas yang menyebabkan amaran daripada melumpuhkannya.
Kesimpulan
SettingWithCopyWarning menyediakan maklum balas yang berharga untuk membantu anda mengenal pasti kemungkinan ralat dalam manipulasi data anda kod. Dengan memahami sebab dan akibat amaran ini, anda boleh memastikan bahawa kod anda berfungsi seperti yang dimaksudkan dan mengelakkan sebarang isu integriti data.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelakkan Tetapan PandasWithCopyWarning?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!