Pandas SettingwithCopyWarning 警告處理
數據處理時,常使用 python 的數據結構及分析工具 Pandas (Python Data Analysis Library) ,在使用時經常遇到一項警告: SettingWithCopyWarning ,這警告是學習 Pandas 時最常見的障礙之一,從 Stack Overflow 的討論串數量就知道自己並不孤單。來回爬了幾次,還是有看沒懂,確認過執行結果如預期,就先把警告忽略。 直到發現這篇 SettingwithCopyWarning- How to Fix This Warning in Pandas ,有著清楚定義 + 圖片支援 + 這警告的歷史,耐心讀完後終於瞭解如何避免,在使用 Pandas 時有相當大的幫助,可避免預期外的數據操作,導致結果錯誤,以下摘錄重點。 這警告在說什麼? 這是個警告,而非錯誤,所以程式碼還是會執行。它通知你的操作可能未達到預期的效果,因此應檢查結果以確保沒有犯錯。做決定前,最好花點時間了解發生什麼事情。 首先,瞭解 pandas 中,你的操作,有可能返回 (return) 的是數據的 view 或是 copy 。 from here 上圖中,左邊 df2 是 df1 的一個子集,是一個 view;而右邊的 df2 是一個新的獨立物件,是一個 copy。 當你試著更改資料時,可能會導致問題: from here 你可能想修改原始 df1 數據(左),或是只想修改 df2(右邊)。這警告叫你開一下這薛丁格的盒子,確認裡面貓的生死。 警告原因:Chained assignment 及 Hidden chaining 數據操作定義: 分配 (Assignment,or set) — 設置某些值的操作;如 data = pd.read_csv('xbox-3-day-auctions.csv') 取得 (Access, or get) — 返回某物值的操作;如下面的索引和鏈接 索引 (Indexing) — 對數據子集的分配或取得方法; 如 data [1:5] 鏈接 (Chaining) — 連續使用多個索引操作; 如 data [1:5] [1:3] Chained assignmen = 4 +...