📊 Проект: Исследовательский анализ данных
Исследование объявлений о продаже квартир
🧭 Что такое проект
Поздравляем! 🎉
Вы успешно прошли курс в тренажёре. Теперь настало время применить полученные знания на практике и решить реальный аналитический кейс.
Выполнять работу вы будете самостоятельно.
Как закончите работу над проектом, отправьте его на проверку ревьюеру. В течение суток вы получите комментарии. Их нужно учесть: доработать проект и вернуть ревьюеру обновлённый вариант.
Скорее всего, вы снова получите комментарии по кейсу. Это нормально — доработка может проходить в несколько этапов.
Проект завершён, когда засчитаны все исправления.
📌 Описание проекта
В вашем распоряжении данные сервиса Яндекс Недвижимость — архив объявлений о продаже квартир в Санкт-Петербурге и соседних населённых пунктах за несколько лет.
Вам нужно научиться определять рыночную стоимость объектов недвижимости. Для этого проведите исследовательский анализ данных и установите параметры, влияющие на цену объектов. Это позволит построить автоматизированную систему: она отследит аномалии и мошенническую деятельность.
По каждой квартире на продажу доступны два вида данных: - первые описаны пользователем; - вторые получены автоматически на основе картографических данных (например, расстояние до центра, аэропорта и других объектов; количество парков и водоёмов также заполняется без участия пользователя).
📋 Инструкция по выполнению проекта
Шаг 1. Откройте файл с данными и изучите общую информацию
Путь к файлу: /datasets/real_estate_data.csv
Скачать датасет:
- Загрузите данные из csv-файла в датафрейм с помощью библиотеки pandas.
- Изучите общую информацию о полученном датафрейме.
- Постройте гистограмму для всех числовых столбцов таблицы на одном графике. Например, для датафрейма
dataможно построить такую гистограмму командойdata.hist(figsize=(15, 20)). Напомним, что параметрfigsizeзадаёт размер графика.
Шаг 2. Выполните предобработку данных
1. Найдите и изучите пропущенные значения в столбцах:
- Определите, в каких столбцах есть пропуски.
- Заполните пропущенные значения там, где это возможно. Например, если продавец не указал число балконов, то, скорее всего, в его квартире их нет. Такие пропуски можно заменить на число 0. Если логичную замену предложить невозможно, то оставьте пропуски. Пропущенные значения — тоже важный сигнал, который нужно учитывать.
2. Рассмотрите типы данных в каждом столбце:
- Найдите столбцы, в которых нужно изменить тип данных.
- Преобразуйте тип данных в выбранных столбцах.
- В ячейке с типом markdown поясните, почему нужно изменить тип данных.
3. Изучите уникальные значения в столбце с названиями и устраните неявные дубликаты:
Например, «поселок Рябово» и «поселок городского типа Рябово», «поселок Тельмана» и «посёлок Тельмана» — это обозначения одних и тех же населённых пунктов. Вы можете заменить названия в существующем столбце или создать новый с названиями без дубликатов.
Шаг 3. Добавьте в таблицу новые столбцы со следующими параметрами:
- цена одного квадратного метра (нужно поделить стоимость объекта на его общую площадь, а затем округлить до двух знаков после запятой);
- день недели публикации объявления (0 — понедельник, 1 — вторник и так далее);
- месяц публикации объявления;
- год публикации объявления;
- тип этажа квартиры (значения — «первый», «последний», «другой»);
- расстояние до центра города в километрах (переведите из м в км и округлите до ближайших целых значений).
Шаг 4. Проведите исследовательский анализ данных
1. Изучите перечисленные ниже параметры объектов и постройте отдельные гистограммы для каждого из этих параметров.
В некоторых параметрах встречаются редкие и выбивающиеся значения. При построении гистограмм удалите их. Например, в столбце ceiling_height может быть указана высота потолков 25 м и 32 м. Логично предположить, что на самом деле это вещественные значения: 2.5 м и 3.2 м. Попробуйте обработать аномалии в этом и других столбцах, если они есть. Если природа аномалии понятна и данные действительно искажены, то восстановите корректное значение. В противном случае удалите редкие и выбивающиеся значения.
Список параметров:
- общая площадь;
- жилая площадь;
- площадь кухни;
- цена объекта;
- количество комнат;
- высота потолков;
- тип этажа квартиры («первый», «последний», «другой»);
- общее количество этажей в доме;
- расстояние до центра города в метрах;
- расстояние до ближайшего парка.
2. Изучите, как быстро продавались квартиры (столбец days_exposition).
Этот параметр показывает, сколько дней было размещено каждое объявление.
- Постройте гистограмму.
- Посчитайте среднее и медиану.
- В ячейке типа
markdownопишите, сколько времени обычно занимает продажа. Какие продажи можно считать быстрыми, а какие — необычно долгими?
3. Определите факторы, которые больше всего влияют на общую (полную) стоимость объекта.
Изучите, зависит ли цена от:
- общей площади;
- жилой площади;
- площади кухни;
- количества комнат;
- этажа, на котором расположена квартира (первый, последний, другой);
- даты размещения (день недели, месяц, год).
Постройте графики, которые покажут зависимость цены от указанных выше параметров. Для подготовки данных перед визуализацией вы можете использовать сводные таблицы.
4. Посчитайте среднюю цену одного квадратного метра в 10 населённых пунктах с наибольшим числом объявлений — постройте сводную таблицу с количеством объявлений и средней ценой квадратного метра для этих населенных пунктов. Выделите населённые пункты с самой высокой и низкой стоимостью квадратного метра.
5. Ранее вы посчитали расстояние до центра в километрах. Теперь выделите квартиры в Санкт-Петербурге с помощью столбца locality_name и вычислите их среднюю стоимость на разном удалении от центра. Учитывайте каждый километр расстояния: узнайте среднюю цену квартир в одном километре от центра, в двух и так далее. Опишите, как стоимость объектов зависит от расстояния до центра города — постройте график изменения средней цены для каждого километра от центра Петербурга.
Шаг 5. Напишите общий вывод
Опишите полученные результаты и зафиксируйте итоговый вывод проведённого исследования.
📁 Описание данных
| Поле | Описание |
|---|---|
airports_nearest |
расстояние до ближайшего аэропорта в метрах (м) |
balcony |
число балконов |
ceiling_height |
высота потолков (м) |
cityCenters_nearest |
расстояние до центра города (м) |
days_exposition |
сколько дней было размещено объявление (от публикации до снятия) |
first_day_exposition |
дата публикации |
floor |
этаж |
floors_total |
всего этажей в доме |
is_apartment |
апартаменты (булев тип) |
kitchen_area |
площадь кухни в квадратных метрах (м²) |
last_price |
цена на момент снятия с публикации |
living_area |
жилая площадь в квадратных метрах (м²) |
locality_name |
название населённого пункта |
open_plan |
свободная планировка (булев тип) |
parks_around3000 |
число парков в радиусе 3 км |
parks_nearest |
расстояние до ближайшего парка (м) |
ponds_around3000 |
число водоёмов в радиусе 3 км |
ponds_nearest |
расстояние до ближайшего водоёма (м) |
rooms |
число комнат |
studio |
квартира-студия (булев тип) |
total_area |
общая площадь квартиры в квадратных метрах (м²) |
total_images |
число фотографий квартиры в объявлении |
📝 Оформление
Выполните задание в Jupyter Notebook. Заполните программный код в ячейках типа code, текстовые пояснения — в ячейках типа markdown. Примените форматирование и заголовки.
✅ Как будут проверять мой проект?
- Если вашу работу отправили на доработку, пожалуйста, не удаляйте в Jupyter-тетрадке комментарии ревьюера. Так ревьюеру будет проще проверить изменения.
Мы подготовили критерии оценки проекта. Прежде чем решать кейс, внимательно изучите их.
На что обращают внимание ревьюеры, когда проверяют ваш проект:
| Аспект | Комментарий |
|---|---|
| 🧹 Описание проблем в данных | Как вы описываете выявленные в данных проблемы? |
| 🔧 Обработка пропусков | Какие способы обработки пропусков вы применяете? |
| ✂️ Срезы данных | Как используете срезы данных? |
| 📊 Графики | Решают ли ваши графики поставленные задачи? Какие методы построения графиков вы используете? |
| 📋 Сводные таблицы | Выводите ли вы финальные данные в сводных таблицах? |
| 🔗 Взаимосвязи | Считаете ли показатели взаимосвязи в данных и как вы их объясняете? |
| 📐 Структура и код | Соблюдаете ли вы структуру проекта и поддерживаете ли аккуратность кода? |
| 💬 Выводы | Какие выводы вы делаете? |
| 📝 Комментарии | Оставляете ли вы комментарии к шагам? |
🧠 Всё, что нужно для выполнения этого проекта, есть в шпаргалках и конспектах прошлых уроков.