Eliminacja wartości pustych występujących w danych

Istnieje kilka strategii eliminacji wartości pustych występujących w danych. Popatrzmy na przykład:

Country Age Salary
France 44.0 72000.0
Spain 27.0 48000.0
Germany 30.0 54000.0
Spain 38.0 61000.0
Germany 40.0
France 35.0 58000.0
Spain 52000.0

Jedna ze strategii to usunięcie wierszy w których występują wartości puste. Strategia dosyć słaba, bo może doprowadzić do usunięcia danych, które mogą mieć znaczący wpływ na oczekiwany.

Druga strategia to zastąpienie brakujących wartości wartościami niepustymi. Tylko skąd te niepuste wartości wziąć. Można spróbować wywnioskować je na podstawie wartości danej cechy w pozostałych wierszach naszych danych. Spotykane najczęściej sposoby, to:

  • obliczenie średniej artymetycznej niepustych wartości danej cechy, lub:
  • wykorzystanie mediany
  • wartości minimalnej lub maksymalnej
Przykład w Python

Eliminację wartości pustych można przeprowadzić wykorzystując standardowe funkcje dostępne w bibliotece pandas lub numPy, _ale zdecydowanie lepiej wykorzystać funkcje dostepne w pakiecie _scikit-learn. W pakiecie preprocessing _znajduje się definicja klasy _Inputer, która pozwala na bardzo proste zastosowanie strategii opisanych powyżej:

from sklearn.preprocessing import Imputer

imputer = Imputer(missing_values = 'NaN', strategy = 'mean', axis = 0)
imputer = imputer.fit(X[:, 1:3])
X[:, 1:3] = imputer.transform(X[:, 1:3])

parametr _strategy _przyjmuje wartości:

  • mean
  • median
  • most_frequent

parametr _axis _może być równy:

  • 0 - i wówczas wartości puste zamieniane są w kolumnach przekazanego obiektu
  • 1 - i wówczas wartości puste zamieniane są w wierszach
Przykład w R
dataset$Age = ifelse(is.na(dataset$Age),
                     ave(dataset$Age, FUN = function(x) mean(x, na.rm = TRUE)),
                     dataset$Age)

dataset$Salary = ifelse(is.na(dataset$Salary),
                        ave(dataset$Salary , FUN = function(x) mean(x, na.rm = TRUE)),
                        dataset$Salary )

results matching ""

    No results matching ""