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

Этот город не нуждается в представлении. Нью-Йорк — самый густонаселенный город в США с населением около 8 000 000 человек. Это также самый густонаселенный крупный город в Соединенных Штатах, который называют культурной, финансовой и медиа-столицей мира.

Расположенный в одной из крупнейших в мире естественных гаваней, Нью-Йорк состоит из пяти районов, каждый из которых является округом штата Нью-Йорк. Пять районов — Бруклин, Квинс, Манхэттен, Бронкс и Статен-Айленд — были объединены в один город в 1898 году.

Интересные факты.

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

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

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

Содержание:

Введение в набор данных (1 мин чтения)

Исследовательский анализ данных с помощью Python (7 минут чтения)

1. Введение в набор данных

Airbnb – это компания из Сан-Франциско, представленная в более чем 81 000 городов по всему миру и предлагающая более 6 миллионов объявлений об аренде жилья. С точки зрения создания данных компания собрала огромное количество данных из городов, в которых она работает, таких как отзывы пользователей, описания мест и статистика аренды.

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

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

2. Исследовательский анализ данных

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

А. Какая доля арендной платы соответствует каждому типу номеров?

Б. Как арендная плата распределяется между пятью районами Нью-Йорка?

С. Каково распределение цен и каков диапазон доступных справедливых цен?

Д. Различайте цены среди доступных типов номеров.

Е. В каких местах лучше всего арендовать коттедж?

F. Рекомендации по аренде для терпеливых читателей.

Начнем работу с импорта необходимых библиотек.

# Imports
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

Продолжайте получать данные, включенные в файл .CSV, который должен находиться в вашем рабочем каталоге, используя функцию Pandas read_csv. После этого распечатайте в консоли предварительный просмотр данных, просто чтобы взглянуть на задействованные переменные и функции. Встроенная функция head возвращает первые пять строк набора данных:

data = pd.read_csv('new_york.csv')
data.head()

После этого шага вы получите следующий вывод:

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

data.info()

Как видно из Gist, набор данных содержит 16 столбцов, 48 895 записей или строк и различные типы данных, такие как целые числа Numpy, объекты и числа с плавающей запятой Numpy. Некоторые значения

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

Продолжайте заменять «отсутствующие» или нулевые значения из набора данных на ноль, так как пустые значения в основном сосредоточены в столбцах «количество отзывов» и «последний отзыв» и они не имеют полезного применения в нашем анализе. Будьте осторожны на этом этапе, так как не каждый раз, когда вы видите «отсутствующее» значение, вы должны заменить его:

data.fillna(0,inplace=True)

Проверьте наличие повторяющихся записей, он должен вернуть ноль:

sum(data.duplicated())

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

A. Какая доля арендной платы соответствует каждому типу номера?

Из всех арендных площадей, доступных в наборе данных, 52% соответствуют квартирам целиком, 46% - аренде отдельных комнат, а оставшееся меньшинство соответствует общим комнатам с 2 % выборки.

Следующий код должен позволить вам получить представленную визуализацию:

# 1 - Pie chart
room_type = data.groupby('room_type')['latitude'].count().reset_index()
room_type.rename(columns={'latitude':'n_rooms'},inplace=True)
plt.figure(figsize=(10,8))
plt.pie(room_type['n_rooms'],autopct='%1.2f%%', colors=['darkcyan', 'steelblue','powderblue'])
plt.axis('equal')
plt.legend(labels=room_type['room_type'],loc='best',fontsize='12')
plt.title('Room-type Rental Distribution', fontsize='15',color='b')
plt.show()
plt.close()

Б. Как арендная плата распределяется между пятью районами, упомянутыми во введении?

Как видно из визуализации, в районах Бруклина и Манхэттена сосредоточена большая часть предложений по аренде жилья на Airbnb, что составляет более 40 000 объектов аренды между ними. Это означает, что основная часть посетителей Нью-Йорка останавливается в собственности, комнатах или резиденциях, расположенных в этих районах.

Взгляните на код для создания сюжета:

