關於x=df 和x=df.copy()的差別
請問在範例code Day_021_first_model.ipynb裡: **train = app_train** **test = app_test.copy()** 這兩行的差別在哪邊呢?? 為何train可以直接指定,test要用copy ? 謝謝 原始碼如下: from sklearn.preprocessing import MinMaxScaler from sklearn.impute import SimpleImputer # 特徵欄位清單 **train = app_train** features = list(train.columns) # 複製 test 資料 **test = app_test.copy()** # 填補器 : 設定缺失值補中位數 imputer = SimpleImputer(strategy = 'median') ...下略
回答列表
-
2023/07/17 下午 01:21王健安贊同數:0不贊同數:0留言數:3
YenCheng Lai 您好, 首先說明 x = df 與 x = df.copy() 之間的差異, 每次定義變數時會將變數的內容儲存至記憶體中(假設該記憶體編號為 A1), 因每個記憶體可以被指向一個或多個變數名稱, 所以當 x = df 時,表示定義了新的變數 x, 該變數的內容會是指向與 df 相同的記憶體 A1, 若指定 x 改變某些數值時,更改的內容是在記憶體 A1 中的內容, 因此 df 也因為是指向記憶體 A1 而會跟著改變。 如想定義出兩個截然不同的資料, 表示該兩資料儲存於兩不同記憶體, 假設 df 儲存在記憶體 A1 中, 若想要重複產生一份一模一樣的資料, 則使用 df.copy() 時表示將 A1 的內容複製到另一個記憶體(假設該編號為 A2 )中, 因此 x = df.copy() 就有了兩個截然不同的資料, x 指向記憶體 A2、df 指向記憶體 A1, 那更改 x 時就不會影響到 df 的內容。 參考資料: [[Python] 使用 copy 模組複製物件](https://clay-atlas.com/blog/2020/12/15/python-cn-copy-deepcopy-list/)