Очистка и подготовка данных - самый важный первый шаг в любом проекте ИИ. Как показывают данные, большинство специалистов по обработке данных тратят большую часть своего времени до 70% на очистку данных. В этом сообщении блога я расскажу вам о начальных этапах очистки и предварительной обработки данных в Python.

Наборы данных связаны внизу

Импорт библиотек

Первый шаг, который нужно сделать, - это импортировать необходимые библиотеки. Доступно множество библиотек, но самыми популярными и важными библиотеками Python для очистки и анализа данных являются Numpy и Pandas.

import pandas as pd
import numpy as np

Загрузка данных

После того, как вы загрузили свой набор данных и назвали его как файл .csv, вам необходимо загрузить его в pandas DataFrame, чтобы изучить его и выполнить некоторые базовые задачи по очистке, удалив ненужную информацию, которая замедлит обработку данных.

data = pd.read_csv('../input/google-play-store-apps/googleplaystore.csv')

Изучите данные и составьте контрольный список

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

Это контрольный список, который я создал после анализа данных Google Playstore.

  1. Обработайте пропущенные значения и данные "Зависит от устройства".
  2. Удаление символов из Installs и создание числовых.
  3. Удалите из размера "M" (мегабайт) и сделайте его числовым.
  4. Удалите из размера «k» (килобайт), сделайте его числовым, а затем разделите на 1000.
  5. Преобразуйте обзоры в числовые.
  6. Удалите символ валюты из цены, измените его на числовой
  7. Преобразование даты последнего обновления в формат даты
  8. Округлить текущий номер версии до 1 десятичного знака

Чтобы очистить набор данных, вам необходимо обработать недостающие значения и категориальные особенности, поскольку математика, лежащая в основе большинства моделей машинного обучения, предполагает, что данные являются числовыми и не содержат пропущенных значений. Более того, библиотека scikit-learn возвращает ошибку, если вы пытаетесь обучить модель, такую ​​как линейная регрессия и логистическая регрессия, с использованием данных, содержащих отсутствующие или нечисловые значения.

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

Отсутствие данных, пожалуй, самая распространенная черта нечистых данных. Эти значения обычно имеют форму NaN или None. Существует несколько причин отсутствия значений: иногда значения отсутствуют, потому что они не существуют, или из-за неправильного сбора данных.

Просматривая все столбцы, мы обнаруживаем, что у нас есть 3 столбца со значениями NA [размер, рейтинг и версия Android].

У большинства приложений без рейтинга очень мало установок, что имеет смысл. Если у вас мало установок, люди еще не проверяли это. В процессе очистки данных я увидел «Зависит от устройства» в разделе «Размер». Всего было 1695 приложений с «Зависит от устройства», которые мы преобразовали в NA. Итак, это объясняет АН в этой колонке.

Удаление символов из установочных файлов и их числовое значение

  • Сначала мы удаляем символ «+» с конца, используя метод разделения Python.
data['installs_cleaned']=data['Installs'].apply(lambda 
x:x.split('+')[0])
  • Затем мы видим, что между каждым числом есть ",". Нам нужно удалить этот порядок, чтобы сделать его числовым. Мы делаем это с помощью метода replace лямбда-функции.
data['installs_cleaned']=data['installs_cleaned'].apply(lambda x:x.replace(',','')
  • После просмотра данных я увидел ячейку с данными «Бесплатно». Удалив это,
data = data.drop(data[data.installs_cleaned == 'Free'].index)
  • Наконец, изменение типа данных на целое число с использованием pandas, встроенного в метод to_numeric
data["installs_cleaned"] = pd.to_numeric(data["installs_cleaned"])

Размер разбора

  • Сначала удалим символ «M» с конца, используя лямбда-функцию, заменив его на «‘.
data['size_cleaned']=data['Size'].apply(lambda x: x.replace('M',''))
  • Затем удаление строк, имеющих размер =, зависит от устройства
data= data.drop(data[data.size_cleaned =='Varies with device'].index)
  • Для данных в килобайтах сначала нужно удалить «k», затем преобразовать их в число с плавающей запятой, а затем разделить на 1000, чтобы преобразовать их в формат mb.
ending = ['k']
data['size_kb']=data['size_cleaned'].map(lambda x: x[-1:] in ending)
data['size_cleaned']=data['size_cleaned'].apply(lambda x: x.replace('k',''))#Removes k
data['size_cleaned']=pd.to_numeric(data['size_cleaned'])#Conversion to numeric
data['size_cleaned']=data.apply(lambda x:x['size_cleaned']/1000 if x['size_kb']==1 else x.size_cleaned,axis=1)#Dividing by 1000

Преобразуйте обзоры в числовые

data.Reviews=pd.to_numeric(data.Reviews)

Цена парсинга

#Removing '$'
data['Price'] = data['Price'].apply(lambda x:x.replace('$',''))
#Converting to numeric                                                         data['Price'] = pd.to_numeric(data['Price'])

Формирование даты

Конкретный тип несогласованности данных - это несовместимый формат дат, например дд / мм / гг и мм / дд / гг в одних и тех же столбцах. Ваши значения даты могут быть не в правильном типе данных, и это не позволит вам эффективно выполнять манипуляции и получать из них представление. На этот раз вы можете использовать пакет datetime, чтобы исправить тип даты.

data['Last Updated'] =  pd.to_datetime(data['Last Updated'])

Удаление нулевых значений

Нулевые значения в рейтинге удаляются с помощью isnull ().

data = data.drop(data[data.Rating.isnull()].index)

Анализ текущей версии

  • Сначала мы удаляем нулевые значения в текущей версии
data = data.drop(data[data['Current Ver'].isnull()].index)
  • На следующем этапе мы отбрасываем строки со значением «Зависит от данных».
data = data.drop(data[data['Current Ver']=='Varies with device'].index)
  • На последнем этапе мы округляем текущую версию до 1 десятичного знака.
data['Current Ver'] = data['Current Ver'].apply(lambda x:str(x).split('.',1)[0])

Удаление повторяющихся строк

data.drop_duplicates(keep=False, inplace=True)

Сохранить в CSV

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

Как и раньше, вы можете сохранить DataFrame в формате .csv с помощью функции pandas to_csv().

data.to_csv('Playstore_data.csv')

Вывод

Это самые простые шаги, необходимые для работы с большим набором данных, очистки и подготовки данных для любого проекта Data Science. Существуют и другие методы очистки данных, которые могут быть лучше и эффективнее для ваших целей, чем мой метод. Более качественные и чистые данные превосходят лучшие алгоритмы. Наконец, после долгой обработки данных, мы можем начать делать некоторые выводы из данных. Время для исследовательского анализа данных! :)

Вы можете найти необработанные нечистые данные здесь (Источник: Kaggle)

И чистые данные здесь