Python'da Eksik Verilerle Çalışma
Suraj Donthi
Deep Learning & Computer Vision Consultant
| Renk | Color_Red | Color_Green | Color_Blue |
|---|---|---|---|
| Kırmızı | 1 | 0 | 0 |
| Yeşil | 0 | 1 | 0 |
| Mavi | 0 | 0 | 1 |
| Kırmızı | 1 | 0 | 0 |
| Mavi | 0 | 0 | 1 |
| Mavi | 0 | 0 | 1 |
| Renk | Değer |
|---|---|
| Kırmızı | 0 |
| Yeşil | 1 |
| Mavi | 2 |
| Kırmızı | 0 |
| Mavi | 2 |
| Mavi | 2 |
users = pd.read_csv('userprofile.csv')
users.head()
smoker drink_level dress_preference ambience hijos activity budget
0 False abstemious informal family independent student medium
1 False abstemious informal family independent student low
2 False social drinker formal family independent student low
3 False abstemious informal family independent professional medium
4 False abstemious no preference family independent student medium
from sklearn.preprocessing import OrdinalEncoder# Sıralı Kodlayıcı oluşturun ambience_ord_enc = OrdinalEncoder() # ambience sütunundaki boş olmayan değerleri seçin ambience = users['ambience'] ambience_not_null = ambience[ambience.notnull()] reshaped_vals = ambience_not_null.values.reshape(-1, 1)# ambience'in boş olmayan değerlerini kodlayın encoded_vals = ambience_ord_enc.fit_transform(reshaped_vals)# ambience sütununu sıralı değerlerle değiştirin users.loc[ambience.notnull(), 'ambience'] = np.squeeze(encoded_vals)
# Sıralı kodlayıcılar için sözlük oluşturun
ordinal_enc_dict = {}
# Kodlanacak sütunlarda döngü
for col_name in users:
# Sütun için sıralı kodlayıcı oluşturun
ordinal_enc_dict[col_name] = OrdinalEncoder()
col = users[col_name]
# Sütundaki boş olmayan değerleri seçin
col_not_null = col[col.notnull()]
reshaped_vals = col_not_null.values.reshape(-1, 1)
# Sütunun boş olmayan değerlerini kodlayın
encoded_vals = ordinal_enc_dict[col_name].fit_transform(reshaped_vals)
# Sütundaki değerleri sıralı değerlerle değiştirin
users.loc[col.notnull(), col_name] = np.squeeze(encoded_vals)
users_KNN_imputed = users.copy(deep=True)# KNN imputeri oluşturun KNN_imputer = KNN()users_KNN_imputed.iloc[:, :] = np.round(KNN_imputer.fit_transform(users))for col_name in users_KNN_imputed: # DataFrame'e kaydederken hatayı önlemek için # değerleri 2 boyuta dönüştürün reshaped = users_KNN_imputed[col_name].values.reshape(-1, 1) users_KNN_imputed[col_name] = \ ordinal_enc_dict[col_name].inverse_transform(reshaped)
Kategorik değerleri imput etme adımları
Python'da Eksik Verilerle Çalışma