Bu yazımızda veri setimizdeki eksik verileri nasıl bir strateji ile doldurmayı öğreneceğiz. Bunun için sklearn kütüphanesini kullanacağız.

eksikveriler.csv dosyasını okuttuğumuz zaman boş olan yerler NaN olarak pythonda gözükmektedir.

[[130. 30. 10.]
[125. 36. 11.]
[135. 34. 10.]
[133. 30. 9.]
[129. 38. 12.]
[180. 90. 30.]
[190. 80. 25.]
[175. 90. 35.]
[177. 60. 22.]
[185. 105. 33.]
[165. 55. 27.]
[155. 50. 44.]
[160. 58. nan]
[162. 59. 41.]
[167. 62. 55.]
[174. 70. 47.]
[193. 90. nan]
[187. 80. 27.]
[183. 88. 28.]
[159. 40. 29.]
[164. 66. 32.]
[166. 56. 42.]]

Bu verileri manuel olarak doldurabiliriz ama veri boyutu çok yüksek olduğunda bir strateji belirleyip otomatik yapmak en kolayıdır. Bunun için sklearn kütüphanesini kullanacağız.

Yükelemek için terminale yazın: pip install sklearn

Kod kısmı aşağıdaki gibidir.

# kütüphaneleri ekle
import pandas as pd         # verileri okumak için kullanılır
import numpy as np          # nümerik işlemler yapmak için kullanılır
from sklearn.impute import SimpleImputer

# verileri oku
veriler = pd.read_csv('eksikveriler.csv')

# eksik değerler için ortalama verisini yaz a
imp = SimpleImputer(missing_values=np.nan, strategy='mean')

# sayısal olan verileri sayısal olmayan verilerden ayır
Yas = veriler.iloc[:,1:4].values
print(Yas)

# stratejiyi uygula
imp.fit(Yas[:,1:4])

# alınan ortalama değerleri nan yerlerine yaz
Yas[:,1:4] = imp.transform(Yas[:,1:4])
print(Yas)

İlk önce sadece sayısal verileri çekiyor. Sonra sklearn ile stratejimizi belirliyoruz. Bu strateji Nan değerleri yerine, sutundaki değerlerin ortalaması alınıp yazılması olarak ayarlıyoruz. Stratejimizi fit komutu ile uygulayıp transform komutu ile yüklemeyi yapıyoruz.

Sonuç:

[[130.    30.    10.  ]
 [125.    36.    11.  ]
 [135.    34.    10.  ]
 [133.    30.     9.  ]
 [129.    38.    12.  ]
 [180.    90.    30.  ]
 [190.    80.    25.  ]
 [175.    90.    35.  ]
 [177.    60.    22.  ]
 [185.   105.    33.  ]
 [165.    55.    27.  ]
 [155.    50.    44.  ]
 [160.    58.    28.45]
 [162.    59.    41.  ]
 [167.    62.    55.  ]
 [174.    70.    47.  ]
 [193.    90.    28.45]
 [187.    80.    27.  ]
 [183.    88.    28.  ]
 [159.    40.    29.  ]
 [164.    66.    32.  ]
 [166.    56.    42.  ]]

Kaynak: https://scikit-learn.org/stable/modules/generated/sklearn.impute.SimpleImputer.html


0 yorum

Bir cevap yazın

Avatar placeholder

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.