Поздравляем! Вы прошли курс в тренажёре. Самое время проверить полученные знания на практике и решить аналитический кейс. Выполнять работу вы будете самостоятельно.
Как закончите работу над проектом, отправьте его на проверку ревьюеру. В течение суток вы получите комментарии. Их нужно учесть: доработать проект и вернуть ревьюеру обновлённый вариант.
Скорее всего, вы снова получите комментарии по кейсу. Это нормально — доработка может проходить в несколько этапов.
Проект завершён, когда засчитаны все исправления.
Описание проекта
В вашем распоряжении данные сервиса Яндекс Недвижимость — архив объявлений о продаже квартир в Санкт-Петербурге и соседних населённых пунктах за несколько лет. Вам нужно научиться определять рыночную стоимость объектов недвижимости. Для этого проведите исследовательский анализ данных и установите параметры, влияющие на цену объектов. Это позволит построить автоматизированную систему: она отследит аномалии и мошенническую деятельность.
По каждой квартире на продажу доступны два вида данных. Первые вписаны пользователем, вторые — получены автоматически на основе картографических данных. Например, расстояние до центра, аэропорта и других объектов — эти данные автоматически получены из геосервисов. Количество парков и водоёмов также заполняется без участия пользователя.
Инструкция по выполнению проекта
Шаг 1. Откройте файл с данными и изучите общую информацию
Загрузите данные из csv-файла в датафрейм c помощью библиотеки pandas.
Изучите общую информацию о полученном датафрейме.
Постройте гистограмму для всех числовых столбцов таблицы на одном графике. Например, для датафрейма data можно построить такую гистограмму командой data.hist(figsize=(15, 20)). Напомним, что параметр figsize задаёт размер графика.
Шаг 2. Выполните предобработку данных
Найдите и изучите пропущенные значения в столбцах:
Определите, в каких столбцах есть пропуски.
Заполните пропущенные значения там, где это возможно. Например, если продавец не указал число балконов, то, скорее всего, в его квартире их нет. Такие пропуски можно заменить на число 0. Если логичную замену предложить невозможно, то оставьте пропуски. Пропущенные значения — тоже важный сигнал, который нужно учитывать.
В ячейке с типом markdown укажите причины, которые могли привести к пропускам в данных.
Рассмотрите типы данных в каждом столбце:
Найдите столбцы, в которых нужно изменить тип данных.
Преобразуйте тип данных в выбранных столбцах.
В ячейке с типом markdown поясните, почему нужно изменить тип данных.
Изучите уникальные значения в столбце с названиями и устраните неявные дубликаты. Например, «поселок Рябово» и «поселок городского типа Рябово», «поселок Тельмана» и «посёлок Тельмана» — это обозначения одних и тех же населённых пунктов. Вы можете заменить названия в существующем столбце или создать новый с названиями без дубликатов.
Подсказка
Шаг 3. Добавьте в таблицу новые столбцы со следующими параметрами:
цена одного квадратного метра (нужно поделить стоимость объекта на его общую площадь, а затем округлить до двух знаков после запятой);
день недели публикации объявления (0 — понедельник, 1 — вторник и так далее);
месяц публикации объявления;
год публикации объявления;
тип этажа квартиры (значения — «первый», «последний», «другой»);
расстояние до центра города в километрах (переведите из м в км и округлите до ближайших целых значений).
Шаг 4. Проведите исследовательский анализ данных:
Изучите перечисленные ниже параметры объектов и постройте отдельные гистограммы для каждого из этих параметров. В некоторых параметрах встречаются редкие и выбивающиеся значения. При построении гистограмм удалите их. Например, в столбце ceiling_height может быть указана высота потолков 25 м и 32 м. Логично предположить, что на самом деле это вещественные значения: 2.5 м и 3.2 м. Попробуйте обработать аномалии в этом и других столбцах, если они есть. Если природа аномалии понятна и данные действительно искажены, то восстановите корректное значение. В противном случае удалите редкие и выбивающиеся значения.
Список параметров:
общая площадь;
жилая площадь;
площадь кухни;
цена объекта;
количество комнат;
высота потолков;
тип этажа квартиры («первый», «последний», «другой»);
общее количество этажей в доме;
расстояние до центра города в метрах;
расстояние до ближайшего парка
Опишите все ваши наблюдения по параметрам в ячейке с типом markdown. 2. Изучите, как быстро продавались квартиры (столбец days_exposition). Этот параметр показывает, сколько дней было размещено каждое объявление.
Постройте гистограмму.
Посчитайте среднее и медиану.
В ячейке типа markdown опишите, сколько времени обычно занимает продажа. Какие продажи можно считать быстрыми, а какие — необычно долгими?
Определите факторы, которые больше всего влияют на общую (полную) стоимость объекта.
Изучите, зависит ли цена от:
общей площади;
жилой площади;
площади кухни;
количества комнат;
этажа, на котором расположена квартира (первый, последний, другой);
даты размещения (день недели, месяц, год). Постройте графики, которые покажут зависимость цены от указанных выше параметров. Для подготовки данных перед визуализацией вы можете использовать сводные таблицы.
Посчитайте среднюю цену одного квадратного метра в 10 населённых пунктах с наибольшим числом объявлений — постройте сводную таблицу с количеством объявлений и средней ценой квадратного метра для этих населенных пунктов. Выделите населённые пункты с самой высокой и низкой стоимостью квадратного метра.
Ранее вы посчитали расстояние до центра в километрах. Теперь выделите квартиры в Санкт-Петербурге с помощью столбца locality_name и вычислите их среднюю стоимость на разном удалении от центра. Учитывайте каждый километр расстояния: узнайте среднюю цену квартир в одном километре от центра, в двух и так далее. Опишите, как стоимость объектов зависит от расстояния до центра города — постройте график изменения средней цены для каждого километра от центра Петербурга.
Шаг 5. Напишите общий вывод
Опишите полученные результаты и зафиксируйте итоговый вывод проведённого исследования.
Оформление
Выполните задание в Jupyter Notebook. Заполните программный код в ячейках типа code, текстовые пояснения — в ячейках типа markdown. Примените форматирование и заголовки.
Описание данных
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-тетрадке комментарии ревьюера. Так ревьюеру будет проще проверить изменения.
Мы подготовили критерии оценки проекта. Прежде чем решать кейс, внимательно изучите их. На что обращают внимание ревьюеры, когда проверяют ваш проект:
Как вы описываете выявленные в данных проблемы?
Какие способы обработки пропусков вы применяете?
Как используете срезы данных?
Решают ли ваши графики поставленные задачи?
Какие методы построения графиков вы используете?
Выводите ли вы финальные данные в сводных таблицах?
Считаете ли показатели взаимосвязи в данных и как вы их объясняете?
Соблюдаете ли вы структуру проекта и поддерживаете ли аккуратность кода?
Какие выводы вы делаете?
Оставляете ли вы комментарии к шагам?
Всё, что нужно для выполнения этого проекта, есть в шпаргалках и конспектах прошлых уроков.
Успехов!
Исследование объявлений о продаже квартир
В вашем распоряжении данные сервиса Яндекс Недвижимость — архив объявлений о продаже квартир в Санкт-Петербурге и соседних населённых пунктах за несколько лет. Вам нужно научиться определять рыночную стоимость объектов недвижимости. Для этого проведите исследовательский анализ данных и установите параметры, влияющие на цену объектов. Это позволит построить автоматизированную систему: она отследит аномалии и мошенническую деятельность.
По каждой квартире на продажу доступны два вида данных. Первые вписаны пользователем, вторые — получены автоматически на основе картографических данных. Например, расстояние до центра, аэропорта и других объектов — эти данные автоматически получены из геосервисов. Количество парков и водоёмов также заполняется без участия пользователя.
Изучение общей информации
Импортируем библиотеку(и)
import pandas as pd
import matplotlib.pyplot as plt
В данных 23699 записи. Для целого ряда столбцов, есть пропущенные значения и некорректный тип данных. По гисторгаммам видно, что в данных есть аномальные значения. Явные дубликаты отсутствуют. Данные признаны полными и достаточными для исследования.
жилая площадь living_area = общая площадь total_area - нежилая площадь {остальное пространство, включающее коридор, кухню, санузел (ванную и туалет), балкон, лоджию, кладовые, прихожие, гардеробные}
Оставим данные без изменения
is_apartment - аппартаменты
df['is_apartment'].mean()
0.018018018018018018
Среднее указывает, что аппартаментов около 2 % что ближе к действительности, а следовательно при заполнении анкеты их просто неуказали, заполним знечение на False
df['is_apartment'] = df['is_apartment'].fillna(False)
# Заменяем тип данных на "bool"
df['is_apartment'] = df['is_apartment'].astype(bool)
kitchen_area - площадь кухни
# Найдем зависимость столбцов друг от друга при помощи корреляции Пирсона.
print(df.corr().sort_values(by='kitchen_area', ascending=False)['kitchen_area'].head())
# Найдем зависимость столбцов друг от друга при помощи корреляции Пирсона.
print(df.corr().sort_values(by='balcony', ascending=False)['balcony'].head())
# перевод в строчные буквы
df['locality_name'] = df['locality_name'].str.lower()
# Оставим только названия
df['locality_name'] = (
df['locality_name']
.str.replace('ё','е')
.replace(['поселок ','при железнодорожной станции ', 'платформа ', 'садоводческое некоммерческое товарищество ',
'садовое товарищество ', 'станции ', 'село ', 'пансионат ', 'городского типа ',
'деревня ', 'городской поселок '], '', regex=True)
)
# Уникальные значения в алфавитном порядке
set(df['locality_name'].unique())
ponds_nearest - расстояние до ближайшего водоёма (м)
df['ponds_nearest'].round(2)
0 755.0
1 NaN
2 574.0
3 234.0
4 48.0
...
23694 381.0
23695 NaN
23696 NaN
23697 196.0
23698 NaN
Name: ponds_nearest, Length: 23699, dtype: float64
Незаполненные пропуски скорее всего, указывают,что объект продажи находится далеко от водоема.
Оставим значения неизменным.
days_exposition - сколько дней было размещено объявление (от публикации до снятия)
Незаполненные пропуски скорее всего, указывают, что объект не продан и хотя присутствующие значения "Количество дней" являются целочисленными оставим пока столбец неизменным.
array([120370.37, 82920.79, 92785.71, ..., 44091.71, 149511.4 ,
41795.67]) Добавим столбец day_publication день недели публикации объявления (0 — понедельник, 1 — вторник и так далее)
Изучение и описание зависимости количества квартир в продаже от отдельных параметров
Анализ общей площади
df['total_area'].describe()
count 23699.000000
mean 60.348651
std 35.654083
min 12.000000
25% 40.000000
50% 52.000000
75% 69.900000
max 900.000000
Name: total_area, dtype: float64
Оставим значения от минимального 12 до 100 кв. метров построим гистограмму
plt.hist(df['total_area'], bins=100, range=(12,100))
plt.title('Зависимость квартир в продаже от площади квартир')
plt.xlabel('Квадратные метры')
plt.ylabel('Количество квартир')
plt.show()
Вывод:
На рынке самое большое предложение квартир с общей площадью от 40 до 69 кв. метров с максимумом около 52 кв. метров.
Анализ жилой площади
df['living_area'].describe()
count 21796.000000
mean 34.457852
std 22.030445
min 2.000000
25% 18.600000
50% 30.000000
75% 42.300000
max 409.700000
Name: living_area, dtype: float64
Оставим значения от минимального 12 до 42 кв. метров
plt.hist(df['living_area'], bins=100, range=(12,42))
plt.title('Зависимость квартир в продаже от жилой площади')
plt.xlabel('Квадратные метры')
plt.ylabel('Количество квартир')
plt.show()
Вывод:
Больше всего продают квартир с жилой площадью около 18 кв. м и 30 кв. метров при этом прослеживается спад предложений в средней зоне 23 кв. метра.
Анализ площади кухни
df['kitchen_area'].describe()
count 23699.000000
mean 9.553814
std 6.420973
min 0.000000
25% 6.300000
50% 9.000000
75% 11.440000
max 112.000000
Name: kitchen_area, dtype: float64
Оставим значения от 6 до 12 кв. метров
plt.hist(df['kitchen_area'], bins=100, range=(6,12))
plt.title('Зависимость квартир в продаже от площади кухни')
plt.xlabel('Квадратные метры')
plt.ylabel('Количество квартир')
plt.show()
Вывод:
Прослеживается тенденция что больше всего предложений с площадью кухни в 6 метров затем 10 и чередом 7,8,9 кв. метров, при этом в анкетах заметны явные всплески на целых числах.
Анализ цены
df['last_price'].describe()
count 2.369900e+04
mean 6.541549e+06
std 1.088701e+07
min 1.219000e+04
25% 3.400000e+06
50% 4.650000e+06
75% 6.800000e+06
max 7.630000e+08
Name: last_price, dtype: float64
plt.hist(df['last_price'], bins=100, range=(1.219000e+04,9.00000e+06))
plt.title('Зависимость квартир в продаже от цены на момент снятия с публикации')
plt.xlabel('Цена в млн. руб.')
plt.ylabel('Количество квартир')
plt.show()
Вывод:
Из гисторгаммы следует, что наиболее часто цена объекта составляет 3,8 - 4,2 миллниона.
Количество комнат
plt.hist(df['rooms'], bins=7, range=(0,7))
plt.title('Зависимость квартир в продаже от комнат')
plt.xlabel('Количество комнат')
plt.ylabel('Количество квартир')
plt.show()
Вывод
Среди предложений больше всего однокомнатных квартир. С увеличением комнат количество предложений снижается почти линейно.
Высота потолков
df['ceiling_height'].describe()
count 23699.000000
mean 2.698721
std 0.253208
min 1.000000
25% 2.600000
50% 2.650000
75% 2.700000
max 14.000000
Name: ceiling_height, dtype: float64
plt.hist(df.query('(ceiling_height > 2) & (ceiling_height < 4)')['ceiling_height'], bins=50, range=(2.4,3))
plt.title('Зависимость квартир в продаже от высоты потолков')
plt.xlabel('Метры')
plt.ylabel('Количество квартир')
plt.show()
Вывод:
Среди большинства предложений высота составляет 2.65 метров, далее 2.5, 2.6, 2.7, 2.55 метров.
Тип этажа квартиры («первый», «последний», «другой»)
df.pivot_table(index='type_apartment_floor',values='last_price',aggfunc='count') \
.plot.pie(y='last_price', figsize=(10,7), label='', title='Диаграмма количественного отношения распределения предложений в зависимости от этажа')
plt.show()
Вывод:
Менее ценными считаются квартиры на "Первом" и "Последнем" этаже. На круговой диаграмме заметно, что общее количество предложений "Первого" и "Последнего" этажа составляет чуть больше 25% от общего количества предложений, значит люди хотят сьехать с этих этажей.
Общее количество этажей в доме
df['floors_total'].describe()
count 23699.000000
mean 10.681759
std 6.599383
min 1.000000
25% 5.000000
50% 9.000000
75% 16.000000
max 60.000000
Name: floors_total, dtype: float64
plt.hist(df['floors_total'], bins=100, range=(1,30))
plt.title('Зависимость квартир в продаже от общего количество этажей в доме')
plt.xlabel('Этаж')
plt.ylabel('Количество квартир')
plt.show()
Вывод:
Больше всего предложений о продаже квартир в пятиэтажных домах, а потом в девятиэтажках.
Расстояние до центра города в метрах
df['city_centers_nearest'].describe()
count 18180.000000
mean 14191.277833
std 8608.386210
min 181.000000
25% 9238.000000
50% 13098.500000
75% 16293.000000
max 65968.000000
Name: city_centers_nearest, dtype: float64
plt.hist(df['city_centers_nearest'], bins=100, range=(0,25000))
plt.title('Зависимость квартир в продаже от центра удаленности от центра города')
plt.xlabel('Расстояние до центра города (метров)')
plt.ylabel('Количество квартир')
plt.show()
Вывод:
Больше всего предложений о продаже в спальных районах на окраинах города (на расстоянии 12000 -15000 метров)), и значительным всплеском на расстоянии в 5000 метров от центра города.
Расстояние до ближайшего парка
df['parks_nearest'].describe()
count 8079.000000
mean 490.804555
std 342.317995
min 1.000000
25% 288.000000
50% 455.000000
75% 612.000000
max 3190.000000
Name: parks_nearest, dtype: float64
plt.hist(df['parks_nearest'], bins=100, range=(100,800))
plt.title('Зависимость квартир в продаже от удаленности от парка')
plt.xlabel('Расстояние до марка (метров)')
plt.ylabel('Количество квартир')
plt.show()
Вывод:
Количество предложений не сильно зависит от удаленности от ближайшего парка. Среднее расстояние до парка премерно составляет 200 - 700 метров.
Общий вывод по разделу:
На рынке самое большое предложение квартир с общей площадью от 40 до 69 кв. метров с максимумом около 52 кв. метров.
Больше всего продают квартир с жилой площадью около 18 кв. м и 30 кв. метров при этом прослеживается спад предложений в средней зоне 23 кв. метра.
Прослеживается тенденция что больше всего предложений с площадью кухни в 6 метров затем 10 и чередом 7,8,9 кв. метров, при этом в анкетах заметны явные всплески на целых числах.
Из гисторгаммы следует, что наиболее часто цена объекта составляет 3,8 - 4,2 миллниона.
Среди предложений больше всего однокомнатных квартир. С увеличением комнат количество предложений снижается почти линейно.
Среди большинства предложений высота составляет 2.65 метров, далее 2.5, 2.6, 2.7, 2.55 метров.
Менее ценными считаются квартиры на "первом" этаже. На круговой диаграмме заметно, что общее количество предложений "первого" и "последнего" этажа составляет почти 25% от общего количества, значит люди хотят сьехать с этих этажей.
Больше всего предложений о продаже квартир в пятиэтажных домах, а потом в девятиэтажках.
Больше всего предложений о продаже в спальных районах на окраинах города (на расстоянии 12000 -15000 метров), и значительным всплеском на расстоянии в 5000 метров от центра города.
Количество предложений не сильно зависит от удаленности от ближайшего парка. Среднее расстояние до парка премерно составляет 200 - 700 метров.
В заключении: Среднестатистическое предложение, это квартира в пятиэтажном доме средней площадью 52 кв. метра с кухней в 6 кв. метров, высотой потолков 2,65 метра, скорее всего однокомнатная или двухкомнатная с маленькими комнатками, на удалении 13 км. отцентра города.
count 20518.000000
mean 180.888634
std 219.727988
min 1.000000
25% 45.000000
50% 95.000000
75% 232.000000
max 1580.000000
Name: days_exposition, dtype: float64
plt.hist(df['days_exposition'], bins=100, range=(0,250))
plt.title('Распределение количества продаж по времени')
plt.xlabel('Сколько дней было размещено объявление (от публикации до снятия)')
plt.ylabel('Количество объявлений')
plt.show()
Вывод по времение продажи квартир
Среднее значение продажи составляет 180 дня, при этом медианное значение составляет 95 дня, оно более точно характеризует среднее время продажи, так как не зависит от выбрасов и нестандартных значений.
В среднем продажа среднестатистичекой квартиры занимает 2-3 месяца в зависимотсти от сопутствующих факторов(площади, цены, удалённости от центра).
Быстрыми продажами можно считать продажи состоявшиеся за 45 днней (в первом квартиле), а необычно долгие продажи после 232 дня и более (после 3 квартиля), которые вообще могут быть не проданными.
Определим факторы, которые больше всего влияют на общую (полную) стоимость объекта
Изучим зависимость цены last_price от столбцов с числовыми данными при помощи вычисления корреляции:
total_area - общая площадь
living_area - жилая площадь
kitchen_area - площадь кухни
rooms - количество комнат
day_publication - день публикации
month_publication - месяц публикации
year_publication - год публикации
Значения в столбце type_apartment_floor обработаем отдельно.
Корреляция по данным указывает, прямой зависимости среди данных нет. Возможно это произошло из за наличия большого количества редких и выбивающихся значений.
Проведем обработку этих значений.
# Функция для подсчёта границ с учетом 1.5 размаха
def quartile_range(df, column):
q1 = df[column].quantile(0.25)
q3 = df[column].quantile(0.75)
iqr = q3 - q1
dfq = df.loc[(df[column] < q3 + 1.5*iqr) & (df[column] > q1 - 1.5*iqr), column]
return dfq
# Столбцы с выбросами
list_features = ['last_price', 'total_area', 'living_area', 'kitchen_area', 'rooms', 'ceiling_height' ]
for col in list_features:
df[col] = quartile_range(df, col)
(
df.pivot_table(index='day_publication', values='last_price')
.plot(grid=True, style='o-', figsize=(5, 5))
)
plt.title('Зависимость цены от дня публикации')
plt.show()
(
df.pivot_table(index='month_publication', values='last_price', aggfunc='median')
.plot(grid=True, style='o-', figsize=(5, 5))
)
plt.title('Зависимость цены от месяца публикации')
plt.show()
(
df.pivot_table(index='year_publication', values='last_price')
.plot(grid=True, style='o-', figsize=(5, 5))
)
plt.title('Зависимость цены от года публикации')
plt.show()
Вывод
Предворительные выводы подтвердились:
Чем больше общая площадь, тем выше стоимость. Корреляция этих параметров крайне высокая.
Число комнат влияет на цену (больше комнат -> больше жилая площадь -> больше цена), однако зависимость ниже, чем у площади, так как бывают квартиры с большими по площади комнатами и квартиры в центре состоят из малого числа комнат, но стоят достаточно высоко.
Первый этаж непосредственно влияет на стоимость квартиры - в среднем квартиры на 1-м этаже значительно дешевле. Чуть дороже последний этаж. Наибольшая стоимость у квартир, расположенных не на 1-м и не на последнем этаже.
Посчитаем среднюю цену одного квадратного метра в 10 населённых пунктах с наибольшим числом объявлений
Наибольшая средняя стоимость квадратного метра, как и ожидалось, в Санкт-Петербурге. Затем идёт Пушкин, что, вероятно, вызвано хорошей застройкой и большим количеством парков. Затем идут районы, фактически являющиеся Санкт-Петербургом и непосредственно к нему примыкают. Из топ-10 наименьшая стоимость в Гатчине и Всеволожске, из которых далеко ехать до Санкт-Петербурга, а также не большой по численности населения Выборг, расположенный на большом расстоянии от Санкт-Петербурга.
Выделим квартиры в Санкт-Петербурге с помощью столбца locality_name и вычислим их среднюю стоимость на разном удалении от центра
mean 11.596041
std 4.863594
min 0.000000
25% 8.000000
50% 12.000000
75% 15.000000
max 29.000000
Name: distance_city_center, dtype: float64
(
df.query('locality_name == "санкт-петербург"')
.pivot_table(index='distance_city_center', values='last_price')
.plot(grid=True, style='o-', xlim=(0,15), figsize=(10, 5))
)
plt.title('Зависимость цены от удаления от центра города в Санкт-Петербурге')
plt.xlabel('Расстояние от центра города (километр)')
plt.ylabel('Цена (млн. руб.)')
plt.show()
print('Таблица средней стоимость квартир в зависимости от удаления центра города Санкт-Петербург')
df.query('locality_name == "санкт-петербург" and distance_city_center<10').pivot_table(values='last_price', index='distance_city_center')
Таблица средней стоимость квартир в зависимости от удаления центра города Санкт-Петербург
last_price
distance_city_center
0.0
8.398000e+06
1.0
8.145277e+06
2.0
7.970519e+06
3.0
7.346575e+06
4.0
7.606618e+06
5.0
7.661225e+06
6.0
7.108234e+06
7.0
6.635321e+06
8.0
6.617244e+06
9.0
5.516022e+06
Вывод
Самые дорогие квартиры в центре города и их стоимость уменьшается c увеличением расстояния от центра города до 7 километров, далее стоимость не зависит от удаления.
Общий вывод
В процессе исследования объявлений о продаже квартир были выполнены следующие этапы и сделаны выводы:
Изучили общую информацию о данных
В данных 23699 записи. Для целого ряда столбцов, есть пропущенные значения и некорректный тип данных. По гисторгаммам видно, что в данных есть аномальные значения. Явные дубликаты отсутствуют. Данные признаны полными и достаточными для исследования.
Выполнена предобработка данных
Переименовали название столбца cityCenters_nearest на city_centers_nearest.
Заполнили явные пропуски в таблице, округлили значение до значащих величин.
Изменили тип данных, в соответствии с данными находящимися в столбцах.
Сделали вывод о причинах появления пропусков:
Человеческий фактор.
Несовершенство программной оболочки (не все поля обязательные, нет чекбоксов с выбором, нет проверки данных).
Возможны программные сбои.
Доработка системы во время её работы (ранее введенные данные не откорректированы)
Добавлены новые столбцы в таблицу для проведения следующего этапа
price_square_meter - цена квадратного метра объекта с точностью до двух знаков после запятой.
day_publication - день недели публикации объявления (0 — понедельник, 1 — вторник и так далее).
month_publication - месяц публикации объявления.
year_publication - год публикации объявления.
type_apartment_floor - тип этажа квартиры (значения — «первый», «последний», «другой»).
distance_city_center - расстояние до центра города в целых километрах.
Проведен исследовательский анализ данных
Изучены и описаны параметры
Среднестатистическое предложение, это квартира в пятиэтажном доме средней площадью 52 кв. метра с кухней в 6 кв. метров, высотой потолков 2,65 метра, скорее всего однокомнатная или двухкомнатная с маленькими комнатками, на удалении 13 км. или 5 км. от центра города.
Изучено, как быстро продавались квартиры
Среднее значение продажи составляет 180 дня, при этом медианное значение составляет 95 дня, оно более точно характеризует среднее время продажи, так как не зависит от выбросов и нестандартных значений.
В среднем продажа средне статистической квартиры занимает 2-3 месяца в зависимости от сопутствующих факторов(площади, цены, удалённости от центра).
Быстрыми продажами можно считать продажи состоявшиеся за 45 дней (в первом квартиле), а необычно долгие продажи после 232 дня и более (после 3 квартиля), которые могут совсем не продаваться.
Определены факторы, которые больше всего влияют на общую (полную) стоимость объекта
Чем больше общая площадь, тем выше стоимость. Корреляция этих параметров крайне высокая.
Число комнат влияет на цену (больше комнат -> больше жилая площадь -> больше цена), однако зависимость ниже, чем у площади, так как бывают квартиры с большими по площади комнатами и квартиры в центре состоят из малого числа комнат, но стоят достаточно высоко.
Первый этаж непосредственно влияет на стоимость квартиры - в среднем квартиры на 1-м этаже значительно дешевле. Чуть дороже последний этаж. Наибольшая стоимость у квартир, расположенных не на 1-м и не на последнем этаже.
Посчитана средняя цена одного квадратного метра в 10 населённых пунктах с наибольшим числом объявлений
Наибольшая средняя стоимость квадратного метра, как и ожидалось, в Санкт-Петербурге. Затем идёт Пушкин, что, вероятно, вызвано хорошей застройкой и большим количеством парков. Затем идут районы, фактически являющиеся Санкт-Петербургом и непосредственно к нему примыкают. Из топ-10 наименьшая стоимость в Гатчине и Всеволожске, из которых далеко ехать до Санкт-Петербурга, а также небольшой по численности населения Выборг, расположенный на большом расстоянии от Санкт-Петербурга.
Вычислена средняя стоимость квартиры на разном удалении от центра Санкт-Петербурга
Самые дорогие квартиры в центре города и их стоимость уменьшается c увеличением расстояния от центра города до 7 километров, далее стоимость не зависит от удаления.
Чек-лист готовности проекта
Поставьте 'x' в выполненных пунктах. Далее нажмите Shift+Enter.
Файл с данными открыт.
Файл с данными изучен: выведены первые строки, использован метод info(), построены гистограммы.
Найдены пропущенные значения.
Пропущенные значения заполнены там, где это возможно.
Объяснено, какие пропущенные значения обнаружены.
В каждом столбце установлен корректный тип данных.
Объяснено, в каких столбцах изменён тип данных и почему.
Устранены неявные дубликаты в названиях населённых пунктов.
Обработаны редкие и выбивающиеся значения (аномалии).
В таблицу добавлены новые параметры: – цена одного квадратного метра; – день публикации объявления (0 - понедельник, 1 - вторник и т. д.); – месяц публикации объявления; – год публикации объявления; – тип этажа квартиры (значения — «первый», «последний», «другой»); – расстояние до центра города в километрах.
Изучены и описаны параметры: - общая площадь; - жилая площадь; - площадь кухни; - цена объекта; - количество комнат; - высота потолков; - тип этажа квартиры («первый», «последний», «другой»); - общее количество этажей в доме; - расстояние до центра города в метрах; - расстояние до ближайшего парка.
Выполнено задание «Изучите, как быстро продавались квартиры (столбец days_exposition)»:
построена гистограмма;
рассчитаны среднее и медиана;
описано, сколько обычно занимает продажа и указано, какие продажи можно считать быстрыми, а какие — необычно долгими.
Выполнено задание «Определите факторы, которые больше всего влияют на общую (полную) стоимость объекта». Построены графики, которые показывают зависимость цены от параметров: - общая площадь; - жилая площадь; - площадь кухни; - количество комнат; - тип этажа, на котором расположена квартира (первый, последний, другой); - дата размещения (день недели, месяц, год).
Выполнено задание «Посчитайте среднюю цену одного квадратного метра в 10 населённых пунктах с наибольшим числом объявлений»:
выделены населённые пункты с самой высокой и низкой стоимостью квадратного метра.
Выполнено задание «Выделите квартиры в Санкт-Петербурге с помощью столбца locality_name и вычислите их среднюю стоимость на разном удалении от центра»:
учтён каждый километр расстояния, известны средние цены квартир в одном километре от центра, в двух и так далее;
описано, как стоимость объекта зависит от расстояния до центра города;
построен график изменения средней цены для каждого километра от центра Петербурга.
На каждом этапе сделаны промежуточные выводы.
В конце проекта сделан общий вывод.
Дорогой друг!
Я внимательно наблюдал за твоими действиями на сайте через вебвизор.
Если ты добрался до этой страницы, то скорее всего ты проходишь платное обучение на курсах.
Благодаря моим стараниям, целую главу ты можешь закрыть за сутки, а то и быстрее.
Думаю, что сэкономленное время, ты потратил с пользой, в то время как я сидел и пыхтел над заданиями.
Лучшая благодарность от тебя, это пожертвования на мой IT - проект.
Жертвуй столько, сколько не жалко, но и не скупись, чтобы было не стыдно.