Welcome to New York City, one of the most-visited cities in the world. There are many Airbnb listings in New York City to meet the high demand for temporary lodging for travelers, which can be anywhere between a few nights to many months. In this project, we will take a closer look at the New York Airbnb market by combining data from multiple file types like .csv
, .tsv
, and .xlsx
.
Recall that CSV, TSV, and Excel files are three common formats for storing data. Three files containing data on 2019 Airbnb listings are available to you:
data/airbnb_price.csv This is a CSV file containing data on Airbnb listing prices and locations.
listing_id
: unique identifier of listingprice
: nightly listing price in USDnbhood_full
: name of borough and neighborhood where listing is located
data/airbnb_room_type.xlsx This is an Excel file containing data on Airbnb listing descriptions and room types.
listing_id
: unique identifier of listingdescription
: listing descriptionroom_type
: Airbnb has three types of rooms: shared rooms, private rooms, and entire homes/apartments
data/airbnb_last_review.tsv This is a TSV file containing data on Airbnb host names and review dates.
listing_id
: unique identifier of listinghost_name
: name of listing hostlast_review
: date when the listing was last reviewed
# Import necessary packages
import pandas as pd
import numpy as np
# Begin coding here ...
# Use as many cells as you like
# read the data of airbnb_last_review.
airbnb_review = pd.read_table('data/airbnb_last_review.tsv', sep='\t')
airbnb_review.head(2)
# read the data of airbnb_price.
airbnb_price = pd.read_csv('data/airbnb_price.csv')
airbnb_price.head(2)
# read the data of airbnb_room_type.
airbnb_room_type = pd.read_excel('data/airbnb_room_type.xlsx')
airbnb_room_type.head(2)
#merge the dataframes
listings = pd.merge(airbnb_price, airbnb_room_type, on='listing_id')
listings = pd.merge(listings, airbnb_review, on='listing_id')
# getting the earliest and recent review date
# to use a function like min()/max() on last_review date column, it needs to be converted to datetime type
listings['last_review_date']=pd.to_datetime(listings['last_review'], format='%B %d %Y')
first_reviewed = listings['last_review_date'].min()
last_reviewed = listings['last_review_date'].max()
# getting private listing
# since there are differences in capitalization, make capitalization consistent
listings['room_type']=listings['room_type'].str.lower()
private_room_count = listings[listings['room_type']== 'private room'] .shape[0]
# Avg listing price
# to convert price to numeric, remove "dollars" from each value
listings['price_clean'] = listings['price']. str. replace(' dollars', '').astype(float)
avg_price= listings['price_clean'].mean()
# Dataframe called review_dates
data = {'first_reviewed':[first_reviewed],
'last_reviewed':[last_reviewed],
'nb_private_rooms':[private_room_count],
'avg_price': [round(avg_price, 2)]}
review_dates=pd.DataFrame(data)
review_dates