Analysis of Paris AirBnB Rentals (2008-2021)

Tools used in this project
Analysis of Paris AirBnB Rentals (2008-2021)

About this project


As AirBnb has grown in popularity, it has increasingly become the focus of regulations designed to limit the number of properties listed in each city. This project is focused on the city of Paris, which introduced permit regulations in 2015 to limit the number of holiday rentals.

The aim of the project, is to analyze historical data and evaluate the effects of these regulations on rental prices. The analysis will provide AirBnB leadership with a visual summary of the impact, and recommendations to maximize revenue.

Analytical Approach:

Step 1: Data Preparation & QA

The first step was to read in the Listings.csv file and get a feel for the data by referencing against the data dictionary. There were many superfluous columns so the read_csv & usecols commands were used to reduce the dataset, before filtering down to only Paris listings using the .query() method.

Some quick analysis using .info() and .describe() highlighted some minor data quality issues: there were 33 rows with no date value (<0.001%) and 62 rows with no price value (<0.001%). Although negligible, these errors were removed using the .query() and .dropna() methods.

The .describe() results suggested there were some outliers in the price column with a min of €8 and a max of €12,000 around a €80 median. A histogram illustrates this, as there were a handful of extreme listings skewing the distribution:

undefinedSome of these are likely data entry errors, for example, the max €12k per night listing for "Cute 1 bedroom flat in the center of Paris" doesn't seem plausible. At the opposite end of the scale there were multiple properties listed at €8 per night, which again don't seem plausible for a city centre location. To mitigate these outliers, the dataset was trimmed using the .query() method. The 1st and 99th price percentiles (€25 & €600) were calculated using the np.percentile() method and set as limits for the dataset.

These steps brought the overall mean down from €113 to €102 per night, and resulted in a data frame with 63,024 rows (97.4% of the original data).

Step 2: Exploratory Data Analysis

I kicked off my EDA by visualizing some simple descriptive statistics: calculating average listing price by neighborhood was one of the tasks from the guided project, but I wanted to visualize this on a choropleth map so the users could get a feel for the geographical distribution of prices around the city:

undefinedCredit to David Blackman (https://github.com/blackmad/neighborhoods/blob/master/paris.geojson?short_path=c9443df) for the original GeoJSON file which I modified to match the area keys in the Maven dataset. The results show that prices increase towards the city centre, with Elysee having the highest average price.

Next I wanted to understand the number of properties listed in each neighborhood, and how popular they are, so I can estimate which neighborhoods are driving the most revenue. For this I used the secondary dataset Reviews.csv which contains multiple review dates for each unique listing_id, which I used to join the tables.

I performed two joins:

  1. I grouped the reviews data by listing_id with a count of review_id, then left joined it to my filtered paris_listings data frame. This gave me a total_reviews value for each property.
  2. I joined the paris_listings data frame onto the reviews table using an inner join. This enhanced the reviews data with listing attributes (e.g., property name, neighborhood) whilst filtering out any reviews not relevant to Paris.

This enabled me to gauge the popularity of each neighborhood and property based on the number of reviews it has received:

undefinedThis shows that although Elysee has the highest average price, it has the fewest properties and the lowest number of reviews. The neighborhoods Buttes-Montmartre and Popincourt are a lot more popular!

To understand this further I analyzed the types of property in each neighborhood by dwelling size, and price bracket:

undefinedThis shows most properties sleep 2 or 4 people, in the €50-100 per night price bracket, with the highest concentration in Buttes-Montmartre and Popincourt. It also shows that these properties are the most popular, receiving many more reviews than the larger, high price properties.

In 2020 AirBnB moved to a new 15% fee structure (https://www.uplisting.io/blog/guide-to-airbnb-service-fees) applying this percentage to the listing price data, multiplied by the number of reviews can give an estimate of the revenue generated:

undefinedThis suggests that these properties are the key revenue drivers for AirBnB in Paris, and the revised choropleth map shows these are located around the fringe of the city centre.

EDA Conclusions: the majority of customers are looking for a place that sleeps 2 people, for €50-100 per night, on the outskirts of the more expensive neighborhoods. 4 person dwellings are also popular, suggesting that many visitors could be couples or pairs of couples looking for a cheap place to stay while visiting the city.

Step 3: Intervention Analysis - Effects of the 2015 Permit Regulations

The city of Paris introduced permit regulations in 2015 in an effort to curb the effects of holiday rentals on local housing prices. These regulations require property owners to register their rental properties and place restrictions on how often they can be rented out.

The regulations have clearly had a significant effect on the number of new hosts registering with AirBnB, which has stunted projected growth in the city. Analysis of average prices over this timeframe shows negligible effect on the two most popular neighborhoods, whilst prices in the higher cost areas appear to stabilize after the introduction:

undefinedAnalysis of total number of reviews, and average reviews per property indicate the changes have had no effect on consumer demand. AirBnB has continued to show strong growth in the city, up until the Covid 19 pandemic in 2020:

undefinedDiscounting 2020-21, the fact that that average reviews per property continues to rise whilst the cumulative number of properties plateaus, suggests that demand is starting to outweigh supply for AirBnB in the city. Economically, this has the effect of driving up prices which closes the gap between AirBnB and the traditional hospitality market - hotels. Given that ~67% of reviews are for <€100 per night properties, AirBnB customers are clearly looking for a cheap deal, and the company could lose market share if prices increase too much relative to the competition.

In addition, because the permit regulations limit the number of available nights per property, AirBnB could soon reach market saturation in the city.

Key Takeaways & Recommendations:

The 2015 regulations were bad news for AirBnB in Paris. They have significantly stunted growth projections by reducing the number of new property registrations:

  • Paris continues to grow in popularity for AirBnB, but most customers want cheap rentals at <€100 per night, so leadership need to mitigate the effects of low supply/high demand, or risking losing market share to hotels.
  • Revising fee structures is recommended, to increase the revenue earned by hosts with minimal impact on end consumer prices. This means lower margins for AirBnB, but maintained market share. Note: the 2020 fee revisions did exactly this.
  • To continue growth, AirBnB should focus on establishing and promoting new locations where market saturation is not an issue. Advertising and marketing campaigns should emphasize the benefits of AirBnB over the traditional hospitality industry (e.g., self catering, whole apartments) to reduce the price sensitivity of customers. Some normalization between AirBnB and hotel prices is inevitable.

Assumptions made:

  • Outliers were due to data errors, and their removal will have negligible effects on results.
  • Most customers leave a review, so the number of reviews can be used as a measure of popularity.
  • The 15% fee structure introduced in 2020 can give a representative revenue calculation for rentals placed before this.

Additional project images

Discussion and feedback(3 comments)
Chris Dutton
Chris Dutton
about 1 month ago
Outstanding work on this Vince! Absolutely loved reading your approach and breakdown, and the end result is really sharp 💪

Luis Alberto Méndez Jiménez
Luis Alberto Méndez Jiménez
about 1 month ago
really looks great!!

Simone Gachette
Simone Gachette
24 days ago
Interesting readand visually pleasing. As a beginner made the balance beteen text and visuals attracted me. Nice example to follow.
2000 characters remaining