# 2 - Bar plot with neighbourhood distribution
neighbourhood = data.groupby('neighbourhood_group')['neighbourhood'].count().reset_index()
fig,ax = plt.subplots(figsize=(12,8))
sns.barplot(x=neighbourhood[neighbourhood.columns[0]],
y=neighbourhood[neighbourhood.columns[1]],color='#004488',ax=ax)
sns.lineplot(x=neighbourhood[neighbourhood.columns[0]],y=neighbourhood[neighbourhood.columns[1]],color='r',marker='o',ax=ax)
plt.ylabel('Rentals', fontsize='15')
plt.xlabel('Borough',fontsize='15')
plt.title('Rental Distribution by Neighbourhood Group',fontsize='15')
plt.grid('x')
plt.show()
sns.set()

C. Каково распределение цен и каков диапазон доступных справедливых цен?

Распределение цен сосредоточено вокруг цен 300–400 долларов, при этом несколько наблюдений показывают более высокие цены.

# 3 - Histogram plot with price distribution
price = data.loc[:,['neighbourhood','price']].set_index('neighbourhood')
price_stats = data['price'].describe().reset_index()
price_counts = price.price.value_counts().reset_index()
price_counts.rename(columns={'index':'price','price':'count'},inplace=True)
fig2,ax = plt.subplots(figsize=(12,8))
fig2.patch.set_facecolor('lightgray')
ax.set_facecolor('lightgray')
plt.hist(price_counts['price'],bins=30,color='#004488',edgecolor='salmon')
ax.set_xticks(range(0,10000,500))
for tick in ax.get_xticklabels():
tick.set_rotation(45)
plt.xlabel('Price',fontsize='15')
plt.ylabel('Rentals', fontsize='15')
plt.xlim((-0.5,10000))
plt.title('New York Price-Rental Distribution',fontsize='15')
plt.show()

D. Дифференцировать цены между доступными типами номеров.

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

В данном случае мы отмечаем, что в районах с меньшим спросом, таких как Бронкс или Статен-Айленд, разброс цен между отдельными и общими комнатами сужается, в то время как разброс цен на дома целиком сохраняется.

В более востребованных местах, таких как Манхэттен, цены на аренду отдельных комнат аналогичны ценам на аренду целых домов в менее востребованных местах.

# 4 - Bar plot with price to location distribution
loc_price = data.groupby(['neighbourhood_group','room_type'])['price'].mean().reset_index()
locations = loc_price.neighbourhood_group.unique()
x_rooms1 = [0.8, 3.8, 6.8, 9.8, 12.8]
x_rooms2 = [1.6, 4.6, 7.6, 10.6, 13.6]
x_rooms3 = [2.4, 5.4, 8.4, 11.4, 14.4]
y_values1 = loc_price[loc_price['room_type'] == 'Entire home/apt']['price'].values
y_values2 = loc_price[loc_price['room_type'] == 'Private room']['price'].values
y_values3 = loc_price[loc_price['room_type'] == 'Shared room']['price'].values
fig3,ax2 = plt.subplots(figsize=(16,11))
fig3.patch.set_facecolor('lightgray')
ax2.set_facecolor('lightgray')
plt.bar(x_rooms1, y_values1, color='purple', edgecolor='b')
plt.bar(x_rooms2, y_values2, color='b', edgecolor='b')
plt.bar(x_rooms3, y_values3, color='yellowgreen', edgecolor='b')
ax2.set_xticks(range(1,16,3))
ax2.set_xticklabels(locations, fontsize='12')
for tick in ax2.get_xticklabels():
tick.set_rotation(45)
plt.xlabel('Location/Room-type',fontsize='15')
plt.ylabel('Prices', fontsize='15')
plt.legend(labels=loc_price.room_type.unique(), loc='best')
plt.title('New York Price-Rental Distribution by Location and Room-type',fontsize='15')
plt.show()

E. В каких местах лучше всего арендовать домик?

Основываясь на отзывах пользователей Airbnb, мы можем сделать вывод о том, какие объекты аренды были наиболее посещаемыми или наиболее популярными (что не означает, что они самые лучшие, но для упрощения дела давайте рассмотрим, что если их посещали больше раз, возможно, это потому что предыдущие посетители оставили хорошие отзывы).

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

