Обробка Відсутніх Значень
Лише обмежена кількість моделей машинного навчання може працювати з відсутніми значеннями, тому необхідно перевірити набір даних, щоб переконатися, що не залишилося пропусків. Якщо відсутні значення присутні, їх можна обробити двома способами:
- Видалення рядків, які містять відсутні значення;
- Заповнення порожніх клітинок замінниками, процес, який називається імпутацією.
Виявлення відсутніх значень
Щоб отримати загальну інформацію про набір даних і перевірити наявність відсутніх значень, можна скористатися методом .info()
об'єкта DataFrame.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df.info())
У наборі даних міститься 344 записи, але стовпці 'culmen_depth_mm'
, 'flipper_length_mm'
, 'body_mass_g'
та 'sex'
мають менше ніж 344 ненульових значень, що свідчить про наявність пропущених даних.
Null — це інша назва пропущених значень.
Щоб визначити кількість пропущених значень у кожному стовпці, застосуйте метод .isna()
, а потім використайте .sum()
.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df.isna().sum())
Рядки, що містять пропущені значення, можна відобразити за допомогою:
df[df.isna().any(axis=1)]
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df[df.isna().any(axis=1)])
Видалення рядків
Перший і останній рядки містять лише цільову змінну ('species'
) та значення 'island'
, що надає занадто мало інформації для подальшого використання. Ці рядки можна видалити, залишивши лише ті, у яких менше двох значень NaN
, та перепризначивши їх у df
.
123456import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') df = df[df.isna().sum(axis=1) < 2] print(df.head(8))
На відміну від цього, решта рядків містять корисну інформацію, а значення NaN
зустрічаються лише у стовпці 'sex'
. Замість видалення цих рядків, відсутні значення можна імпутувати. Поширеним підходом є використання трансформера SimpleImputer
, який буде розглянуто у наступному розділі.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.13
Обробка Відсутніх Значень
Свайпніть щоб показати меню
Лише обмежена кількість моделей машинного навчання може працювати з відсутніми значеннями, тому необхідно перевірити набір даних, щоб переконатися, що не залишилося пропусків. Якщо відсутні значення присутні, їх можна обробити двома способами:
- Видалення рядків, які містять відсутні значення;
- Заповнення порожніх клітинок замінниками, процес, який називається імпутацією.
Виявлення відсутніх значень
Щоб отримати загальну інформацію про набір даних і перевірити наявність відсутніх значень, можна скористатися методом .info()
об'єкта DataFrame.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df.info())
У наборі даних міститься 344 записи, але стовпці 'culmen_depth_mm'
, 'flipper_length_mm'
, 'body_mass_g'
та 'sex'
мають менше ніж 344 ненульових значень, що свідчить про наявність пропущених даних.
Null — це інша назва пропущених значень.
Щоб визначити кількість пропущених значень у кожному стовпці, застосуйте метод .isna()
, а потім використайте .sum()
.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df.isna().sum())
Рядки, що містять пропущені значення, можна відобразити за допомогою:
df[df.isna().any(axis=1)]
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') print(df[df.isna().any(axis=1)])
Видалення рядків
Перший і останній рядки містять лише цільову змінну ('species'
) та значення 'island'
, що надає занадто мало інформації для подальшого використання. Ці рядки можна видалити, залишивши лише ті, у яких менше двох значень NaN
, та перепризначивши їх у df
.
123456import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins.csv') df = df[df.isna().sum(axis=1) < 2] print(df.head(8))
На відміну від цього, решта рядків містять корисну інформацію, а значення NaN
зустрічаються лише у стовпці 'sex'
. Замість видалення цих рядків, відсутні значення можна імпутувати. Поширеним підходом є використання трансформера SimpleImputer
, який буде розглянуто у наступному розділі.
Дякуємо за ваш відгук!