開始使用免費開始

對 DataFrame 進行序位編碼

類別型特徵可以用兩種技巧來編碼:one-hot 編碼與序位編碼。one-hot 編碼會將每個類別轉成一個欄位,且每列在其所屬的類別欄位為 1,其餘為 0。序位編碼則是將各類別對應到從 0 開始、直到類別數量的整數值。

在本練習中,你會遍歷 users DataFrame 中的所有欄位,將類別做序位編碼。你也會為每個欄位在字典 ordinal_enc_dict 中儲存一個編碼器,之後即可把已編碼的欄位轉回原始類別。

本練習屬於課程

在 Python 中處理遺漏值

檢視課程

練習說明

  • 定義一個空字典 ordinal_enc_dict
  • 為每個欄位建立一個 Ordinal Encoder 物件。
  • 選取 users 中該欄位的非空值並進行編碼。
  • 將編碼後的數值指派回 users 中各欄位(col_name)的非空位置。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Create an empty dictionary ordinal_enc_dict
ordinal_enc_dict = ___

for col_name in users:
    # Create Ordinal encoder for col
    ordinal_enc_dict[col_name] = ___
    col = users[col_name]
    
    # Select non-null values of col
    col_not_null = ___
    reshaped_vals = col_not_null.values.reshape(-1, 1)
    encoded_vals = ordinal_enc_dict[col_name].fit_transform(reshaped_vals)
    
    # Select the non-null values for the column col_name in users and store the encoded values
    users.loc[___, ___] = np.squeeze(encoded_vals)
編輯並執行程式碼