Очистка данных в основах Python с использованием Pandas
При работе с данными вам нужно освоить один навык — очистку данных. Очень редко у вас будут чистые данные для работы. Итак, вам придется научиться очищать данные.
В этом посте я расскажу вам, как справиться с очисткой данных в Python с помощью библиотеки Pandas. Прочитав этот пост, вы будете оснащены необходимыми для этого инструментами.
Чтобы помочь с объяснениями, я создам пример фрейма данных, который поможет нам понять.
# import libraries
import pandas as pd
import numpy as np
# Create dictionary
dictionary = {'Name’:[‘Alex’, ‘Mike’, ‘John’, ‘Dave’, ’Joey’],
‘Height(m)’: [1.75, 1.65, 1.73, np.nan, 1.82],
'Test Score':[70, np.nan, 84, 62, 73]}
# Convert dictionary to dataframe
df = pd.DataFrame(dictionary)
выход:
Проверка пропущенных значений
Первое, что вам нужно при очистке данных, — это проверить наличие пропущенных значений. Это можно легко сделать, используя функцию isnull в сочетании с функцией ‘sum’.
df.isnull().sum()
выход:
Из вывода мы видим, что у нас есть 2 нулевых значения. Один в столбце «Рост (м)» и один в столбце «Оценка теста».
Работа с пропущенными значениями
Теперь, когда мы выяснили, где находятся пропущенные значения, мы можем с ними разобраться. Есть несколько способов справиться с пропущенными значениями. Конечно, вы можете просто оставить пропущенные значения в покое, но это не лучший вариант, так что давайте посмотрим, как мы можем с ними справиться.
Первое, что вы можете сделать, это заполнить пропущенные значения словом или символом. Примером этого может быть замена отсутствующих данных на «*».
Если вы хотите заполнить все значения в кадре данных, мы используем функцию «fillna».
df = df.fillna('*')
выход:
Если вы хотите заполнить значения для определенного столбца, например столбца «Оценка теста», мы добавляем имя столбца в наш код, как показано ниже:
df[‘Test Score’] = df[‘Test Score’].fillna('*')
выход:
- Второе, что вы делаете, это заменяете его средним значением. Это может включать в себя среднее значение, если это число, или режим, если это слово.
df[‘Test Score’] = df[‘Test Score'].fillna(df['Test Score'].mean())
выход:
Мы также можем использовать функцию интерполяции, чтобы заполнить пропущенные значения для числа. Это займет среднее число выше и ниже отсутствующего значения в кадре данных.
df['Test Score'] = df['Test Score'].fillna(df['Test Score'].interpolate())
выход:
Это очень мощная функция, так как она имеет множество методов для заполнения данных и многие другие функции, которые мы не будем рассматривать в этом посте.
- Последнее, что вы можете сделать, это удалить недостающие строки данных. Мы можем удалить все строки с отсутствующими данными, как показано ниже.
df= df.dropna()
выход:
Или мы можем удалить строки с отсутствующими данными в определенном столбце, например столбце высоты.
df[‘Height(m)']= df[‘Height(m)’].dropna()
выход:
Работа с нестандартными отсутствующими значениями
Иногда пропущенные значения в наших данных могут не появляться, когда мы проверяем пропущенные значения. При проверке отсутствующих значений функция isnull() выбирает только «Nan», а не другие типы отсутствующих значений, такие как тире (‘-‘) или даже «na». Я создам новый фрейм данных, чтобы показать это.
# dictionary of lists
dictionary = {'Name’:[‘Alex’, ‘Mike’, ‘John’, ‘Dave’, ’Joey’],
‘Height(m)’: [1.75, 1.65, ‘-‘, ‘na’, 1.82],
'Test Score':[70, np.nan, 8, 62, 73]}
# creating a dataframe from list
df = pd.DataFrame(dictionary)
выход:
Как мы видим, у нас есть 3 пропущенных значения. Два в столбце «Рост (м)» и один в столбце «Оценка теста». Но когда мы запускаем функцию df.isnull(), мы видим, что принимается только одно из нулевых значений.
df.isnull()
выход:
Мы можем справиться с этим, сначала преобразовав его в «NaN» с помощью функции замены, а затем обработав отсутствующие значения, как мы хотим.
df = df.replace(['-','na'], np.nan)
выход:
Данные в неправильном формате
Иногда нам, возможно, придется иметь дело с данными в неправильном формате. Например, в столбце «Оценка теста» у нас может быть слово вместо числа.
# dictionary of lists
dictionary = {'Name’:[‘Alex’, ‘Mike’, ‘John’, ‘Dave’, ’Joey’],
‘Height(m)’: [1.75, 1.65, 1.54, 1.87, 1.82],
'Test Score':[70, ‘yes’, 8, 62, 73]}
# creating a dataframe from list
df = pd.DataFrame(dictionary)
выход:
Как видите, в столбце результатов теста есть запись, не являющаяся числом. С этим можно справиться так же, как и с нестандартными отсутствующими значениями. Мы используем функцию замены, чтобы изменить его на отсутствующее значение или «NaN». Затем мы можем работать с отсутствующими значениями, как захотим.
Вы также можете создать цикл для просмотра всех записей в столбце «Оценка теста», чтобы превратить каждое нечисловое значение в нулевое значение. Но для простоты я решил не включать это.
Вывод
В этом посте я рассказал об основах очистки данных в Python, и это должно помочь вам начать очистку данных в Python с помощью библиотеки pandas. В будущем я сделаю более подробный пост, посвященный более продвинутым методам очистки данных. Надеюсь, вам понравилось это читать, и обязательно следите за моими будущими публикациями.