Почему ваш проект данных потерпит неудачу, если вы не выполните несколько простых шагов предварительной обработки.

Эта статья является частью серии из трех статей, посвященных введению в науку о данных.

Для меня Data Science - это искусство принимать лучшие решения, используя большой объем данных. Это требует как сильного делового чутья (что я хочу доказать? После того, как соответствующие идеи найдены, какие действия следует предпринять?), Так и технического аспекта (где я могу получить свои данные, как получить из них дополнительную информацию?).

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

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

Сначала давайте получим данные!

Франция беспрепятственно предоставляет доступ ко всем сделкам с недвижимостью за последние 5 лет. Данные доступны на их официальном сайте и могут быть скачаны за 2014–2019 годы.

Что же мы имеем здесь?

Если вы загрузите все, у вас должно получиться 6 файлов, давайте посмотрим, что внутри!

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

Как получить более глубокое представление о ваших данных

Отчет о профилировании - это простой способ изучить набор данных, проверить наличие бесполезных столбцов, недостающих данных и т. Д. Мы можем составить первоначальное представление о том, какую обработку данных нам необходимо выполнить.

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

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

Время для более серьезной очистки данных

Из предыдущего отчета о профилировании мы могли видеть, что необработанные транзакции увеличиваются с 0,01 евро до 3,3 миллиарда евро, что является довольно высоким показателем. С другой стороны, 5-й и 95-й квантили стоят соответственно 2000 евро и 831 807 евро до любой фильтрации. Это все еще довольно широкий диапазон, но кажется хорошим началом. Давайте также сначала удалим недвижимость, которая не является ни домами («Maison»), ни квартирами, и отфильтруем данные по цене.

Разверните логику

Мы можем применить этот вид фильтрации для всех столбцов, которые включают экстремальные значения, такие как nombre_pieces_principale (количество комнат), surface_reelle_bati (размер собственности). Хорошая практика для этого вида фильтрации - помнить, чего вы хотите достичь, чтобы знать, какие данные вы хотите отбросить. Я знаю, что в некоторых отелях может быть более 8 комнат, но вряд ли они меня заинтересуют. Чтобы лучше понять, какой процентиль вы хотите сохранить, вы также можете просто построить гистограмму своих данных и приблизительно определить порог.

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

А теперь давайте рассмотрим то, что нас интересует: цену за квадратный метр.

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

Что имеет смысл, мы знаем, что в Париже цена квадратного метра может вырасти (выше 10 тысяч евро), поэтому конечный результат кажется достаточно хорошим с точки зрения очистки данных!

Подождите, мы только что выбросили 71% наших данных в корзину ?!

Ну, да! С начальных 17 397 275 строк мы опустились до 5 132 494; мы сократили наш набор данных на 71%, отфильтровав дубликаты, нерелевантные данные, выбросы… Это может показаться чрезмерным, в зависимости от вашего варианта использования и объема доступных данных вы можете выбрать менее агрессивную стратегию очистки данных. Например, мы отфильтровали все строки, в которых нет данных о площади: но мы могли бы провести некоторый расширенный анализ данных, чтобы вывести недостающую площадь поверхности по количеству комнат в собственности или даже по средней площади района. на однотипную недвижимость!

Надеюсь, вам понравилось путешествие по предварительной обработке данных, следите за обновлениями второй части: как использовать машинное обучение, чтобы прогнозировать будущую цену за квадратный метр!

Полную записную книжку для этой статьи можно найти здесь. Используемые инструменты: Python (Pandas, Matplotlib), Jupyter Notebook, data.gouv.fr. . Спасибо Самиру за вычитку.

Если вам это показалось интересным, вам понравятся следующие статьи этой серии!

Вы увлечены наукой о данных? Не стесняйтесь добавлять меня в LinkedIn.