# 5 - Most reviewed spots
review = data.sort_values('number_of_reviews',ascending=False)
top_reviewed = review.loc[:,['neighbourhood','number_of_reviews']][:20]
top_reviewed = top_reviewed.groupby('neighbourhood').mean().sort_values('number_of_reviews',ascending=False).reset_index()
fig4,ax3 = plt.subplots(figsize=(12,8))
sns.barplot(x=top_reviewed['neighbourhood'],y=top_reviewed['number_of_reviews'].values,color='yellowgreen',ax=ax3)
plt.plot(top_reviewed['number_of_reviews'], marker='o', color='red',linestyle='--')
plt.ylabel('Reviews', fontsize='15')
plt.xlabel('Location',fontsize='15')
plt.ylim((400,580))
for ax in ax3.get_xticklabels():
ax.set_rotation(50)
plt.title('Most-Reviewed Rentals by location',fontsize='15')
plt.show()
sns.set()

F. Рекомендации по аренде для терпеливых читателей

Как видно из приведенных выше изображений, спрос на Манхэттен и Бруклин явно выше.

Возможно, вам интересно, сколько мне будет стоить проживание в этих местах? Можно ли с помощью этого анализа найти возможности, которые позволят мне платить как можно меньше за место в этих районах, оставаясь в хорошей аренде? Ответ - да!

Одним из самых известных мест для проживания на Манхэттене является Верхний Ист-Сайд (UES).Верхний Ист-Сайд является домом для некоторых из самых богатых людей и семей. Есть роскошные апартаменты, в которых живут самые шикарные жители Нью-Йорка.

С помощью доступных фильтров Pandas мы можем отфильтровать объекты аренды, расположенные в Верхнем Ист-Сайде, и мы можем получить самые дешевые объекты аренды среди самых популярных, чтобы найти наиболее подходящее место для проживания!

Это наиболее подходящая аренда для частных комнат и домов, исходя из критериев, упомянутых выше:

Как мы видим, всего за 69 долларов за ночь мы можем остановиться в одном из самых роскошных мест мира в доме-аренде, а также за 49 долларов мы можем снять отдельную комнату, если наш бюджет ограничен.

Если у вас есть какие-либо нерешенные сомнения, рассмотрите возможность взглянуть на сценарий, который я привожу ниже:

import numpy as np
upper_east = data[data['neighbourhood'] == 'Upper East Side']
ninetieth_percentile = np.quantile(upper_east['number_of_reviews'], 0.85)
upper_east = upper_east[upper_east['number_of_reviews'] >= ninetieth_percentile]
upper_east = upper_east.sort_values('price',ascending=True)
private_room = upper_east[upper_east['room_type'] == 'Private room'].reset_index()
entire_home = upper_east[upper_east['room_type'] == 'Entire home/apt'].reset_index()
shared_room = upper_east[upper_east['room_type'] == 'Shared room'].reset_index()
private_cheapest = private_room.loc[0,:].reset_index()
private_cheapest.rename(columns={'index':'data','0':'values'},inplace=True)
entire_cheapest = entire_home.loc[0,:].reset_index()
entire_cheapest.rename(columns={'index':'data','0':'values'},inplace=True)

Заключение

Нет никаких сомнений в том, что Airbnb и индустрия рынка онлайн-аренды помогают нам приобретать лучшие дома или комнаты в аренду, чтобы оптимизировать путешествия и туризм. Моя цель в этой статье состояла в том, чтобы предоставить вам инструмент для облегчения доступа к такой оптимизации и, почему бы и нет, решить, где вы остановитесь в следующий раз, когда приедете в Нью-Йорк?

Если вам понравилась информация, включенная в эту статью, не стесняйтесь обращаться ко мне, чтобы поделиться своими мыслями. Это мотивирует меня продолжать делиться!

Вы можете найти меня в следующих социальных сетях:

использованная литература

Спасибо, что нашли время прочитать мою статью! Любые вопросы, предложения или комментарии, не стесняйтесь обращаться ко мне: [email protected]