The Budget Traveler's Data Guide to Southeast Asia
The skills the author demoed here can be learned through taking Data Science with Machine Learning bootcamp with NYC Data Science Academy.
LinkedIn | GitHub
I spent the year 2019 on the road. One year of solo-travel without plans or expectations - just a thirst for adventure and (hopefully) enough savings to get me through. I stored all my data to create this guide.
For most of the year you could find me somewhere in Southeast Asia, where a savvy traveler can enjoy a wide variety of exotic experiences for a budget-friendly price. For most nights of that year, you could find me sharing a room with fellow budget-conscious travelers in a bunk-bed style hostel.
While they vary in quality and price, hostels are the centerpieces of the long-term traveler’s ability to keep the trip rolling. Not only to get a good night’s sleep for less than $10 a night, but even more so to place yourself in community, making friends and memories the whole way through.
Fresh out of the budget-traveler mindset and newly armed with web-scraping skills, I decided to peel back the curtain on Hostelworld, the go-to site for booking hostels around the world. Specifically, I wanted insight on the region where I spent the last year. What are Southeast Asia’s best budget-traveler destinations?
Scraping the Data
I scraped the data using Scrapy from Hostelworld.com on May 8, 2020 (the date is important because prices may change throughout the year).
The observations include every listed property from the top 5 destinations in each of the 11 Southeast Asian nations, and also Hong Kong. The reason for including Hong Kong is that it often serves as a connector airport for flights between Southeast Asia and the rest of the world, which often allows travelers to loop the fast-paced metropolis into a longer backpacking trip.
The fields collected on each hostel include price, overall rating, component ratings, property description, and basic identifying information for each property.
Hostelworld's website is navigated by searching the city you want to visit. The search pages had 20 hostels per page, and the information I wanted to scrape was split out between each hostel's tab on the search page and each hostel's full listing page. Therefore, I had to write a script that would start on a city's first search page, scrape the fields I want from that page, repeat for however many pages of hostels are listed (for instance, Bangkok had 12 pages while Hanoi had 6), and then enter each hostel's full listing page to scrape the remaining fields.
This process was not without its roadblocks, including the fact that Hostelworld (at the time of my scraping) uses two different structures for search pages. One of the structures seems to use static data that is easily grabbed by Scrapy. The other seems to use fluid, live-loading tiles where data is loaded from some inaccessible backend framework - this structure would not allow scraping with Scrapy, and instead I would have had to use a tool more apt at handling live-loading websites like Selenium. Once I discovered this, I had to modify the script to always divert to the static version of the search pages.
Another issue on the search pages was that when grabbing a list of a particular field, one for each entry on the search page, some cities' search pages pulled in extra arbitrary items. This was likely also due to the different site structures between cities. In order to account for this, I modified the script with an if-else statement that identified which scenario I was dealing with on each page, and deleted the appropriate amount of items.
Once these and other minor webscraping issues were dealt with, I had data on over 2,500 hostels across Southeast Asia (more than a few of which I recognized from my travels).
Creating the Value Score
In order to answer my research question, I needed a metric that spoke directly to the budget-traveler's needs - great experiences for low prices. Enter Value Score: Overall Rating divided by Price Per Night.
The chart above shows the Top 11 hostels by value score in Southeast Asia, as posted on Hostelworld on May 8, 2020. Taking the top ranked property as an example, we see an overall rating of 9/10 (coming from 198 reviews), with the cheapest bed costing $3 per night. That calculates to a Value Score of 3.000, and a budget-traveler’s dream come true.
Budget Score Data Analysis
Digging deeper on the Value Score, we can see how things settle out by country.
On the left of the two charts above (Price by Country), Singapore and Hong Kong show much higher average prices per night than any other destination. Vietnam, Laos and Cambodia come through with the lowest average prices. Moving to the right (Value by Country), we see what’s largely an inverse of the Price chart. Singapore and Hong Kong have the worst average value, while Vietnam, Laos and Cambodia have the best.
In most worlds of products and services, we associate higher prices with higher quality. But the story told by these charts suggest that the hostel community might not play by the same rules.
Next I sorted all properties by Value Score, and made subsets of the Top 250 and Bottom 250. We can imagine that this is for the picky backpacker who only wants to get the best value for their money. All the best value hostels and none of the worst.
The charts below reflect the following questions:
For each country, what percent of this country’s hostels appear in the Top/Bottom 250 by Value?
How does that compare to that country’s percent of hostels in the full dataset?
In other words, the blue bar asks what percent of the Top/Bottom 250 are in each country; while the green bar asks what percent of all hostels are in each country.
In a perfect, evenly distributed world, we would expect each country’s blue bar and green bar to be the same height. If Thailand has 36% of all hostels in Southeast Asia, it should have 36% of all Top Value hostels in Southeast Asia. However, a perfect, evenly distributed world would not be much fun for data analysts.
Instead we see a few countries that stand out for disproportionately high numbers of high and low value hostels. We’ll focus on the high-value subset, since our goal is to find the best budget-traveler destinations.
Looking for blue bars towering over green bars, the trio from earlier analysis emerges again. Vietnam has over 30% of the hostels in the Top Value list, with only 19% of all hostels. Cambodia has 15% of the Top Value hostels, with 6% of all hostels. Laos has 6% of the Top Value list, with 3% of all hostels.
Vietnam, Laos and Cambodia are not only showing high average Value Scores, they’re also showing dense populations of high-value hostels.
The Backpacker Trio
With our attention drawn to Vietnam, Laos and Cambodia, I can start to add in some domain knowledge. These three countries are the easternmost three in continental Southeast Asia. Land-border crossings from one to the next are easy and cheap. For example, a bus from Ho Chi Minh City, Vietnam to Phnom Penh, Cambodia will cost you $8 and take you 6 hours. In the context of 6 months or more on the road, that’s one of the best border crossings you’ll find. Further, they each have rather friendly visa laws, allowing for long stays and multiple entries.
I filtered for hostels in our newly identified backpacker trio to take one more look at the data. With Price Per Night on the x-axis and Overall Rating on the y-axis, the plot below represents every hostel across each of these countries combined. The darkest blue represents the densest concentration in this space.
The story of this plot confirms the story as a whole. In Vietnam, Laos and Cambodia, an average Price of about $5.50 per night will get you an average Rating of 9/10 on Hostelworld.
Combine that with the ancient wonder of Angkor Wat, the world-class cuisine of Vietnam’s bustling cities, the untouched beauty of Laotian nature, and so much more to be discovered, and you’ve found yourself in budget-traveler heaven.