Datasets
The London listings file
What nightly price should a London holiday rental quote, given only the facts recorded about the property before anyone books it?
The file, and the notebooks that read it
data
folder beside the notebook. Every notebook reads data/london.csv
and is run from its own folder.What this data answers
It is a cross-sectional benchmark: what comparable listings are quoting. It is not the revenue the property will earn, not its occupancy, and not the price that would maximise either.
Dataset overview
| Question | What nightly price should a London holiday rental quote, given only the facts recorded about the property before anyone books it? |
| Observation | One listing, as advertised in the snapshot of 19 June 2026. |
| Target | price. Quoted price per night, in pounds. |
| Inputs | guests, bedrooms, beds, min_nights, room_type, borough |
| Size | 54,636 rows and 11 columns. |
| Held back | listing_id, host_id, identifiers, not information about the property; stay_nights, describes the quote window rather than the listing. |
How the rows are divided
The division is by host, not by row. A host with twenty listings prices them in a recognisable way, so a random split would let the same pricing habit sit on both sides of the test and make it too easy. Each host is sent to one group by a hash of the host identifier, so no host appears in two groups and the allocation is identical on every machine without needing a seed.
| Group | Rows | What you may do with it |
|---|---|---|
fitting | 32,749 | estimate baselines and coefficients |
checking | 11,063 | compare finished models, once each |
final | 10,824 | opened once, after every choice is frozen |
Data dictionary
Every column in london.csv. The
fourth column is the one to read before modelling: a variable that is not
known when the prediction is needed cannot be used, however well it
predicts.
| Column | Type | What it means | When is this known? |
|---|---|---|---|
listing_id | text id | Inside Airbnb identifier for the listing. | Assigned by the platform. Not information about the property. |
host_id | text id | Identifier for the host. One host may hold many listings. | Assigned by the platform. Used to divide the data, never as an input. |
split | category | fitting, checking, or final. See the split note above. | Added for this course. Not part of the published data. |
room_type | category | Entire home/apt, Private room, Shared room, or Hotel room. | Set by the host when the listing is published. |
borough | category | London borough. 33 levels. | Fixed by where the property is. |
guests | whole number | Guests the listing accommodates, 1 to 16. | Set by the host when the listing is published. |
bedrooms | number | Bedrooms. Missing for 12,367 listings. | Set by the host. Left blank by some. |
beds | number | Beds. Missing for 1,274 listings. | Set by the host. Left blank by some. |
min_nights | number | Shortest stay the host accepts, in nights. Missing for 2 listings. | Set by the host when the listing is published. |
stay_nights | whole number | Length of the quoted stay, 1 to 7 nights. | A property of the price quote, not of the listing. |
price | number, GBP (target) | Quoted price per night, in pounds. | Returned with the quote. This is the thing being predicted. |
Source and preparation
The source is Inside Airbnb, London detailed listings, snapshot of 19 June 2026, released under CC BY 4.0. Inside Airbnb asks that its data be used for teaching and analysis and not redistributed further.
The download holds 92,638 rows. A listing is kept when it passes six checks, declared before any model was fitted and applied in the order below. Three of them act on the same rows and are shown together. Nothing else is altered: the values are the published ones.
| Step | Rows left | Why |
|---|---|---|
| Downloaded rows | 92,638 | |
| From the London city scrape | 61,587 | removes rows collected under other city scrapes |
| Marked as available | 60,993 | a withdrawn listing has no live price |
| Price between GBP 20 and GBP 1,000; 1 to 16 guests; host recorded | 58,060 | trims the extreme tail and rows with no host |
| Quoted stay of 1 to 7 nights | 54,636 | keeps short stays, which price differently from monthly lets |
The price is the total quote for the sample booking window divided by the number of nights, so it includes cleaning and service fees and sits above the headline nightly rate a guest first sees.
What this data does not establish
- The price is a quote, not a transaction. Nobody necessarily paid it.
- The quote dates are not identical across listings. Two similar flats priced for different July weekends differ for reasons the file does not record.
- Predicting a comparable asking price is not estimating how changing a price would change bookings or revenue. That question needs a different design.
- The frame is not London. It is the listings that passed the six checks, and any claim describes that group.
Where it is used
- Day 1b. Day 1b uses it for the first fitted rule and the first residuals.
- Day 2. Day 2 fits the baseline, the capacity line and the compact six-input model on it.
- Day 3. Day 3 grows trees, forests and boosting on it, and opens the sealed group once.
- Day 4. Day 4 withholds the price and groups the listings by their physical facts alone.