Очистка данных в основах 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) 

выход:

Скриншот 27 сентября 2019 г., 15.46.34.png

Проверка пропущенных значений

Первое, что вам нужно при очистке данных, — это проверить наличие пропущенных значений. Это можно легко сделать, используя функцию isnull в сочетании с функцией ‘sum’.

df.isnull().sum()

выход:

Скриншот 27.09.2019 в 15.48.50.png

Из вывода мы видим, что у нас есть 2 нулевых значения. Один в столбце «Рост (м)» и один в столбце «Оценка теста».

Работа с пропущенными значениями

Теперь, когда мы выяснили, где находятся пропущенные значения, мы можем с ними разобраться. Есть несколько способов справиться с пропущенными значениями. Конечно, вы можете просто оставить пропущенные значения в покое, но это не лучший вариант, так что давайте посмотрим, как мы можем с ними справиться.

  • Первое, что вы можете сделать, это заполнить пропущенные значения словом или символом. Примером этого может быть замена отсутствующих данных на «*».

    Если вы хотите заполнить все значения в кадре данных, мы используем функцию «fillna».

df = df.fillna('*') 

выход:

Скриншот 27 сентября 2019 г., 15.53.24.png

Если вы хотите заполнить значения для определенного столбца, например столбца «Оценка теста», мы добавляем имя столбца в наш код, как показано ниже:

df[‘Test Score’] = df[‘Test Score’].fillna('*') 

выход:

Скриншот 27 сентября 2019 г., 15.58.44.png

  • Второе, что вы делаете, это заменяете его средним значением. Это может включать в себя среднее значение, если это число, или режим, если это слово.
df[‘Test Score’] = df[‘Test Score'].fillna(df['Test Score'].mean())

выход:
Скриншот 27.09.2019 в 16.01.41.png

Мы также можем использовать функцию интерполяции, чтобы заполнить пропущенные значения для числа. Это займет среднее число выше и ниже отсутствующего значения в кадре данных.

df['Test Score'] = df['Test Score'].fillna(df['Test Score'].interpolate())

выход:

Скриншот 27.09.2019 в 16.03.24.png

Это очень мощная функция, так как она имеет множество методов для заполнения данных и многие другие функции, которые мы не будем рассматривать в этом посте.

  • Последнее, что вы можете сделать, это удалить недостающие строки данных. Мы можем удалить все строки с отсутствующими данными, как показано ниже.
df= df.dropna() 

выход:

Скриншот 27.09.2019 в 16.04.58.png

Или мы можем удалить строки с отсутствующими данными в определенном столбце, например столбце высоты.

df[‘Height(m)']= df[‘Height(m)’].dropna() 

выход:

Скриншот 27.09.2019 в 16.06.42.png

Работа с нестандартными отсутствующими значениями

Иногда пропущенные значения в наших данных могут не появляться, когда мы проверяем пропущенные значения. При проверке отсутствующих значений функция 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) 

выход:

Скриншот 27.09.2019 в 16.10.25.png

Как мы видим, у нас есть 3 пропущенных значения. Два в столбце «Рост (м)» и один в столбце «Оценка теста». Но когда мы запускаем функцию df.isnull(), мы видим, что принимается только одно из нулевых значений.

df.isnull() 

выход:

Скриншот 27.09.2019 в 16.11.55.png

Мы можем справиться с этим, сначала преобразовав его в «NaN» с помощью функции замены, а затем обработав отсутствующие значения, как мы хотим.

df = df.replace(['-','na'], np.nan)

выход:

Скриншот 27.09.2019 в 16.15.20.png

Данные в неправильном формате

Иногда нам, возможно, придется иметь дело с данными в неправильном формате. Например, в столбце «Оценка теста» у нас может быть слово вместо числа.

# 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) 

выход:

Скриншот 27.09.2019, 17.52.35.png

Как видите, в столбце результатов теста есть запись, не являющаяся числом. С этим можно справиться так же, как и с нестандартными отсутствующими значениями. Мы используем функцию замены, чтобы изменить его на отсутствующее значение или «NaN». Затем мы можем работать с отсутствующими значениями, как захотим.

Вы также можете создать цикл для просмотра всех записей в столбце «Оценка теста», чтобы превратить каждое нечисловое значение в нулевое значение. Но для простоты я решил не включать это.

Вывод

В этом посте я рассказал об основах очистки данных в Python, и это должно помочь вам начать очистку данных в Python с помощью библиотеки pandas. В будущем я сделаю более подробный пост, посвященный более продвинутым методам очистки данных. Надеюсь, вам понравилось это читать, и обязательно следите за моими будущими публикациями.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *