Рубрики
Без рубрики

Очистка Данных В Основах Python С Использованием Панд

Этот пост даст вам базовое введение в очистку данных в Python с помощью библиотеки pandas.

Автор оригинала: Ilyaas Lunat.

При работе с данными есть один навык, которым вы должны овладеть, и это очистка данных. Очень редко у вас будут чистые данные для работы. Итак, вам придется научиться очищать данные.

В этом посте я расскажу вам, как справиться с очисткой данных в 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 ” с помощью функции replace, а затем разобраться с пропущенными значениями так, как мы хотим.

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) 

выход:

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

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

Вывод

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