From b6eebc425bc6ce812f10c8c9037da5ede3d3e3e9 Mon Sep 17 00:00:00 2001 From: Christos Vlachakis Date: Mon, 8 Dec 2025 12:13:17 +0100 Subject: [PATCH 1/5] Add files via upload --- data/raw/Travel details dataset.csv | 140 ++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 data/raw/Travel details dataset.csv diff --git a/data/raw/Travel details dataset.csv b/data/raw/Travel details dataset.csv new file mode 100644 index 00000000..f3c1b7e5 --- /dev/null +++ b/data/raw/Travel details dataset.csv @@ -0,0 +1,140 @@ +Trip ID,Destination,Start date,End date,Duration (days),Traveler name,Traveler age,Traveler gender,Traveler nationality,Accommodation type,Accommodation cost,Transportation type,Transportation cost +1,"London, UK",5/1/2023,5/8/2023,7,John Smith,35,Male,American,Hotel,1200,Flight,600 +2,"Phuket, Thailand",6/15/2023,6/20/2023,5,Jane Doe,28,Female,Canadian,Resort,800,Flight,500 +3,"Bali, Indonesia",7/1/2023,7/8/2023,7,David Lee,45,Male,Korean,Villa,1000,Flight,700 +4,"New York, USA",8/15/2023,8/29/2023,14,Sarah Johnson,29,Female,British,Hotel,2000,Flight,1000 +5,"Tokyo, Japan",9/10/2023,9/17/2023,7,Kim Nguyen,26,Female,Vietnamese,Airbnb,700,Train,200 +6,"Paris, France",10/5/2023,10/10/2023,5,Michael Brown,42,Male,American,Hotel,1500,Flight,800 +7,"Sydney, Australia",11/20/2023,11/30/2023,10,Emily Davis,33,Female,Australian,Hostel,500,Flight,1200 +8,"Rio de Janeiro, Brazil",1/5/2024,1/12/2024,7,Lucas Santos,25,Male,Brazilian,Airbnb,900,Flight,600 +9,"Amsterdam, Netherlands",2/14/2024,2/21/2024,7,Laura Janssen,31,Female,Dutch,Hotel,1200,Train,200 +10,"Dubai, United Arab Emirates",3/10/2024,3/17/2024,7,Mohammed Ali,39,Male,Emirati,Resort,2500,Flight,800 +11,"Cancun, Mexico",4/1/2024,4/8/2024,7,Ana Hernandez,27,Female,Mexican,Hotel,1000,Flight,500 +12,"Barcelona, Spain",5/15/2024,5/22/2024,7,Carlos Garcia,36,Male,Spanish,Airbnb,800,Train,100 +13,"Honolulu, Hawaii",6/10/2024,6/18/2024,8,Lily Wong,29,Female,Chinese,Resort,3000,Flight,1200 +14,"Berlin, Germany",7/1/2024,7/10/2024,9,Hans Mueller,48,Male,German,Hotel,1400,Flight,700 +15,"Marrakech, Morocco",8/20/2024,8/27/2024,7,Fatima Khouri,26,Female,Moroccan,Riad,600,Flight,400 +16,"Edinburgh, Scotland",9/5/2024,9/12/2024,7,James MacKenzie,32,Male,Scottish,Hotel,900,Train,150 +17,Paris,9/1/2023,9/10/2023,9,Sarah Johnson,30,Female,American,Hotel,$900 ,Plane,$400 +18,Bali,8/15/2023,8/25/2023,10,Michael Chang,28,Male,Chinese,Resort,"$1,500 ",Plane,$700 +19,London,7/22/2023,7/28/2023,6,Olivia Rodriguez,35,Female,British,Hotel,"$1,200 ",Train,$150 +20,Tokyo,10/5/2023,10/15/2023,10,Kenji Nakamura,45,Male,Japanese,Hotel,"$1,200 ",Plane,$800 +21,New York,11/20/2023,11/25/2023,5,Emily Lee,27,Female,American,Airbnb,$600 ,Bus,$100 +22,Sydney,12/5/2023,12/12/2023,7,James Wilson,32,Male,Australian,Hotel,"$1,000 ",Plane,$600 +23,Rome,11/1/2023,11/8/2023,7,Sofia Russo,29,Female,Italian,Airbnb,$700 ,Train,$80 +24,Bangkok,9/15/2023,9/23/2023,8,Raj Patel,40,Male,Indian,Hostel,$400 ,Plane,$500 +25,Paris,12/22/2023,12/28/2023,6,Lily Nguyen,24,Female,Vietnamese,Hotel,"$1,400 ",Train,$100 +26,Hawaii,8/1/2023,8/10/2023,9,David Kim,34,Male,Korean,Resort,"$2,000 ",Plane,$800 +27,Barcelona,10/20/2023,10/28/2023,8,Maria Garcia,31,Female,Spanish,Hotel,"$1,100 ",Train,$150 +28,Japan,5/10/2022,5/18/2022,8,Alice Smith,30,Female,American,Hotel,$800 ,Plane,$500 +29,Thailand,6/15/2022,6/22/2022,7,Bob Johnson,45,Male,Canadian,Hostel,$200 ,Train,$150 +30,France,7/2/2022,7/11/2022,9,Charlie Lee,25,Male,Korean,Airbnb,$600 ,Car rental,$300 +31,Australia,8/20/2022,9/2/2022,13,Emma Davis,28,Female,British,Hotel,"$1,000 ",Car rental,$500 +32,Brazil,9/5/2022,9/14/2022,9,Olivia Martin,33,Female,Australian,Hostel,$150 ,Bus,$50 +33,Greece,10/12/2022,10/20/2022,8,Harry Wilson,20,Male,American,Airbnb,$400 ,Plane,$600 +34,Egypt,11/8/2022,11/15/2022,7,Sophia Lee,37,Female,Canadian,Hotel,$700 ,Train,$100 +35,Mexico,1/5/2023,1/15/2023,10,James Brown,42,Male,British,Airbnb,$500 ,Plane,$800 +36,Italy,2/14/2023,2/20/2023,6,Mia Johnson,31,Female,American,Hostel,$180 ,Train,$120 +37,Spain,3/23/2023,3/31/2023,8,William Davis,27,Male,Korean,Hotel,$900 ,Car rental,$400 +38,Canada,4/19/2023,4/26/2023,7,Amelia Brown,38,Female,Australian,Airbnb,$350 ,Bus,$75 +39,"Paris, France",6/12/2022,6/19/2022,7,Mia Johnson,25,Female,American,Hotel,1400,Plane,600 +40,"Sydney, Australia",1/2/2023,1/9/2023,7,Adam Lee,33,Male,Canadian,Airbnb,800,Train,150 +41,"Tokyo, Japan",12/10/2022,12/18/2022,8,Sarah Wong,28,Female,Chinese,Hostel,500,Plane,900 +42,"Cancun, Mexico",7/1/2023,7/8/2023,7,John Smith,45,Male,American,Resort,2200,Plane,800 +43,"Rio de Janeiro, Brazil",11/20/2022,11/27/2022,7,Maria Silva,30,Female,Brazilian,Hotel,1200,Plane,700 +44,"London, UK",3/5/2023,3/12/2023,7,Peter Brown,55,Male,British,Airbnb,900,Train,100 +45,"Barcelona, Spain",8/18/2023,8/25/2023,7,Emma Garcia,27,Female,Spanish,Hostel,600,Plane,600 +46,"New York City, USA",9/15/2022,9/22/2022,7,Michael Davis,41,Male,American,Hotel,1500,Plane,500 +47,"Bangkok, Thailand",5/1/2023,5/7/2023,6,Nina Patel,29,Female,Indian,Airbnb,500,Bus,50 +48,"Vancouver, Canada",7/10/2022,7/17/2022,7,Kevin Kim,24,Male,Korean,Hostel,400,Train,150 +49,"Amsterdam, Netherlands",6/20/2023,6/28/2023,8,Laura van den Berg,31,Female,Dutch,Hotel,1100,Plane,700 +50,"Paris, France",8/15/2023,8/22/2023,7,Jennifer Nguyen,31,Female,Canadian,Hotel,"$1,200 ",Train,$300 +51,"Tokyo, Japan",10/10/2023,10/20/2023,10,David Kim,25,Male,American,Hostel,$500 ,Bus,$100 +52,"Sydney, AUS",11/5/2023,11/12/2023,7,Rachel Lee,27,Female,South Korean,Airbnb,$900 ,Car rental,$200 +53,"New York, USA",12/24/2023,12/31/2023,7,Jessica Wong,28,Female,Canadian,Hotel,"$1,400 ",Flight,$800 +54,"Rio de Janeiro, Brazil",1/15/2024,1/24/2024,9,Felipe Almeida,30,Male,Brazilian,Airbnb,$800 ,Train,$150 +55,"Bangkok, Thailand",2/1/2024,2/9/2024,8,Nisa Patel,23,Female,Indian,Hostel,$400 ,Bus,$50 +56,"London, UK",3/15/2024,3/23/2024,8,Ben Smith,35,Male,British,Hotel,"$1,000 ",Train,$200 +57,"Barcelona, Spain",4/5/2024,4/13/2024,8,Laura Gomez,29,Female,Spanish,Airbnb,$700 ,Car rental,$250 +58,"Seoul, South Korea",5/10/2024,5/18/2024,8,Park Min Woo,27,Male,South Korean,Hostel,$500 ,Subway,$20 +59,"Los Angeles, USA",6/20/2024,6/27/2024,7,Michael Chen,26,Male,Chinese,Hotel,"$1,200 ",Car rental,$300 +60,"Rome, Italy",7/15/2024,7/23/2024,8,Sofia Rossi,33,Female,Italian,Airbnb,$800 ,Train,$100 +61,Paris,7/12/2022,7/18/2022,6,Rachel Sanders,35,Female,American,Hotel,1200,Plane,800 +62,Tokyo,9/3/2022,9/10/2022,7,Kenji Nakamura,28,Male,Japanese,Hostel,400,Train,300 +63,Cape Town,1/7/2023,1/16/2023,9,Emily Watson,29,Female,British,Vacation rental,800,Car rental,200 +64,Sydney,6/23/2023,6/29/2023,6,David Lee,43,Male,Australian,Hotel,1500,Plane,1200 +65,Barcelona,8/18/2023,8/25/2023,7,Ana Rodriguez,31,Female,Spanish,Vacation rental,900,Plane,700 +66,Bali,2/1/2024,2/8/2024,7,Tom Wilson,27,Male,American,Resort,2200,Plane,1000 +67,Paris,5/6/2024,5/12/2024,6,Olivia Green,39,Female,French,Hotel,1100,Train,200 +68,New York,7/20/2024,7/26/2024,6,James Chen,25,Male,American,Vacation rental,1000,Plane,800 +69,Bangkok,9/8/2024,9/16/2024,8,Lila Patel,33,Female,Indian,Hostel,300,Plane,700 +70,Rome,2/14/2025,2/20/2025,6,Marco Rossi,41,Male,Italian,Hotel,1300,Train,100 +71,Bali,5/21/2025,5/29/2025,8,Sarah Brown,37,Female,British,Resort,1800,Plane,1000 +72,,,,,,,,,,,, +73,"Bali, Indonesia",8/5/2022,8/12/2022,7,Sarah Lee,35,Female,South Korean,Resort,500 USD,Plane,800 USD +74,"Tokyo, Japan",1/1/2023,1/9/2023,8,Alex Kim,29,Male,American,Hotel,1000 USD,Train,200 USD +75,"Cancun, Mexico",4/15/2023,4/22/2023,7,Maria Hernandez,42,Female,Mexican,Resort,800 USD,Plane,500 USD +76,"Paris, France",6/7/2023,6/14/2023,7,John Smith,46,Male,British,Hotel,1200 USD,Plane,700 USD +77,"Cape Town, SA",9/1/2023,9/10/2023,9,Mark Johnson,31,Male,South African,Guesthouse,400 USD,Car,300 USD +78,"Bali, Indonesia",11/12/2023,11/19/2023,7,Amanda Chen,25,Female,Taiwanese,Resort,600 USD,Plane,700 USD +79,"Sydney, Aus",2/5/2024,2/12/2024,7,David Lee,38,Male,Australian,Hotel,900 USD,Plane,600 USD +80,"Bangkok, Thai",5/15/2024,5/22/2024,7,Nana Kwon,27,Female,Korean,Hotel,400 USD,Plane,400 USD +81,"New York, USA",8/20/2024,8/27/2024,7,Tom Hanks,60,Male,American,Hotel,1500 USD,Plane,1000 USD +82,"Phuket, Thai",1/1/2025,1/8/2025,7,Emma Watson,32,Female,British,Resort,700 USD,Plane,800 USD +83,"Rome, Italy",4/15/2025,4/22/2025,7,James Kim,41,Male,American,Hotel,100,, +84,Paris,6/15/2021,6/20/2021,6,John Smith,35,Male,American,Hotel,800 USD,Plane,500 USD +85,Tokyo,7/1/2021,7/10/2021,10,Sarah Lee,28,Female,Korean,Airbnb,500 USD,Train,300 USD +86,Bali,8/10/2021,8/20/2021,11,Maria Garcia,42,Female,Spanish,Resort,1200 USD,Plane,700 USD +87,Sydney,9/1/2021,9/10/2021,9,David Lee,45,Male,Australian,Hotel,900 USD,Plane,600 USD +88,New York,10/15/2021,10/20/2021,6,Emily Davis,31,Female,American,Airbnb,700 USD,Car rental,200 USD +89,London,11/20/2021,11/30/2021,11,James Wilson,29,Male,British,Hostel,300 USD,Plane,400 USD +90,Dubai,1/1/2022,1/8/2022,8,Fatima Ahmed,24,Female,Emirati,Hotel,1000 USD,Plane,800 USD +91,Bangkok,2/14/2022,2/20/2022,7,Liam Nguyen,26,Male,Vietnamese,Airbnb,400 USD,Train,100 USD +92,Rome,3/10/2022,3/20/2022,11,Giulia Rossi,30,Female,Italian,Hostel,200 USD,Plane,350 USD +93,Bali,4/15/2022,4/25/2022,11,Putra Wijaya,33,Male,Indonesian,Villa,1500 USD,Car rental,300 USD +94,Seoul,5/1/2022,5/10/2022,10,Kim Min-ji,27,Female,Korean,Hotel,800 USD,Train,150 USD +95,Paris,6/15/2022,6/20/2022,5,John Smith,35,Male,USA,Hotel,$500 ,Plane,$800 +96,Tokyo,9/1/2022,9/10/2022,9,Emily Johnson,28,Female,Canada,Airbnb,$400 ,Train,$200 +97,Sydney,11/23/2022,12/2/2022,9,David Lee,45,Male,South Korea,Hostel,$200 ,Plane,"$1,200 " +98,London,2/14/2023,2/19/2023,5,Sarah Brown,37,Female,UK,Hotel,$600 ,Plane,$700 +99,New York,5/8/2023,5/14/2023,6,Michael Wong,50,Male,China,Airbnb,$800 ,Car rental,$300 +100,Rome,8/20/2023,8/27/2023,7,Jessica Chen,31,Female,Taiwan,Hotel,$700 ,Plane,$900 +101,Bangkok,11/12/2023,11/20/2023,8,Ken Tanaka,42,Male,Japan,Hostel,$300 ,Train,$100 +102,Cape Town,1/6/2024,1/14/2024,8,Maria Garcia,27,Female,Spain,Airbnb,$500 ,Plane,"$1,500 " +103,Rio de Janeiro,4/3/2024,4/10/2024,7,Rodrigo Oliveira,33,Male,Brazil,Hotel,$900 ,Car rental,$400 +104,Bali,7/22/2024,7/28/2024,6,Olivia Kim,29,Female,South Korea,Villa,"$1,200 ",Plane,"$1,000 " +105,Amsterdam,10/10/2024,10/17/2024,7,Robert Mueller,41,Male,Germany,Hotel,$600 ,Train,$150 +106,Paris,5/15/2022,5/20/2022,5,John Smith,35,Male,USA,Hotel,1000,Plane,800 +107,Tokyo,9/1/2022,9/10/2022,9,Sarah Lee,28,Female,South Korea,Airbnb,800,Train,500 +108,New York,6/20/2022,6/25/2022,5,Michael Wong,42,Male,Hong Kong,Hotel,1200,Car rental,200 +109,Bali,8/12/2022,8/20/2022,8,Lisa Chen,30,Female,Taiwan,Resort,1500,Plane,1200 +110,Sydney,7/1/2022,7/10/2022,9,David Kim,26,Male,Canada,Hostel,300,Plane,900 +111,London,6/10/2022,6/15/2022,5,Emily Wong,38,Female,United Kingdom,Hotel,900,Train,150 +112,Phuket,9/5/2022,9/12/2022,7,Mark Tan,45,Male,Singapore,Villa,2000,Plane,700 +113,Rome,5/1/2022,5/8/2022,7,Emma Lee,31,Female,Italy,Hotel,1100,Train,250 +114,Santorini,7/15/2022,7/22/2022,7,George Chen,27,Male,Greece,Airbnb,1000,Ferry,150 +115,Dubai,8/25/2022,8/30/2022,5,Sophia Kim,29,Female,United Arab Emirates,Hotel,1500,Car rental,300 +116,Phnom Penh,9/10/2022,9/15/2022,5,Alex Ng,33,Male,Cambodia,Hostel,200,Plane,500 +117,"Tokyo, Japan",2/5/2022,2/14/2022,9,Alice Smith,32,Female,American,Hotel,1000,Plane,700 +118,"Paris, France",3/15/2022,3/22/2022,7,Bob Johnson,47,Male,Canadian,Hotel,1200,Train,500 +119,"Sydney, Aus",5/1/2022,5/12/2022,11,Cindy Chen,26,Female,Chinese,Airbnb,800,Plane,1000 +120,"Rome, Italy",6/10/2022,6/17/2022,7,David Lee,38,Male,Korean,Hotel,900,Train,400 +121,"Bali, Indonesia",7/20/2022,7/30/2022,10,Emily Kim,29,Female,Korean,Hostel,500,Plane,800 +122,"Cancun, Mexico",8/8/2022,8/16/2022,8,Frank Li,41,Male,American,Hotel,1300,Plane,600 +123,"Athens, Greece",9/20/2022,9/30/2022,10,Gina Lee,35,Female,Korean,Airbnb,700,Plane,900 +124,"Tokyo, Japan",10/5/2022,10/13/2022,8,Henry Kim,24,Male,Korean,Hotel,1200,Plane,700 +125,"Sydney, Aus",11/11/2022,11/21/2022,10,Isabella Chen,30,Female,Chinese,Airbnb,900,Plane,1000 +126,"Paris, France",12/24/2022,1/1/2023,8,Jack Smith,28,Male,American,Hostel,400,Plane,700 +127,"Bali, Indonesia",2/10/2023,2/18/2023,8,Katie Johnson,33,Female,Canadian,Hotel,800,Plane,800 +128,,,,,,,,,,,, +129,"Paris, France",5/1/2023,5/7/2023,6,John Doe,35,Male,American,Hotel,5000,Airplane,2500 +130,"Tokyo, Japan",5/15/2023,5/22/2023,7,Jane Smith,28,Female,British,Airbnb,7000,Train,1500 +131,"Cape Town, South Africa",6/1/2023,6/10/2023,9,Michael Johnson,45,Male,South African,Hostel,3000,Car,2000 +132,"Sydney, Australia",6/15/2023,6/21/2023,6,Sarah Lee,31,Female,Australian,Hotel,6000,Airplane,3000 +133,"Rome, Italy",7/1/2023,7/8/2023,7,David Kim,42,Male,Korean,Airbnb,4000,Train,1500 +134,"New York City, USA",7/15/2023,7/22/2023,7,Emily Davis,27,Female,American,Hotel,8000,Airplane,2500 +135,"Rio de Janeiro, Brazil",8/1/2023,8/10/2023,9,Jose Perez,37,Male,Brazilian,Hostel,2500,Car,2000 +136,"Vancouver, Canada",8/15/2023,8/21/2023,6,Emma Wilson,29,Female,Canadian,Hotel,5000,Airplane,3000 +137,"Bangkok, Thailand",9/1/2023,9/8/2023,7,Ryan Chen,34,Male,Chinese,Hostel,2000,Train,1000 +138,"Barcelona, Spain",9/15/2023,9/22/2023,7,Sofia Rodriguez,25,Female,Spanish,Airbnb,6000,Airplane,2500 +139,"Auckland, New Zealand",10/1/2023,10/8/2023,7,William Brown,39,Male,New Zealander,Hotel,7000,Train,2500 From 39c7419abf7472fadf0b67c9f7a07274a8756ef4 Mon Sep 17 00:00:00 2001 From: Christos Vachakis Date: Mon, 8 Dec 2025 17:17:09 +0100 Subject: [PATCH 2/5] christos branch Monday commit --- notebooks/travel_trip_data_christos.ipynb | 2957 +++++++++++++++++++++ 1 file changed, 2957 insertions(+) create mode 100644 notebooks/travel_trip_data_christos.ipynb diff --git a/notebooks/travel_trip_data_christos.ipynb b/notebooks/travel_trip_data_christos.ipynb new file mode 100644 index 00000000..52a28fab --- /dev/null +++ b/notebooks/travel_trip_data_christos.ipynb @@ -0,0 +1,2957 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "09d348ff-c86d-47fe-a0a5-88cb5f3a451c", + "metadata": {}, + "source": [ + "# Travel trip data project" + ] + }, + { + "cell_type": "markdown", + "id": "956ed231-de07-4ebf-ba4c-8de9400b8a3b", + "metadata": {}, + "source": [ + "## Loading the CSV file" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "b6ca0042-45bd-4e21-ac98-14bfa57c2f32", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Trip IDDestinationStart dateEnd dateDuration (days)Traveler nameTraveler ageTraveler genderTraveler nationalityAccommodation typeAccommodation costTransportation typeTransportation cost
01London, UK5/1/20235/8/20237.0John Smith35.0MaleAmericanHotel1200Flight600
12Phuket, Thailand6/15/20236/20/20235.0Jane Doe28.0FemaleCanadianResort800Flight500
23Bali, Indonesia7/1/20237/8/20237.0David Lee45.0MaleKoreanVilla1000Flight700
34New York, USA8/15/20238/29/202314.0Sarah Johnson29.0FemaleBritishHotel2000Flight1000
45Tokyo, Japan9/10/20239/17/20237.0Kim Nguyen26.0FemaleVietnameseAirbnb700Train200
56Paris, France10/5/202310/10/20235.0Michael Brown42.0MaleAmericanHotel1500Flight800
67Sydney, Australia11/20/202311/30/202310.0Emily Davis33.0FemaleAustralianHostel500Flight1200
78Rio de Janeiro, Brazil1/5/20241/12/20247.0Lucas Santos25.0MaleBrazilianAirbnb900Flight600
89Amsterdam, Netherlands2/14/20242/21/20247.0Laura Janssen31.0FemaleDutchHotel1200Train200
910Dubai, United Arab Emirates3/10/20243/17/20247.0Mohammed Ali39.0MaleEmiratiResort2500Flight800
\n", + "
" + ], + "text/plain": [ + " Trip ID Destination Start date End date \\\n", + "0 1 London, UK 5/1/2023 5/8/2023 \n", + "1 2 Phuket, Thailand 6/15/2023 6/20/2023 \n", + "2 3 Bali, Indonesia 7/1/2023 7/8/2023 \n", + "3 4 New York, USA 8/15/2023 8/29/2023 \n", + "4 5 Tokyo, Japan 9/10/2023 9/17/2023 \n", + "5 6 Paris, France 10/5/2023 10/10/2023 \n", + "6 7 Sydney, Australia 11/20/2023 11/30/2023 \n", + "7 8 Rio de Janeiro, Brazil 1/5/2024 1/12/2024 \n", + "8 9 Amsterdam, Netherlands 2/14/2024 2/21/2024 \n", + "9 10 Dubai, United Arab Emirates 3/10/2024 3/17/2024 \n", + "\n", + " Duration (days) Traveler name Traveler age Traveler gender \\\n", + "0 7.0 John Smith 35.0 Male \n", + "1 5.0 Jane Doe 28.0 Female \n", + "2 7.0 David Lee 45.0 Male \n", + "3 14.0 Sarah Johnson 29.0 Female \n", + "4 7.0 Kim Nguyen 26.0 Female \n", + "5 5.0 Michael Brown 42.0 Male \n", + "6 10.0 Emily Davis 33.0 Female \n", + "7 7.0 Lucas Santos 25.0 Male \n", + "8 7.0 Laura Janssen 31.0 Female \n", + "9 7.0 Mohammed Ali 39.0 Male \n", + "\n", + " Traveler nationality Accommodation type Accommodation cost \\\n", + "0 American Hotel 1200 \n", + "1 Canadian Resort 800 \n", + "2 Korean Villa 1000 \n", + "3 British Hotel 2000 \n", + "4 Vietnamese Airbnb 700 \n", + "5 American Hotel 1500 \n", + "6 Australian Hostel 500 \n", + "7 Brazilian Airbnb 900 \n", + "8 Dutch Hotel 1200 \n", + "9 Emirati Resort 2500 \n", + "\n", + " Transportation type Transportation cost \n", + "0 Flight 600 \n", + "1 Flight 500 \n", + "2 Flight 700 \n", + "3 Flight 1000 \n", + "4 Train 200 \n", + "5 Flight 800 \n", + "6 Flight 1200 \n", + "7 Flight 600 \n", + "8 Train 200 \n", + "9 Flight 800 " + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "travel_trip_data = \"../data/raw/Travel details dataset.csv\"\n", + "travel_trip_christos_df = pd.read_csv(travel_trip_data, encoding='ISO-8859-1')\n", + "travel_trip_christos_df.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "fab15d20-64fb-4aa3-ba38-53abaa1b6c9d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Trip ID', 'Destination', 'Start date', 'End date',\n", + " 'Duration (days)', 'Traveler name', 'Traveler age', 'Traveler gender',\n", + " 'Traveler nationality', 'Accommodation type', 'Accommodation cost',\n", + " 'Transportation type', 'Transportation cost'],\n", + " dtype='object')" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "1d77a53a-7fa4-4426-9b43-5eb7c171b8ee", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['trip_id', 'destination', 'start_date', 'end_date', 'duration_days',\n", + " 'traveler_name', 'traveler_age', 'traveler_gender',\n", + " 'traveler_nationality', 'accommodation_type', 'accommodation_cost',\n", + " 'transportation_type', 'transportation_cost'],\n", + " dtype='object')" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df.columns = travel_trip_christos_df.columns.str.replace(\"\", \"\", regex=False).str.replace(r\"[()]\", \"\", regex=True).str.strip(\")\").str.replace(\" \",\"_\").str.lower()\n", + "travel_trip_christos_df.columns " + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "abfddadd-f65d-4e66-9ed8-a703bbf1dd65", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
trip_iddestinationstart_dateend_dateduration_daystraveler_nametraveler_agetraveler_gendertraveler_nationalityaccommodation_typeaccommodation_costtransportation_typetransportation_cost
01London, UK5/1/20235/8/20237.0John Smith35.0MaleAmericanHotel1200Flight600
\n", + "
" + ], + "text/plain": [ + " trip_id destination start_date end_date duration_days traveler_name \\\n", + "0 1 London, UK 5/1/2023 5/8/2023 7.0 John Smith \n", + "\n", + " traveler_age traveler_gender traveler_nationality accommodation_type \\\n", + "0 35.0 Male American Hotel \n", + "\n", + " accommodation_cost transportation_type transportation_cost \n", + "0 1200 Flight 600 " + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df.head(1)" + ] + }, + { + "cell_type": "markdown", + "id": "1727b20c-d279-4e6a-b0a7-2aa6a3c6a753", + "metadata": {}, + "source": [ + "## Cleaning dataframe" + ] + }, + { + "cell_type": "markdown", + "id": "10bb170e-88ee-4070-b0c4-090eeb61e0fa", + "metadata": {}, + "source": [ + "### Starting with \"destination\"" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "aaeec699-0bfc-4b9a-9d9f-ced868221f38", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
trip_iddestinationstart_dateend_dateduration_daystraveler_nametraveler_agetraveler_gendertraveler_nationalityaccommodation_typeaccommodation_costtransportation_typetransportation_costdestination_citydestination_country
01London, UK5/1/20235/8/20237.0John Smith35.0MaleAmericanHotel1200Flight600LondonUK
12Phuket, Thailand6/15/20236/20/20235.0Jane Doe28.0FemaleCanadianResort800Flight500PhuketThailand
23Bali, Indonesia7/1/20237/8/20237.0David Lee45.0MaleKoreanVilla1000Flight700BaliIndonesia
34New York, USA8/15/20238/29/202314.0Sarah Johnson29.0FemaleBritishHotel2000Flight1000New YorkUSA
45Tokyo, Japan9/10/20239/17/20237.0Kim Nguyen26.0FemaleVietnameseAirbnb700Train200TokyoJapan
................................................
134135Rio de Janeiro, Brazil8/1/20238/10/20239.0Jose Perez37.0MaleBrazilianHostel2500Car2000Rio de JaneiroBrazil
135136Vancouver, Canada8/15/20238/21/20236.0Emma Wilson29.0FemaleCanadianHotel5000Airplane3000VancouverCanada
136137Bangkok, Thailand9/1/20239/8/20237.0Ryan Chen34.0MaleChineseHostel2000Train1000BangkokThailand
137138Barcelona, Spain9/15/20239/22/20237.0Sofia Rodriguez25.0FemaleSpanishAirbnb6000Airplane2500BarcelonaSpain
138139Auckland, New Zealand10/1/202310/8/20237.0William Brown39.0MaleNew ZealanderHotel7000Train2500AucklandNew Zealand
\n", + "

139 rows × 15 columns

\n", + "
" + ], + "text/plain": [ + " trip_id destination start_date end_date duration_days \\\n", + "0 1 London, UK 5/1/2023 5/8/2023 7.0 \n", + "1 2 Phuket, Thailand 6/15/2023 6/20/2023 5.0 \n", + "2 3 Bali, Indonesia 7/1/2023 7/8/2023 7.0 \n", + "3 4 New York, USA 8/15/2023 8/29/2023 14.0 \n", + "4 5 Tokyo, Japan 9/10/2023 9/17/2023 7.0 \n", + ".. ... ... ... ... ... \n", + "134 135 Rio de Janeiro, Brazil 8/1/2023 8/10/2023 9.0 \n", + "135 136 Vancouver, Canada 8/15/2023 8/21/2023 6.0 \n", + "136 137 Bangkok, Thailand 9/1/2023 9/8/2023 7.0 \n", + "137 138 Barcelona, Spain 9/15/2023 9/22/2023 7.0 \n", + "138 139 Auckland, New Zealand 10/1/2023 10/8/2023 7.0 \n", + "\n", + " traveler_name traveler_age traveler_gender traveler_nationality \\\n", + "0 John Smith 35.0 Male American \n", + "1 Jane Doe 28.0 Female Canadian \n", + "2 David Lee 45.0 Male Korean \n", + "3 Sarah Johnson 29.0 Female British \n", + "4 Kim Nguyen 26.0 Female Vietnamese \n", + ".. ... ... ... ... \n", + "134 Jose Perez 37.0 Male Brazilian \n", + "135 Emma Wilson 29.0 Female Canadian \n", + "136 Ryan Chen 34.0 Male Chinese \n", + "137 Sofia Rodriguez 25.0 Female Spanish \n", + "138 William Brown 39.0 Male New Zealander \n", + "\n", + " accommodation_type accommodation_cost transportation_type \\\n", + "0 Hotel 1200 Flight \n", + "1 Resort 800 Flight \n", + "2 Villa 1000 Flight \n", + "3 Hotel 2000 Flight \n", + "4 Airbnb 700 Train \n", + ".. ... ... ... \n", + "134 Hostel 2500 Car \n", + "135 Hotel 5000 Airplane \n", + "136 Hostel 2000 Train \n", + "137 Airbnb 6000 Airplane \n", + "138 Hotel 7000 Train \n", + "\n", + " transportation_cost destination_city destination_country \n", + "0 600 London UK \n", + "1 500 Phuket Thailand \n", + "2 700 Bali Indonesia \n", + "3 1000 New York USA \n", + "4 200 Tokyo Japan \n", + ".. ... ... ... \n", + "134 2000 Rio de Janeiro Brazil \n", + "135 3000 Vancouver Canada \n", + "136 1000 Bangkok Thailand \n", + "137 2500 Barcelona Spain \n", + "138 2500 Auckland New Zealand \n", + "\n", + "[139 rows x 15 columns]" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# I want to take the column destination, and rather split it in two, destination_city and destination_country\n", + "\n", + "# Split on the first comma into two columns\n", + "travel_trip_christos_df[[\"destination_city\", \"destination_country\"]] = (\n", + " travel_trip_christos_df[\"destination\"]\n", + " .str.split(\",\", n=1, expand=True)\n", + ")\n", + "\n", + "# Clean up whitespace\n", + "travel_trip_christos_df[\"destination_city\"] = (\n", + " travel_trip_christos_df[\"destination_city\"].str.strip()\n", + ")\n", + "travel_trip_christos_df[\"destination_country\"] = (\n", + " travel_trip_christos_df[\"destination_country\"].str.strip()\n", + ")\n", + "\n", + "travel_trip_christos_df" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "6c149138-e377-472c-8f1e-b35e91841b1d", + "metadata": {}, + "outputs": [], + "source": [ + "# I will drop the column \"destination\" after merging my table with the cleaned tables with my colleagues working in parallel." + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "61783158-1b4c-4c32-b279-722dccb72cfb", + "metadata": {}, + "outputs": [], + "source": [ + "# will however first move the two new columns on the right and next to destination" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "64fde922-91a8-4501-89af-21b879597429", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
destinationtrip_iddestination_countrydestination_citystart_dateend_dateduration_daystraveler_nametraveler_agetraveler_gendertraveler_nationalityaccommodation_typeaccommodation_costtransportation_typetransportation_cost
0London, UK1UKLondon5/1/20235/8/20237.0John Smith35.0MaleAmericanHotel1200Flight600
1Phuket, Thailand2ThailandPhuket6/15/20236/20/20235.0Jane Doe28.0FemaleCanadianResort800Flight500
2Bali, Indonesia3IndonesiaBali7/1/20237/8/20237.0David Lee45.0MaleKoreanVilla1000Flight700
3New York, USA4USANew York8/15/20238/29/202314.0Sarah Johnson29.0FemaleBritishHotel2000Flight1000
4Tokyo, Japan5JapanTokyo9/10/20239/17/20237.0Kim Nguyen26.0FemaleVietnameseAirbnb700Train200
................................................
134Rio de Janeiro, Brazil135BrazilRio de Janeiro8/1/20238/10/20239.0Jose Perez37.0MaleBrazilianHostel2500Car2000
135Vancouver, Canada136CanadaVancouver8/15/20238/21/20236.0Emma Wilson29.0FemaleCanadianHotel5000Airplane3000
136Bangkok, Thailand137ThailandBangkok9/1/20239/8/20237.0Ryan Chen34.0MaleChineseHostel2000Train1000
137Barcelona, Spain138SpainBarcelona9/15/20239/22/20237.0Sofia Rodriguez25.0FemaleSpanishAirbnb6000Airplane2500
138Auckland, New Zealand139New ZealandAuckland10/1/202310/8/20237.0William Brown39.0MaleNew ZealanderHotel7000Train2500
\n", + "

139 rows × 15 columns

\n", + "
" + ], + "text/plain": [ + " destination trip_id destination_country destination_city \\\n", + "0 London, UK 1 UK London \n", + "1 Phuket, Thailand 2 Thailand Phuket \n", + "2 Bali, Indonesia 3 Indonesia Bali \n", + "3 New York, USA 4 USA New York \n", + "4 Tokyo, Japan 5 Japan Tokyo \n", + ".. ... ... ... ... \n", + "134 Rio de Janeiro, Brazil 135 Brazil Rio de Janeiro \n", + "135 Vancouver, Canada 136 Canada Vancouver \n", + "136 Bangkok, Thailand 137 Thailand Bangkok \n", + "137 Barcelona, Spain 138 Spain Barcelona \n", + "138 Auckland, New Zealand 139 New Zealand Auckland \n", + "\n", + " start_date end_date duration_days traveler_name traveler_age \\\n", + "0 5/1/2023 5/8/2023 7.0 John Smith 35.0 \n", + "1 6/15/2023 6/20/2023 5.0 Jane Doe 28.0 \n", + "2 7/1/2023 7/8/2023 7.0 David Lee 45.0 \n", + "3 8/15/2023 8/29/2023 14.0 Sarah Johnson 29.0 \n", + "4 9/10/2023 9/17/2023 7.0 Kim Nguyen 26.0 \n", + ".. ... ... ... ... ... \n", + "134 8/1/2023 8/10/2023 9.0 Jose Perez 37.0 \n", + "135 8/15/2023 8/21/2023 6.0 Emma Wilson 29.0 \n", + "136 9/1/2023 9/8/2023 7.0 Ryan Chen 34.0 \n", + "137 9/15/2023 9/22/2023 7.0 Sofia Rodriguez 25.0 \n", + "138 10/1/2023 10/8/2023 7.0 William Brown 39.0 \n", + "\n", + " traveler_gender traveler_nationality accommodation_type \\\n", + "0 Male American Hotel \n", + "1 Female Canadian Resort \n", + "2 Male Korean Villa \n", + "3 Female British Hotel \n", + "4 Female Vietnamese Airbnb \n", + ".. ... ... ... \n", + "134 Male Brazilian Hostel \n", + "135 Female Canadian Hotel \n", + "136 Male Chinese Hostel \n", + "137 Female Spanish Airbnb \n", + "138 Male New Zealander Hotel \n", + "\n", + " accommodation_cost transportation_type transportation_cost \n", + "0 1200 Flight 600 \n", + "1 800 Flight 500 \n", + "2 1000 Flight 700 \n", + "3 2000 Flight 1000 \n", + "4 700 Train 200 \n", + ".. ... ... ... \n", + "134 2500 Car 2000 \n", + "135 5000 Airplane 3000 \n", + "136 2000 Train 1000 \n", + "137 6000 Airplane 2500 \n", + "138 7000 Train 2500 \n", + "\n", + "[139 rows x 15 columns]" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cols = list(travel_trip_christos_df.columns)\n", + "cols.insert(cols.index(\"destination\") + 1, cols.pop(cols.index(\"destination_city\")))\n", + "travel_trip_christos_df = travel_trip_christos_df.loc[:, cols]\n", + "\n", + "cols = list(travel_trip_christos_df.columns)\n", + "cols.insert(cols.index(\"destination_city\") - 1, cols.pop(cols.index(\"destination_country\")))\n", + "travel_trip_christos_df = travel_trip_christos_df.loc[:, cols]\n", + "\n", + "cols = list(travel_trip_christos_df.columns)\n", + "cols.insert(cols.index(\"destination_country\") - 1, cols.pop(cols.index(\"destination\")))\n", + "travel_trip_christos_df = travel_trip_christos_df.loc[:, cols]\n", + "\n", + "travel_trip_christos_df" + ] + }, + { + "cell_type": "markdown", + "id": "faece5e5-8983-47fc-9694-2a9e9ff937f6", + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, + "source": [ + "### Searching for NaN values" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "27f20889-fafe-4d54-8fdd-a1cbb348949c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "destination 2\n", + "trip_id 0\n", + "destination_country 68\n", + "destination_city 2\n", + "start_date 2\n", + "end_date 2\n", + "duration_days 2\n", + "traveler_name 2\n", + "traveler_age 2\n", + "traveler_gender 2\n", + "traveler_nationality 2\n", + "accommodation_type 2\n", + "accommodation_cost 2\n", + "transportation_type 3\n", + "transportation_cost 3\n", + "dtype: int64" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "b11c4625-e73d-4fff-9244-6b50f3ef64cf", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['London, UK', 'Phuket, Thailand', 'Bali, Indonesia',\n", + " 'New York, USA', 'Tokyo, Japan', 'Paris, France',\n", + " 'Sydney, Australia', 'Rio de Janeiro, Brazil',\n", + " 'Amsterdam, Netherlands', 'Dubai, United Arab Emirates',\n", + " 'Cancun, Mexico', 'Barcelona, Spain', 'Honolulu, Hawaii',\n", + " 'Berlin, Germany', 'Marrakech, Morocco', 'Edinburgh, Scotland',\n", + " 'Paris', 'Bali', 'London', 'Tokyo', 'New York', 'Sydney', 'Rome',\n", + " 'Bangkok', 'Hawaii', 'Barcelona', 'Japan', 'Thailand', 'France',\n", + " 'Australia', 'Brazil', 'Greece', 'Egypt', 'Mexico', 'Italy',\n", + " 'Spain', 'Canada', 'New York City, USA', 'Bangkok, Thailand',\n", + " 'Vancouver, Canada', 'Sydney, AUS', 'Seoul, South Korea',\n", + " 'Los Angeles, USA', 'Rome, Italy', 'Cape Town', nan,\n", + " 'Cape Town, SA', 'Sydney, Aus', 'Bangkok, Thai', 'Phuket, Thai',\n", + " 'Dubai', 'Seoul', 'Rio de Janeiro', 'Amsterdam', 'Phuket',\n", + " 'Santorini', 'Phnom Penh', 'Athens, Greece',\n", + " 'Cape Town, South Africa', 'Auckland, New Zealand'], dtype=object)" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# checking the destinatio column to see what destination_city has so many NaN values. \n", + "# It shows that for many rows we only have information about the city. \n", + "# That's no problem, we can easily extrapolate the country frrom it.\n", + "travel_trip_christos_df.destination.unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "a873cdec-c049-4dff-a77c-fa1deab3b8f6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "# we can immediately identify that most columns have 2 NaN values. Will do a test to check whether those values are in the same rows\n", + "\n", + "assumption_columns = [\n", + " \"destination\",\n", + " \"destination_city\",\n", + " \"start_date\",\n", + " \"end_date\",\n", + " \"duration_days\",\n", + " \"traveler_name\",\n", + " \"traveler_age\",\n", + " \"traveler_gender\",\n", + " \"traveler_nationality\",\n", + " \"accommodation_type\",\n", + " \"accommodation_cost\"\n", + "]\n", + "\n", + "all_null_test = travel_trip_christos_df[assumption_columns].isna().all(axis=1)\n", + "all_null_count = all_null_test.sum()\n", + "print(all_null_count)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "caafe407-12f0-4c5c-a634-b60ebfa47211", + "metadata": {}, + "outputs": [], + "source": [ + "# our assumption is true, those two rows are fully empty and we can drop them" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "13c1c566-2d51-4926-865c-ee58cb1db1eb", + "metadata": {}, + "outputs": [], + "source": [ + "travel_trip_christos_df = travel_trip_christos_df.dropna(thresh=2)" + ] + }, + { + "cell_type": "markdown", + "id": "cd0f77de-fee7-410a-a798-5da331383694", + "metadata": {}, + "source": [ + "### Checking for duplicates" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "id": "dc4b639d-8eb6-4b95-9c65-a902de787eea", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "np.int64(0)" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df.duplicated().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "64966465-7f5d-4a19-bf2d-259418620964", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "np.int64(28)" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df.traveler_name.duplicated().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "id": "d554abd2-34aa-4e27-be66-47c840f0e7ab", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "109" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df.traveler_name.nunique()" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "743571d4-a2f9-489c-88e4-445300dfbf3d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['John Smith', 'Jane Doe', 'David Lee', 'Sarah Johnson',\n", + " 'Kim Nguyen', 'Michael Brown', 'Emily Davis', 'Lucas Santos',\n", + " 'Laura Janssen', 'Mohammed Ali', 'Ana Hernandez', 'Carlos Garcia',\n", + " 'Lily Wong', 'Hans Mueller', 'Fatima Khouri', 'James MacKenzie',\n", + " 'Michael Chang', 'Olivia Rodriguez', 'Kenji Nakamura', 'Emily Lee',\n", + " 'James Wilson', 'Sofia Russo', 'Raj Patel', 'Lily Nguyen',\n", + " 'David Kim', 'Maria Garcia', 'Alice Smith', 'Bob Johnson',\n", + " 'Charlie Lee', 'Emma Davis', 'Olivia Martin', 'Harry Wilson',\n", + " 'Sophia Lee', 'James Brown', 'Mia Johnson', 'William Davis',\n", + " 'Amelia Brown', 'Adam Lee', 'Sarah Wong', 'Maria Silva',\n", + " 'Peter Brown', 'Emma Garcia', 'Michael Davis', 'Nina Patel',\n", + " 'Kevin Kim', 'Laura van den Berg', 'Jennifer Nguyen', 'Rachel Lee',\n", + " 'Jessica Wong', 'Felipe Almeida', 'Nisa Patel', 'Ben Smith',\n", + " 'Laura Gomez', 'Park Min Woo', 'Michael Chen', 'Sofia Rossi',\n", + " 'Rachel Sanders', 'Emily Watson', 'Ana Rodriguez', 'Tom Wilson',\n", + " 'Olivia Green', 'James Chen', 'Lila Patel', 'Marco Rossi',\n", + " 'Sarah Brown', 'Sarah Lee', 'Alex Kim', 'Maria Hernandez',\n", + " 'Mark Johnson', 'Amanda Chen', 'Nana Kwon', 'Tom Hanks',\n", + " 'Emma Watson', 'James Kim', 'Fatima Ahmed', 'Liam Nguyen',\n", + " 'Giulia Rossi', 'Putra Wijaya', 'Kim Min-ji', 'Emily Johnson',\n", + " 'Michael Wong', 'Jessica Chen', 'Ken Tanaka', 'Rodrigo Oliveira',\n", + " 'Olivia Kim', 'Robert Mueller', 'Lisa Chen', 'Emily Wong',\n", + " 'Mark Tan', 'Emma Lee', 'George Chen', 'Sophia Kim', 'Alex Ng',\n", + " 'Cindy Chen', 'Emily Kim', 'Frank Li', 'Gina Lee', 'Henry Kim',\n", + " 'Isabella Chen', 'Jack Smith', 'Katie Johnson', 'John Doe',\n", + " 'Jane Smith', 'Michael Johnson', 'Jose Perez', 'Emma Wilson',\n", + " 'Ryan Chen', 'Sofia Rodriguez', 'William Brown'], dtype=object)" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df.traveler_name.unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "07f19434-f40b-4e91-bacf-97534a93d48d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['john smith', 'jane doe', 'david lee', 'sarah johnson',\n", + " 'kim nguyen', 'michael brown', 'emily davis', 'lucas santos',\n", + " 'laura janssen', 'mohammed ali', 'ana hernandez', 'carlos garcia',\n", + " 'lily wong', 'hans mueller', 'fatima khouri', 'james mackenzie',\n", + " 'michael chang', 'olivia rodriguez', 'kenji nakamura', 'emily lee',\n", + " 'james wilson', 'sofia russo', 'raj patel', 'lily nguyen',\n", + " 'david kim', 'maria garcia', 'alice smith', 'bob johnson',\n", + " 'charlie lee', 'emma davis', 'olivia martin', 'harry wilson',\n", + " 'sophia lee', 'james brown', 'mia johnson', 'william davis',\n", + " 'amelia brown', 'adam lee', 'sarah wong', 'maria silva',\n", + " 'peter brown', 'emma garcia', 'michael davis', 'nina patel',\n", + " 'kevin kim', 'laura van den berg', 'jennifer nguyen', 'rachel lee',\n", + " 'jessica wong', 'felipe almeida', 'nisa patel', 'ben smith',\n", + " 'laura gomez', 'park min woo', 'michael chen', 'sofia rossi',\n", + " 'rachel sanders', 'emily watson', 'ana rodriguez', 'tom wilson',\n", + " 'olivia green', 'james chen', 'lila patel', 'marco rossi',\n", + " 'sarah brown', 'sarah lee', 'alex kim', 'maria hernandez',\n", + " 'mark johnson', 'amanda chen', 'nana kwon', 'tom hanks',\n", + " 'emma watson', 'james kim', 'fatima ahmed', 'liam nguyen',\n", + " 'giulia rossi', 'putra wijaya', 'kim min ji', 'emily johnson',\n", + " 'michael wong', 'jessica chen', 'ken tanaka', 'rodrigo oliveira',\n", + " 'olivia kim', 'robert mueller', 'lisa chen', 'emily wong',\n", + " 'mark tan', 'emma lee', 'george chen', 'sophia kim', 'alex ng',\n", + " 'cindy chen', 'emily kim', 'frank li', 'gina lee', 'henry kim',\n", + " 'isabella chen', 'jack smith', 'katie johnson', 'john doe',\n", + " 'jane smith', 'michael johnson', 'jose perez', 'emma wilson',\n", + " 'ryan chen', 'sofia rodriguez', 'william brown'], dtype=object)" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# I will make sure that the column traveler_name is lowercased and stripped from double spaces or dashes, just in case this might hide more duplicates\n", + "# ideally, when you created travel_trip_christos_df, you already did:\n", + "# travel_trip_christos_df = original_df[...].copy()\n", + "\n", + "travel_trip_christos_df.loc[:, \"traveler_name\"] = (\n", + " travel_trip_christos_df[\"traveler_name\"]\n", + " .str.strip() # trims whitespace at both ends\n", + " .str.replace(\"-\", \" \", regex=False) # replace hyphen with space\n", + " .str.lower()\n", + ")\n", + "travel_trip_christos_df.traveler_name.unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "0212cf0f-6f93-4e04-807a-47520e38914b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "np.int64(28)" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df.traveler_name.duplicated().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "f2fa8293-8ecb-416d-b7b4-d7181942951d", + "metadata": {}, + "outputs": [], + "source": [ + "# we can see that there are no exact full string duplicates of the column traveler_name. \n", + "# The number 29 above probalby comes from partial dupication, like only first name or only last name" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "83c5031e-29d0-493f-adb3-08236d85504d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "destination 0\n", + "trip_id 0\n", + "destination_country 66\n", + "destination_city 0\n", + "start_date 0\n", + "end_date 0\n", + "duration_days 0\n", + "traveler_name 0\n", + "traveler_age 0\n", + "traveler_gender 0\n", + "traveler_nationality 0\n", + "accommodation_type 0\n", + "accommodation_cost 0\n", + "transportation_type 1\n", + "transportation_cost 1\n", + "dtype: int64" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "6a636a58-87df-4df2-8edd-2056952b9d05", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
destinationtrip_iddestination_countrydestination_citystart_dateend_dateduration_daystraveler_nametraveler_agetraveler_gendertraveler_nationalityaccommodation_typeaccommodation_costtransportation_typetransportation_cost
82Rome, Italy83ItalyRome4/15/20254/22/20257.0james kim41.0MaleAmericanHotel100NaNNaN
\n", + "
" + ], + "text/plain": [ + " destination trip_id destination_country destination_city start_date \\\n", + "82 Rome, Italy 83 Italy Rome 4/15/2025 \n", + "\n", + " end_date duration_days traveler_name traveler_age traveler_gender \\\n", + "82 4/22/2025 7.0 james kim 41.0 Male \n", + "\n", + " traveler_nationality accommodation_type accommodation_cost \\\n", + "82 American Hotel 100 \n", + "\n", + " transportation_type transportation_cost \n", + "82 NaN NaN " + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# let's find out the NaN values in \n", + "mask = travel_trip_christos_df[\"transportation_type\"].isna() & \\\n", + " travel_trip_christos_df[\"transportation_cost\"].isna()\n", + "\n", + "travel_trip_christos_df[mask]\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "77be8df9-eef7-4374-8477-0d2b55e6901b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "destination object\n", + "trip_id int64\n", + "destination_country object\n", + "destination_city object\n", + "start_date object\n", + "end_date object\n", + "duration_days float64\n", + "traveler_name object\n", + "traveler_age float64\n", + "traveler_gender object\n", + "traveler_nationality object\n", + "accommodation_type object\n", + "accommodation_cost object\n", + "transportation_type object\n", + "transportation_cost object\n", + "dtype: object" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "id": "de17fc4b-030b-47ab-9fbd-e2701d23568b", + "metadata": {}, + "outputs": [], + "source": [ + "# for transportation type and transportation_cost NaN values, we will group by destination_city and calculate the count of transportation_type and mean transportation_cost, and filter for Rome.\n", + "\n", + "# we will need to cast the data type of the column transportation_cost to float, before we can proceed with grouping.\n", + "\n", + "# for this to happen we will need to clean the column transportation_cost" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "id": "6913f7b3-51ea-485d-bc35-04026cff7b18", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['600', '500', '700', '1000', '200', '800', '1200', '100', '400',\n", + " '150', '$400 ', '$700 ', '$150 ', '$800 ', '$100 ', '$600 ',\n", + " '$80 ', '$500 ', '$300 ', '$50 ', '$120 ', '$75 ', '900', '50',\n", + " '$200 ', '$250 ', '$20 ', '300', '800 USD', '200 USD', '500 USD',\n", + " '700 USD', '300 USD', '600 USD', '400 USD', '1000 USD', nan,\n", + " '100 USD', '350 USD', '150 USD', '$1,200 ', '$900 ', '$1,500 ',\n", + " '$1,000 ', '250', '2500', '1500', '2000', '3000'], dtype=object)" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df.transportation_cost.unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "id": "a5896df5-f63f-4efc-8bea-9dc1a7f35eb7", + "metadata": {}, + "outputs": [], + "source": [ + "# we will need to remove anything but the numbers" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "e28ce23d-fe62-4efe-aa17-435e908887f3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([600.0, 500.0, 700.0, 1000.0, 200.0, 800.0, 1200.0, 100.0, 400.0,\n", + " 150.0, 80.0, 300.0, 50.0, 120.0, 75.0, 900.0, 250.0, 20.0, nan,\n", + " 350.0, 1500.0, 2500.0, 2000.0, 3000.0], dtype=object)" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df.loc[:, \"transportation_cost\"] = (\n", + " travel_trip_christos_df[\"transportation_cost\"]\n", + " .astype(str) # in case there are numbers/NaN in there\n", + " .str.strip()\n", + " .str.strip(\"$\")\n", + " .str.replace(\",\", \"\", regex=False)\n", + " .str.replace(\" USD\", \"\", regex=False)\n", + " .str.strip()\n", + ")\n", + "\n", + "travel_trip_christos_df.loc[:, \"transportation_cost\"] = pd.to_numeric(\n", + " travel_trip_christos_df[\"transportation_cost\"],\n", + " errors=\"coerce\"\n", + ")\n", + "\n", + "travel_trip_christos_df.transportation_cost.unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "id": "3bdbfd84-e3c0-43b7-ad54-95494d446afb", + "metadata": {}, + "outputs": [], + "source": [ + "# assuming travel_trip_christos_df was created with .copy() earlier\n", + "#travel_trip_christos_df.loc[:, \"transportation_cost\"] = (\n", + "# travel_trip_christos_df[\"transportation_cost\"]\n", + "# .fillna(\"0\")\n", + "# )\n", + "\n", + "# travel_trip_christos_df.transportation_cost.unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "id": "58380656-bd6b-45f2-8a5d-b319b1f6ba9a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "destination object\n", + "trip_id int64\n", + "destination_country object\n", + "destination_city object\n", + "start_date object\n", + "end_date object\n", + "duration_days float64\n", + "traveler_name object\n", + "traveler_age float64\n", + "traveler_gender object\n", + "traveler_nationality object\n", + "accommodation_type object\n", + "accommodation_cost object\n", + "transportation_type object\n", + "transportation_cost object\n", + "dtype: object" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# now we cast, in order to be able to group later\n", + "\n", + "travel_trip_christos_df.loc[:, \"transportation_cost\"] = (\n", + " travel_trip_christos_df[\"transportation_cost\"].astype(\"Int64\")\n", + ")\n", + "\n", + "travel_trip_christos_df.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "id": "9628c441-a06e-4d19-a130-269c65090c8f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
transportation_type_counttransportation_cost_mean
destination_citytransportation_type
RomePlane2625.0
Train6405.0
\n", + "
" + ], + "text/plain": [ + " transportation_type_count \\\n", + "destination_city transportation_type \n", + "Rome Plane 2 \n", + " Train 6 \n", + "\n", + " transportation_cost_mean \n", + "destination_city transportation_type \n", + "Rome Plane 625.0 \n", + " Train 405.0 " + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# for transportation type and transportation_cost NaN values, we will group by destination_city and calculate the count of transportation_type and mean transportation_cost, and filter for Rome.\n", + "\n", + "grouped_df = (travel_trip_christos_df.groupby([\"destination_city\", \"transportation_type\"]).agg(transportation_type_count = (\"transportation_type\", \"count\"), transportation_cost_mean = (\"transportation_cost\", \"mean\")))\n", + "filtered_grouped_df = grouped_df.loc[[\"Rome\"]]\n", + "filtered_grouped_df" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "id": "1f658817-fc59-4144-8b15-4489e2a101b0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "np.int64(0)" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# therefore, we will fill the empty values transportation_type with \"Train\", and transportation_cost with \"405.0\"\n", + "travel_trip_christos_df.loc[:, \"transportation_type\"] = (\n", + " travel_trip_christos_df[\"transportation_type\"].fillna(\"Train\")\n", + ")\n", + "\n", + "travel_trip_christos_df.transportation_type.isnull().sum()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "id": "96e60c97-5c0e-478f-b67a-ad331219e1c3", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/13/s00136yd6q5bvv6x74_x_m204g4004/T/ipykernel_33666/4279038090.py:3: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + " travel_trip_christos_df[\"transportation_cost\"].fillna(405.0)\n" + ] + }, + { + "data": { + "text/plain": [ + "np.int64(0)" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# now let's replace the 0 we placed before in place of NaN, with the mean value.\n", + "travel_trip_christos_df.loc[:, \"transportation_cost\"] = (\n", + " travel_trip_christos_df[\"transportation_cost\"].fillna(405.0)\n", + ")\n", + "\n", + "travel_trip_christos_df.transportation_cost.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "id": "6e0c78f9-b504-491d-be01-4cab9cf833a4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
destinationtrip_iddestination_countrydestination_citystart_dateend_dateduration_daystraveler_nametraveler_agetraveler_gendertraveler_nationalityaccommodation_typeaccommodation_costtransportation_typetransportation_cost
0London, UK1UKLondon5/1/20235/8/20237.0john smith35.0MaleAmericanHotel1200Flight600.0
1Phuket, Thailand2ThailandPhuket6/15/20236/20/20235.0jane doe28.0FemaleCanadianResort800Flight500.0
2Bali, Indonesia3IndonesiaBali7/1/20237/8/20237.0david lee45.0MaleKoreanVilla1000Flight700.0
3New York, USA4USANew York8/15/20238/29/202314.0sarah johnson29.0FemaleBritishHotel2000Flight1000.0
4Tokyo, Japan5JapanTokyo9/10/20239/17/20237.0kim nguyen26.0FemaleVietnameseAirbnb700Train200.0
................................................
134Rio de Janeiro, Brazil135BrazilRio de Janeiro8/1/20238/10/20239.0jose perez37.0MaleBrazilianHostel2500Car2000.0
135Vancouver, Canada136CanadaVancouver8/15/20238/21/20236.0emma wilson29.0FemaleCanadianHotel5000Airplane3000.0
136Bangkok, Thailand137ThailandBangkok9/1/20239/8/20237.0ryan chen34.0MaleChineseHostel2000Train1000.0
137Barcelona, Spain138SpainBarcelona9/15/20239/22/20237.0sofia rodriguez25.0FemaleSpanishAirbnb6000Airplane2500.0
138Auckland, New Zealand139New ZealandAuckland10/1/202310/8/20237.0william brown39.0MaleNew ZealanderHotel7000Train2500.0
\n", + "

137 rows × 15 columns

\n", + "
" + ], + "text/plain": [ + " destination trip_id destination_country destination_city \\\n", + "0 London, UK 1 UK London \n", + "1 Phuket, Thailand 2 Thailand Phuket \n", + "2 Bali, Indonesia 3 Indonesia Bali \n", + "3 New York, USA 4 USA New York \n", + "4 Tokyo, Japan 5 Japan Tokyo \n", + ".. ... ... ... ... \n", + "134 Rio de Janeiro, Brazil 135 Brazil Rio de Janeiro \n", + "135 Vancouver, Canada 136 Canada Vancouver \n", + "136 Bangkok, Thailand 137 Thailand Bangkok \n", + "137 Barcelona, Spain 138 Spain Barcelona \n", + "138 Auckland, New Zealand 139 New Zealand Auckland \n", + "\n", + " start_date end_date duration_days traveler_name traveler_age \\\n", + "0 5/1/2023 5/8/2023 7.0 john smith 35.0 \n", + "1 6/15/2023 6/20/2023 5.0 jane doe 28.0 \n", + "2 7/1/2023 7/8/2023 7.0 david lee 45.0 \n", + "3 8/15/2023 8/29/2023 14.0 sarah johnson 29.0 \n", + "4 9/10/2023 9/17/2023 7.0 kim nguyen 26.0 \n", + ".. ... ... ... ... ... \n", + "134 8/1/2023 8/10/2023 9.0 jose perez 37.0 \n", + "135 8/15/2023 8/21/2023 6.0 emma wilson 29.0 \n", + "136 9/1/2023 9/8/2023 7.0 ryan chen 34.0 \n", + "137 9/15/2023 9/22/2023 7.0 sofia rodriguez 25.0 \n", + "138 10/1/2023 10/8/2023 7.0 william brown 39.0 \n", + "\n", + " traveler_gender traveler_nationality accommodation_type \\\n", + "0 Male American Hotel \n", + "1 Female Canadian Resort \n", + "2 Male Korean Villa \n", + "3 Female British Hotel \n", + "4 Female Vietnamese Airbnb \n", + ".. ... ... ... \n", + "134 Male Brazilian Hostel \n", + "135 Female Canadian Hotel \n", + "136 Male Chinese Hostel \n", + "137 Female Spanish Airbnb \n", + "138 Male New Zealander Hotel \n", + "\n", + " accommodation_cost transportation_type transportation_cost \n", + "0 1200 Flight 600.0 \n", + "1 800 Flight 500.0 \n", + "2 1000 Flight 700.0 \n", + "3 2000 Flight 1000.0 \n", + "4 700 Train 200.0 \n", + ".. ... ... ... \n", + "134 2500 Car 2000.0 \n", + "135 5000 Airplane 3000.0 \n", + "136 2000 Train 1000.0 \n", + "137 6000 Airplane 2500.0 \n", + "138 7000 Train 2500.0 \n", + "\n", + "[137 rows x 15 columns]" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "id": "a926c2de-009a-42e8-894a-9da707627077", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'FlightTrainPlaneBusCar rentalSubwayCarFerryAirplane'" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# let's quickly check the transportation_types\n", + "\n", + "travel_trip_christos_df.transportation_type.unique().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "id": "2529893b-1e8b-4828-9c9b-c6d918413bce", + "metadata": {}, + "outputs": [], + "source": [ + "# do we need to also change \"Subway\" to train? Maybe, who travels to a city using a subway, subways are intra city transportation modes." + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "id": "f78c1e93-d5ac-4d48-ba8a-db6af09fce44", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
transportation_type_counttransportation_cost_mean
transportation_type
Subway120.0
Train38346.184211
\n", + "
" + ], + "text/plain": [ + " transportation_type_count transportation_cost_mean\n", + "transportation_type \n", + "Subway 1 20.0\n", + "Train 38 346.184211" + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "subway_df = travel_trip_christos_df.groupby(\"transportation_type\").agg(transportation_type_count = (\"transportation_type\", \"count\"), transportation_cost_mean = (\"transportation_cost\", \"mean\"))\n", + "filtered_subway_df = subway_df.loc[[\"Subway\", \"Train\"]]\n", + "filtered_subway_df" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "id": "0c50f0b0-ba4d-47db-8f81-5555bb6d786b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
destinationtrip_iddestination_countrydestination_citystart_dateend_dateduration_daystraveler_nametraveler_agetraveler_gendertraveler_nationalityaccommodation_typeaccommodation_costtransportation_typetransportation_cost
57Seoul, South Korea58South KoreaSeoul5/10/20245/18/20248.0park min woo27.0MaleSouth KoreanHostel$500Subway20.0
\n", + "
" + ], + "text/plain": [ + " destination trip_id destination_country destination_city \\\n", + "57 Seoul, South Korea 58 South Korea Seoul \n", + "\n", + " start_date end_date duration_days traveler_name traveler_age \\\n", + "57 5/10/2024 5/18/2024 8.0 park min woo 27.0 \n", + "\n", + " traveler_gender traveler_nationality accommodation_type accommodation_cost \\\n", + "57 Male South Korean Hostel $500 \n", + "\n", + " transportation_type transportation_cost \n", + "57 Subway 20.0 " + ] + }, + "execution_count": 92, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df[travel_trip_christos_df[\"transportation_type\"] == \"Subway\"]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "id": "0b6bebb9-c8ac-495b-b76f-cb10630b7c55", + "metadata": {}, + "outputs": [], + "source": [ + "# Subway seems to be an outlier data, but let's check at least if the transportation_cost of the \"Subway\" is at least close to the minimum cost for \"Train\"" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "id": "a9be2ef9-9390-4c8e-a160-b701e5cd9815", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
transportation_type_counttransportation_cost_min
transportation_type
Subway120.0
Train3880.0
\n", + "
" + ], + "text/plain": [ + " transportation_type_count transportation_cost_min\n", + "transportation_type \n", + "Subway 1 20.0\n", + "Train 38 80.0" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "subway_df = travel_trip_christos_df.groupby(\"transportation_type\").agg(transportation_type_count = (\"transportation_type\", \"count\"), transportation_cost_min = (\"transportation_cost\", \"min\"))\n", + "filtered_subway_df = subway_df.loc[[\"Subway\", \"Train\"]]\n", + "filtered_subway_df" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "id": "f74e1dcc-3c6c-41fa-a168-45e24076e656", + "metadata": {}, + "outputs": [], + "source": [ + "# this is not the case, therefore, we will exclude it from our calculations of \"Train\"" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "id": "a1d31b3c-fe13-4f3d-a4c3-924af8a012cd", + "metadata": {}, + "outputs": [], + "source": [ + "# and \"Car\" and \"Car rental\" under \"Car\"?" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "id": "5801b326-635a-4be9-b759-3f3a672e681a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
transportation_type_counttransportation_cost_min
transportation_type
Car rental13200.0
Car3300.0
\n", + "
" + ], + "text/plain": [ + " transportation_type_count transportation_cost_min\n", + "transportation_type \n", + "Car rental 13 200.0\n", + "Car 3 300.0" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "car_df = travel_trip_christos_df.groupby(\"transportation_type\").agg(transportation_type_count = (\"transportation_type\", \"count\"), transportation_cost_mean = (\"transportation_cost\", \"mean\"))\n", + "filtered_car_df = subway_df.loc[[\"Car rental\", \"Car\"]]\n", + "filtered_car_df" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "id": "8919054b-82f5-478c-a799-4da6ef741cca", + "metadata": {}, + "outputs": [], + "source": [ + "# no, we see that there is a massive difference in the mean cost between the two categories, suggesting that it is indeed two different transportation modes. \n", + "# Car rental suggests that someone rented a car at the destnation, where car probably indicates that someone did a road trip using a car to destination.\n" + ] + }, + { + "cell_type": "markdown", + "id": "d7b7ff99-5f4d-4031-9a75-14aab6ed07a1", + "metadata": {}, + "source": [ + "### Merging equivalent transportations types" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "id": "b3a35a1c-7124-45b7-8c8f-b745c5a5450d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['Flight', 'Train', 'Airplane', 'Bus', 'Rental Car', 'Subway',\n", + " 'Private Car', 'Ferry'], dtype=object)" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ok, we will merge \"Plane\" and \"Airplane\" under \"Airplane\", and \"Car rental\" to \"Rental Car\", and \"Car\" to \"Private Car\"\n", + "travel_trip_christos_df.loc[:, \"transportation_type\"] = (\n", + " travel_trip_christos_df[\"transportation_type\"]\n", + " .replace({\"Plane\": \"Airplane\"})\n", + ")\n", + "\n", + "travel_trip_christos_df.loc[:, \"transportation_type\"] = (\n", + " travel_trip_christos_df[\"transportation_type\"]\n", + " .replace({\"Car rental\": \"Rental Car\"})\n", + ")\n", + "\n", + "travel_trip_christos_df.loc[:, \"transportation_type\"] = (\n", + " travel_trip_christos_df[\"transportation_type\"]\n", + " .replace({\"Car\": \"Private Car\"})\n", + ")\n", + "\n", + "travel_trip_christos_df[\"transportation_type\"].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "id": "bd76ad1c-08b2-4712-9143-c93320760674", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
destinationtrip_iddestination_countrydestination_citystart_dateend_dateduration_daystraveler_nametraveler_agetraveler_gendertraveler_nationalityaccommodation_typeaccommodation_costtransportation_typetransportation_cost
0London, UK1UKLondon5/1/20235/8/20237.0john smith35.0MaleAmericanHotel1200Flight600.0
1Phuket, Thailand2ThailandPhuket6/15/20236/20/20235.0jane doe28.0FemaleCanadianResort800Flight500.0
2Bali, Indonesia3IndonesiaBali7/1/20237/8/20237.0david lee45.0MaleKoreanVilla1000Flight700.0
3New York, USA4USANew York8/15/20238/29/202314.0sarah johnson29.0FemaleBritishHotel2000Flight1000.0
4Tokyo, Japan5JapanTokyo9/10/20239/17/20237.0kim nguyen26.0FemaleVietnameseAirbnb700Train200.0
5Paris, France6FranceParis10/5/202310/10/20235.0michael brown42.0MaleAmericanHotel1500Flight800.0
6Sydney, Australia7AustraliaSydney11/20/202311/30/202310.0emily davis33.0FemaleAustralianHostel500Flight1200.0
7Rio de Janeiro, Brazil8BrazilRio de Janeiro1/5/20241/12/20247.0lucas santos25.0MaleBrazilianAirbnb900Flight600.0
8Amsterdam, Netherlands9NetherlandsAmsterdam2/14/20242/21/20247.0laura janssen31.0FemaleDutchHotel1200Train200.0
9Dubai, United Arab Emirates10United Arab EmiratesDubai3/10/20243/17/20247.0mohammed ali39.0MaleEmiratiResort2500Flight800.0
\n", + "
" + ], + "text/plain": [ + " destination trip_id destination_country \\\n", + "0 London, UK 1 UK \n", + "1 Phuket, Thailand 2 Thailand \n", + "2 Bali, Indonesia 3 Indonesia \n", + "3 New York, USA 4 USA \n", + "4 Tokyo, Japan 5 Japan \n", + "5 Paris, France 6 France \n", + "6 Sydney, Australia 7 Australia \n", + "7 Rio de Janeiro, Brazil 8 Brazil \n", + "8 Amsterdam, Netherlands 9 Netherlands \n", + "9 Dubai, United Arab Emirates 10 United Arab Emirates \n", + "\n", + " destination_city start_date end_date duration_days traveler_name \\\n", + "0 London 5/1/2023 5/8/2023 7.0 john smith \n", + "1 Phuket 6/15/2023 6/20/2023 5.0 jane doe \n", + "2 Bali 7/1/2023 7/8/2023 7.0 david lee \n", + "3 New York 8/15/2023 8/29/2023 14.0 sarah johnson \n", + "4 Tokyo 9/10/2023 9/17/2023 7.0 kim nguyen \n", + "5 Paris 10/5/2023 10/10/2023 5.0 michael brown \n", + "6 Sydney 11/20/2023 11/30/2023 10.0 emily davis \n", + "7 Rio de Janeiro 1/5/2024 1/12/2024 7.0 lucas santos \n", + "8 Amsterdam 2/14/2024 2/21/2024 7.0 laura janssen \n", + "9 Dubai 3/10/2024 3/17/2024 7.0 mohammed ali \n", + "\n", + " traveler_age traveler_gender traveler_nationality accommodation_type \\\n", + "0 35.0 Male American Hotel \n", + "1 28.0 Female Canadian Resort \n", + "2 45.0 Male Korean Villa \n", + "3 29.0 Female British Hotel \n", + "4 26.0 Female Vietnamese Airbnb \n", + "5 42.0 Male American Hotel \n", + "6 33.0 Female Australian Hostel \n", + "7 25.0 Male Brazilian Airbnb \n", + "8 31.0 Female Dutch Hotel \n", + "9 39.0 Male Emirati Resort \n", + "\n", + " accommodation_cost transportation_type transportation_cost \n", + "0 1200 Flight 600.0 \n", + "1 800 Flight 500.0 \n", + "2 1000 Flight 700.0 \n", + "3 2000 Flight 1000.0 \n", + "4 700 Train 200.0 \n", + "5 1500 Flight 800.0 \n", + "6 500 Flight 1200.0 \n", + "7 900 Flight 600.0 \n", + "8 1200 Train 200.0 \n", + "9 2500 Flight 800.0 " + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_christos_df.head(10)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:base] *", + "language": "python", + "name": "conda-base-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 3cfcf2a51141433e404a77d20a118a504be128c3 Mon Sep 17 00:00:00 2001 From: Safina E Jahan Date: Mon, 8 Dec 2025 17:19:25 +0100 Subject: [PATCH 3/5] safina branch monday --- notebooks/travel_trip_data_safina.ipynb | 1641 +++++++++++++++++++++++ 1 file changed, 1641 insertions(+) create mode 100644 notebooks/travel_trip_data_safina.ipynb diff --git a/notebooks/travel_trip_data_safina.ipynb b/notebooks/travel_trip_data_safina.ipynb new file mode 100644 index 00000000..bcf87741 --- /dev/null +++ b/notebooks/travel_trip_data_safina.ipynb @@ -0,0 +1,1641 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 6, + "id": "c1e3f75d-b81e-42fe-bf48-cfe7e84ad8c9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Trip IDDestinationStart dateEnd dateDuration (days)Traveler nameTraveler ageTraveler genderTraveler nationalityAccommodation typeAccommodation costTransportation typeTransportation cost
01London, UK5/1/20235/8/20237.0John Smith35.0MaleAmericanHotel1200Flight600
12Phuket, Thailand6/15/20236/20/20235.0Jane Doe28.0FemaleCanadianResort800Flight500
23Bali, Indonesia7/1/20237/8/20237.0David Lee45.0MaleKoreanVilla1000Flight700
34New York, USA8/15/20238/29/202314.0Sarah Johnson29.0FemaleBritishHotel2000Flight1000
45Tokyo, Japan9/10/20239/17/20237.0Kim Nguyen26.0FemaleVietnameseAirbnb700Train200
56Paris, France10/5/202310/10/20235.0Michael Brown42.0MaleAmericanHotel1500Flight800
67Sydney, Australia11/20/202311/30/202310.0Emily Davis33.0FemaleAustralianHostel500Flight1200
78Rio de Janeiro, Brazil1/5/20241/12/20247.0Lucas Santos25.0MaleBrazilianAirbnb900Flight600
89Amsterdam, Netherlands2/14/20242/21/20247.0Laura Janssen31.0FemaleDutchHotel1200Train200
910Dubai, United Arab Emirates3/10/20243/17/20247.0Mohammed Ali39.0MaleEmiratiResort2500Flight800
\n", + "
" + ], + "text/plain": [ + " Trip ID Destination Start date End date \\\n", + "0 1 London, UK 5/1/2023 5/8/2023 \n", + "1 2 Phuket, Thailand 6/15/2023 6/20/2023 \n", + "2 3 Bali, Indonesia 7/1/2023 7/8/2023 \n", + "3 4 New York, USA 8/15/2023 8/29/2023 \n", + "4 5 Tokyo, Japan 9/10/2023 9/17/2023 \n", + "5 6 Paris, France 10/5/2023 10/10/2023 \n", + "6 7 Sydney, Australia 11/20/2023 11/30/2023 \n", + "7 8 Rio de Janeiro, Brazil 1/5/2024 1/12/2024 \n", + "8 9 Amsterdam, Netherlands 2/14/2024 2/21/2024 \n", + "9 10 Dubai, United Arab Emirates 3/10/2024 3/17/2024 \n", + "\n", + " Duration (days) Traveler name Traveler age Traveler gender \\\n", + "0 7.0 John Smith 35.0 Male \n", + "1 5.0 Jane Doe 28.0 Female \n", + "2 7.0 David Lee 45.0 Male \n", + "3 14.0 Sarah Johnson 29.0 Female \n", + "4 7.0 Kim Nguyen 26.0 Female \n", + "5 5.0 Michael Brown 42.0 Male \n", + "6 10.0 Emily Davis 33.0 Female \n", + "7 7.0 Lucas Santos 25.0 Male \n", + "8 7.0 Laura Janssen 31.0 Female \n", + "9 7.0 Mohammed Ali 39.0 Male \n", + "\n", + " Traveler nationality Accommodation type Accommodation cost \\\n", + "0 American Hotel 1200 \n", + "1 Canadian Resort 800 \n", + "2 Korean Villa 1000 \n", + "3 British Hotel 2000 \n", + "4 Vietnamese Airbnb 700 \n", + "5 American Hotel 1500 \n", + "6 Australian Hostel 500 \n", + "7 Brazilian Airbnb 900 \n", + "8 Dutch Hotel 1200 \n", + "9 Emirati Resort 2500 \n", + "\n", + " Transportation type Transportation cost \n", + "0 Flight 600 \n", + "1 Flight 500 \n", + "2 Flight 700 \n", + "3 Flight 1000 \n", + "4 Train 200 \n", + "5 Flight 800 \n", + "6 Flight 1200 \n", + "7 Flight 600 \n", + "8 Train 200 \n", + "9 Flight 800 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_data = \"../data/raw/Travel details dataset.csv\"\n", + "travel_trip_safina_df = pd.read_csv(travel_trip_data, encoding='ISO-8859-1')\n", + "travel_trip_safina_df.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "c0ab5b41-86e2-43e4-bc90-5c21be0a6b4e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Trip ID', 'Destination', 'Start date', 'End date', 'Duration (days)',\n", + " 'Traveler name', 'Traveler age', 'Traveler gender',\n", + " 'Traveler nationality', 'Accommodation type', 'Accommodation cost',\n", + " 'Transportation type', 'Transportation cost'],\n", + " dtype='object')" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_safina_df.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "25725ab6-a864-4979-a60d-fa7e135b5424", + "metadata": {}, + "outputs": [], + "source": [ + "travel_trip_safina_df.columns = travel_trip_safina_df.columns.str.replace(\"\", \"\", regex=False).str.replace(r\"[()]\", \"\", regex=True).str.strip(\")\").str.replace(\" \",\"_\").str.lower()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "270c5dec-c800-49fb-aec4-2d736b966d92", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['trip_id', 'destination', 'start_date', 'end_date', 'duration_days',\n", + " 'traveler_name', 'traveler_age', 'traveler_gender',\n", + " 'traveler_nationality', 'accommodation_type', 'accommodation_cost',\n", + " 'transportation_type', 'transportation_cost'],\n", + " dtype='object')" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_safina_df.columns = travel_trip_safina_df.columns.str.replace(\"\", \"\", regex=False).str.replace(r\"[()]\", \"\", regex=True).str.strip(\")\").str.replace(\" \",\"_\").str.lower()\n", + "travel_trip_safina_df.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "f055d801-5c7a-487a-92ee-c5e86fd25571", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "All steps completed successfully with the updated file path.\n", + "DataFrame variable name: travel_trip_safina_df\n", + "Data type of 'end_date': object\n", + "\n", + "First 5 rows of the converted 'end_date' column:\n", + " end_date\n", + "0 2023-05-08\n", + "1 2023-06-20\n", + "2 2023-07-08\n", + "3 2023-08-29\n", + "4 2023-09-17\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "# 1. DEFINE THE CORRECT ABSOLUTE PATH (using r-string for Windows backslashes)\n", + "travel_trip_data = r\"D:\\Ironhack\\Week4\\first_project\\data\\raw\\Travel details dataset.csv\"\n", + "\n", + "# 2. DEFINE COLUMN CLEANING FUNCTION\n", + "def clean_column(name):\n", + " \"\"\"Cleans column names by lowercasing, stripping whitespace, \n", + " replacing spaces with underscores, and removing the BOM character.\"\"\"\n", + " name = name.lower().strip().replace(\" \", \"_\").replace('', '') \n", + " return name\n", + "\n", + "# 3. LOAD DATA\n", + "# Load the data using your variable name, the correct path, and encoding.\n", + "try:\n", + " travel_trip_safina_df = pd.read_csv(travel_trip_data, encoding='ISO-8859-1')\n", + "except FileNotFoundError:\n", + " print(f\"\\nERROR: File not found. Please verify this path exists on your system: {travel_trip_data}\")\n", + " raise # Reraise the error so you can see it clearly\n", + "\n", + "# 4. APPLY COLUMN CLEANING\n", + "travel_trip_safina_df.columns = [clean_column(col) for col in travel_trip_safina_df.columns] \n", + "\n", + "# 5. CLEAN AND CONVERT 'end_date' TO STRING\n", + "# Convert to datetime first (essential cleaning to handle errors/format)\n", + "travel_trip_safina_df['end_date'] = pd.to_datetime(\n", + " travel_trip_safina_df['end_date'], \n", + " errors='coerce'\n", + ")\n", + "\n", + "# Convert the datetime object to the desired string format (YYYY-MM-DD)\n", + "travel_trip_safina_df['end_date'] = travel_trip_safina_df['end_date'].dt.strftime('%Y-%m-%d')\n", + "\n", + "\n", + "# 6. DISPLAY RESULTS\n", + "print(\"All steps completed successfully with the updated file path.\")\n", + "print(f\"DataFrame variable name: travel_trip_safina_df\")\n", + "print(f\"Data type of 'end_date': {travel_trip_safina_df['end_date'].dtype}\")\n", + "print(\"\\nFirst 5 rows of the converted 'end_date' column:\")\n", + "print(travel_trip_safina_df[['end_date']].head())" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "e327943d-a88c-4615-8059-aa9b98a9dff7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 2023-05\n", + "1 2023-06\n", + "2 2023-07\n", + "3 2023-08\n", + "4 2023-09\n", + " ... \n", + "134 2023-08\n", + "135 2023-08\n", + "136 2023-09\n", + "137 2023-09\n", + "138 2023-10\n", + "Name: end_date, Length: 139, dtype: object\n" + ] + } + ], + "source": [ + "# Assuming travel_trip_safina_df is loaded and 'end_date' is currently datetime (or has been converted in the steps above).\n", + "\n", + "# Convert the 'end_date' column to datetime first (if not already done)\n", + "travel_trip_safina_df['end_date'] = pd.to_datetime(\n", + " travel_trip_safina_df['end_date'], \n", + " errors='coerce'\n", + ")\n", + "\n", + "# Use .dt.strftime('%Y-%m') to format the date to Year and Month only.\n", + "travel_trip_safina_df['end_date'] = travel_trip_safina_df['end_date'].dt.strftime('%Y-%m')\n", + "\n", + "# Optional: Display the new data type and values\n", + "print(travel_trip_safina_df['end_date'])" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "2fd68450-aad7-460b-b06a-46a4fbae5824", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data loading and feature engineering complete.\n", + "\n", + "First 5 rows of all date columns:\n", + " start_date start_year start_month end_date end_year end_month\n", + "0 2023-05-01 2023 5 2023-05-08 2023 5\n", + "1 2023-06-15 2023 6 2023-06-20 2023 6\n", + "2 2023-07-01 2023 7 2023-07-08 2023 7\n", + "3 2023-08-15 2023 8 2023-08-29 2023 8\n", + "4 2023-09-10 2023 9 2023-09-17 2023 9\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "# 1. DEFINE THE ABSOLUTE FILE PATH\n", + "# Ensure this path is correct for your local machine:\n", + "travel_trip_data = r\"D:\\Ironhack\\Week4\\first_project\\data\\raw\\Travel details dataset.csv\"\n", + "\n", + "# 2. DEFINE COLUMN CLEANING FUNCTION\n", + "def clean_column(name):\n", + " \"\"\"Cleans column names by lowercasing, stripping whitespace, \n", + " replacing spaces with underscores, and removing the BOM character.\"\"\"\n", + " name = name.lower().strip().replace(\" \", \"_\").replace('', '') \n", + " return name\n", + "\n", + "# 3. LOAD DATA AND APPLY COLUMN CLEANING\n", + "try:\n", + " # Load the data using the corrected path and encoding\n", + " travel_trip_safina_df = pd.read_csv(travel_trip_data, encoding='ISO-8859-1')\n", + "except FileNotFoundError:\n", + " print(f\"Error: File not found at {travel_trip_data}. Please verify the path and file name.\")\n", + " raise\n", + "\n", + "# Apply the cleaning function to all column names\n", + "travel_trip_safina_df.columns = [clean_column(col) for col in travel_trip_safina_df.columns] \n", + "\n", + "# 4. CLEAN AND EXTRACT DATE COMPONENTS\n", + "\n", + "# --- Process 'end_date' column ---\n", + "# Convert to a clean datetime object\n", + "travel_trip_safina_df['end_date'] = pd.to_datetime(\n", + " travel_trip_safina_df['end_date'], \n", + " errors='coerce'\n", + ")\n", + "\n", + "# Create the 'end_year' and 'end_month' integer columns\n", + "travel_trip_safina_df['end_year'] = travel_trip_safina_df['end_date'].dt.year.astype('Int64')\n", + "travel_trip_safina_df['end_month'] = travel_trip_safina_df['end_date'].dt.month.astype('Int64')\n", + "\n", + "\n", + "# --- Process 'start_date' column ---\n", + "# Convert to a clean datetime object\n", + "travel_trip_safina_df['start_date'] = pd.to_datetime(\n", + " travel_trip_safina_df['start_date'], \n", + " errors='coerce'\n", + ")\n", + "\n", + "# Create the 'start_year' and 'start_month' integer columns\n", + "travel_trip_safina_df['start_year'] = travel_trip_safina_df['start_date'].dt.year.astype('Int64')\n", + "travel_trip_safina_df['start_month'] = travel_trip_safina_df['start_date'].dt.month.astype('Int64')\n", + "\n", + "\n", + "# 5. DISPLAY VERIFICATION (Optional)\n", + "print(\"Data loading and feature engineering complete.\")\n", + "print(\"\\nFirst 5 rows of all date columns:\")\n", + "print(travel_trip_safina_df[['start_date', 'start_year', 'start_month', \n", + " 'end_date', 'end_year', 'end_month']].head())" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "5634ba43-ec7b-45fe-ad10-4e3ec83105cc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " start_month start_month_name end_month end_month_name\n", + "0 5 May 5 May\n", + "1 6 June 6 June\n", + "2 7 July 7 July\n", + "3 8 August 8 August\n", + "4 9 September 9 September\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "# 1. Define the month mapping dictionary\n", + "month_map = {\n", + " 1: 'January', 2: 'February', 3: 'March', 4: 'April', \n", + " 5: 'May', 6: 'June', 7: 'July', 8: 'August', \n", + " 9: 'September', 10: 'October', 11: 'November', 12: 'December'\n", + "}\n", + "\n", + "# 2. Create 'start_month_name' by mapping the integer month to its name\n", + "travel_trip_safina_df['start_month_name'] = travel_trip_safina_df['start_month'].map(month_map)\n", + "\n", + "# 3. Create 'end_month_name' by mapping the integer month to its name\n", + "travel_trip_safina_df['end_month_name'] = travel_trip_safina_df['end_month'].map(month_map)\n", + "\n", + "# Optional: Display the first few rows for verification\n", + "print(travel_trip_safina_df[['start_month', 'start_month_name', 'end_month', 'end_month_name']].head())" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "2494e574-beba-42ab-8d53-ebea32cc91e2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " start_year start_month_name end_year end_month_name\n", + "0 2023 May 2023 May\n", + "1 2023 June 2023 June\n", + "2 2023 July 2023 July\n", + "3 2023 August 2023 August\n", + "4 2023 September 2023 September\n" + ] + } + ], + "source": [ + "print(travel_trip_safina_df[['start_year', 'start_month_name', 'end_year', 'end_month_name']].head())" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "f3e86d88-31cf-4892-822a-5792c04fdbe8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
trip_iddestinationstart_dateend_dateduration_(days)traveler_nametraveler_agetraveler_gendertraveler_nationalityaccommodation_typeaccommodation_costtransportation_typetransportation_costend_yearend_monthstart_yearstart_monthstart_month_nameend_month_name
01London, UK2023-05-012023-05-087.0John Smith35.0MaleAmericanHotel1200Flight6002023520235MayMay
12Phuket, Thailand2023-06-152023-06-205.0Jane Doe28.0FemaleCanadianResort800Flight5002023620236JuneJune
23Bali, Indonesia2023-07-012023-07-087.0David Lee45.0MaleKoreanVilla1000Flight7002023720237JulyJuly
34New York, USA2023-08-152023-08-2914.0Sarah Johnson29.0FemaleBritishHotel2000Flight10002023820238AugustAugust
45Tokyo, Japan2023-09-102023-09-177.0Kim Nguyen26.0FemaleVietnameseAirbnb700Train2002023920239SeptemberSeptember
............................................................
134135Rio de Janeiro, Brazil2023-08-012023-08-109.0Jose Perez37.0MaleBrazilianHostel2500Car20002023820238AugustAugust
135136Vancouver, Canada2023-08-152023-08-216.0Emma Wilson29.0FemaleCanadianHotel5000Airplane30002023820238AugustAugust
136137Bangkok, Thailand2023-09-012023-09-087.0Ryan Chen34.0MaleChineseHostel2000Train10002023920239SeptemberSeptember
137138Barcelona, Spain2023-09-152023-09-227.0Sofia Rodriguez25.0FemaleSpanishAirbnb6000Airplane25002023920239SeptemberSeptember
138139Auckland, New Zealand2023-10-012023-10-087.0William Brown39.0MaleNew ZealanderHotel7000Train2500202310202310OctoberOctober
\n", + "

139 rows × 19 columns

\n", + "
" + ], + "text/plain": [ + " trip_id destination start_date end_date duration_(days) \\\n", + "0 1 London, UK 2023-05-01 2023-05-08 7.0 \n", + "1 2 Phuket, Thailand 2023-06-15 2023-06-20 5.0 \n", + "2 3 Bali, Indonesia 2023-07-01 2023-07-08 7.0 \n", + "3 4 New York, USA 2023-08-15 2023-08-29 14.0 \n", + "4 5 Tokyo, Japan 2023-09-10 2023-09-17 7.0 \n", + ".. ... ... ... ... ... \n", + "134 135 Rio de Janeiro, Brazil 2023-08-01 2023-08-10 9.0 \n", + "135 136 Vancouver, Canada 2023-08-15 2023-08-21 6.0 \n", + "136 137 Bangkok, Thailand 2023-09-01 2023-09-08 7.0 \n", + "137 138 Barcelona, Spain 2023-09-15 2023-09-22 7.0 \n", + "138 139 Auckland, New Zealand 2023-10-01 2023-10-08 7.0 \n", + "\n", + " traveler_name traveler_age traveler_gender traveler_nationality \\\n", + "0 John Smith 35.0 Male American \n", + "1 Jane Doe 28.0 Female Canadian \n", + "2 David Lee 45.0 Male Korean \n", + "3 Sarah Johnson 29.0 Female British \n", + "4 Kim Nguyen 26.0 Female Vietnamese \n", + ".. ... ... ... ... \n", + "134 Jose Perez 37.0 Male Brazilian \n", + "135 Emma Wilson 29.0 Female Canadian \n", + "136 Ryan Chen 34.0 Male Chinese \n", + "137 Sofia Rodriguez 25.0 Female Spanish \n", + "138 William Brown 39.0 Male New Zealander \n", + "\n", + " accommodation_type accommodation_cost transportation_type \\\n", + "0 Hotel 1200 Flight \n", + "1 Resort 800 Flight \n", + "2 Villa 1000 Flight \n", + "3 Hotel 2000 Flight \n", + "4 Airbnb 700 Train \n", + ".. ... ... ... \n", + "134 Hostel 2500 Car \n", + "135 Hotel 5000 Airplane \n", + "136 Hostel 2000 Train \n", + "137 Airbnb 6000 Airplane \n", + "138 Hotel 7000 Train \n", + "\n", + " transportation_cost end_year end_month start_year start_month \\\n", + "0 600 2023 5 2023 5 \n", + "1 500 2023 6 2023 6 \n", + "2 700 2023 7 2023 7 \n", + "3 1000 2023 8 2023 8 \n", + "4 200 2023 9 2023 9 \n", + ".. ... ... ... ... ... \n", + "134 2000 2023 8 2023 8 \n", + "135 3000 2023 8 2023 8 \n", + "136 1000 2023 9 2023 9 \n", + "137 2500 2023 9 2023 9 \n", + "138 2500 2023 10 2023 10 \n", + "\n", + " start_month_name end_month_name \n", + "0 May May \n", + "1 June June \n", + "2 July July \n", + "3 August August \n", + "4 September September \n", + ".. ... ... \n", + "134 August August \n", + "135 August August \n", + "136 September September \n", + "137 September September \n", + "138 October October \n", + "\n", + "[139 rows x 19 columns]" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_safina_df" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "38d552e9-f5b1-443a-a4b9-ea1854ec554b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "File loaded successfully.\n", + "\n", + "--- Most Frequent Travel Durations (Top 10) ---\n", + "Duration (Days)\n", + "7 54\n", + "8 24\n", + "9 16\n", + "6 16\n", + "5 10\n", + "10 10\n", + "11 5\n", + "14 1\n", + "13 1\n", + "Name: Number of Trips, dtype: Int64\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWmZJREFUeJzt3XtcVHX+x/H3meEiIoKigIgKIl5SQVvN1Epdb+Uly+2ibuVlbS3dn1qmXdxWLddruW652VWyWq1ts5tumpWZrVtp6pq3rCTTRRJFQRFBZr6/P5SBEVQwjgP4ej4ePB7NZ87MfD7zHbD3nDNnLGOMEQAAAAAAKHcOXzcAAAAAAEBVRegGAAAAAMAmhG4AAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGxC6AaACsiyrFL9fPrpp7b38sorr2jQoEFq1qyZHA6HYmNjz7nt8ePHNX78eEVHR6tatWpq06aNXn/99VI9ztSpU2VZlhwOh/bs2VPs+uzsbNWsWVOWZWnYsGEXOc357dixQ1OnTtWPP/5Yqu1ffvnlc67NAw88YEuPFdWSJUs0f/78C253vues6M/5Xme+0rVrV3Xt2rVU2xXM4XA4FBISoiZNmujWW2/VP//5T7ndbvubPY/zvc6HDRtWIZ97AKjM/HzdAACguP/85z9elx9//HGtWbNGn3zyiVf9iiuusL2XV199VWlpabrqqqvkdrt16tSpc247cOBAbdiwQbNmzVLTpk21ZMkSDR48WG63W0OGDCnV49WoUUPJycl6/PHHvepvvvmmTp06JX9//180z/ns2LFD06ZNU9euXcsUPJKTk9W8eXOvWnR0dDl3V7EtWbJE27Zt0/jx48+7Xd++fYu9vjt27KhbbrlFEyZM8NQCAwPtaPOSady4sf7+979LOv2GUUpKit555x3deuutuvbaa/X+++8rNDTUJ72d73X+6KOPaty4cT7pCwCqKkI3AFRAV199tdflunXryuFwFKtfCqtWrZLDcfrAqH79+mnbtm0lbvevf/1Lq1ev9gRtSerWrZv27t2riRMn6vbbb5fT6bzg491+++1avHixpk2b5nlcSXrppZd0880367333iuHqcpXq1at1K5du1Jte+rUKVmWJT+/y/Of4Lp166pu3brF6pGRked9fbtcLuXn51eaMB4UFFRsnpEjRyo5OVkjRozQ73//e73xxhvl8lgnTpxQ9erVy+W+4uPjy+V+AACFOLwcACqpjIwMjR49WvXr11dAQIAaN26syZMnKzc312s7y7L0hz/8Qc8995yaNm2qwMBAXXHFFaU+7Lto8D2ft99+WzVq1NCtt97qVR8+fLhSU1P15Zdflup+RowYoX379mn16tWe2u7du/X5559rxIgRJd7mp59+0h133KGIiAgFBgaqRYsWevLJJ4sdxrtw4UIlJSWpRo0aCgkJUfPmzfXII49IOn3Yc0Hv3bp18xwe/PLLL5eq75J8+umnsixLr776qiZMmKD69esrMDBQ33//vSTpo48+Uvfu3VWzZk1Vr15dnTt31scff1zsflasWKE2bdooMDBQcXFxeuKJJzyH4xf48ccfz9mvZVmaOnWqV+27777TkCFDvJ6zv/3tbyX2v3TpUk2ePFnR0dGqWbOmevTooW+//dazXdeuXbVixQrt3bvX6xDxi1Uwy5w5czR9+nTFxcUpMDBQa9as0cmTJzVhwgS1adNGoaGhql27tjp27Kh3333X6z7atm2ra6+9tth9u1wu1a9fXwMHDvTU8vLyNH36dDVv3lyBgYGqW7euhg8frvT09Iue4VyGDx+uPn366M0339TevXu95i3N2hWs+6ZNm3TLLbeoVq1anqC8ceNGDRo0SLGxsQoKClJsbKwGDx7seRzpwq/zkg4vP3nypB5++GHFxcUpICBA9evX15gxY3T06FGv7WJjY9WvXz+tXLlSV155pYKCgtS8eXMtWrTIa7sTJ07ogQceUFxcnKpVq6batWurXbt2Wrp06UU8owBQ8V2eb7MDQCV38uRJdevWTT/88IOmTZumxMRErVu3TjNnztSWLVu0YsUKr+3fe+89rVmzRo899piCg4P1zDPPaPDgwfLz89Mtt9xSLj1t27ZNLVq0KLYHNzEx0XN9p06dLng/CQkJuvbaa7Vo0SL17t1bkrRo0SLFxsaqe/fuxbZPT09Xp06dlJeXp8cff1yxsbFavny5HnjgAf3www965plnJEmvv/66Ro8erf/7v//TE088IYfDoe+//147duyQdPqw5xkzZuiRRx7R3/72N1155ZWSSrfnr2AvbFFFn4eHH35YHTt21LPPPiuHw6GIiAi99tpruuuuuzRgwAAtXrxY/v7+eu6559S7d2+tWrXKM+vHH3+sAQMGqGPHjnr99dflcrk0Z84c/fzzzxfs61x27NihTp06qWHDhnryyScVFRWlVatWaezYsTp06JCmTJnitf0jjzyizp0768UXX1RWVpYefPBB9e/fXzt37pTT6dQzzzyj3//+9/rhhx/09ttvX3RfZ3vqqafUtGlTPfHEE6pZs6YSEhKUm5urjIwMPfDAA6pfv77y8vL00UcfaeDAgUpOTtZdd90l6XS4HTdunL777jslJCR47vPDDz9Uamqqhg8fLklyu90aMGCA1q1bp0mTJqlTp07au3evpkyZoq5du2rjxo0KCgoqt5kk6cYbb9S//vUvrVu3To0aNbqo+xg4cKAGDRqke+65R9nZ2ZJOh/dmzZpp0KBBql27tg4cOKCFCxeqffv22rFjh+rUqVPm17kxRjfddJM+/vhjPfzww7r22mu1detWTZkyRf/5z3/0n//8x+vog//+97+aMGGCHnroIUVGRurFF1/U7373OzVp0kTXXXedJOn+++/Xq6++qunTp6tt27bKzs7Wtm3bdPjw4Yt6LgCgwjMAgApv6NChJjg42HP52WefNZLMP/7xD6/tZs+ebSSZDz/80FOTZIKCgkxaWpqnlp+fb5o3b26aNGlSpj769u1rGjVqVOJ1CQkJpnfv3sXqqampRpKZMWPGee97ypQpRpJJT083ycnJJjAw0Bw+fNjk5+ebevXqmalTpxpjjAkODjZDhw713O6hhx4yksyXX37pdX/33nuvsSzLfPvtt8YYY/7whz+YsLCw8/bw5ptvGklmzZo1592uQHJyspFU4s+pU6fMmjVrjCRz3XXXed0uOzvb1K5d2/Tv39+r7nK5TFJSkrnqqqs8tQ4dOpjo6GiTk5PjqWVlZZnatWubov+Mp6SkGEkmOTm5WJ+SzJQpUzyXe/fubWJiYkxmZqbXdn/4wx9MtWrVTEZGhjHGePrv06eP13b/+Mc/jCTzn//8x1M732vjQiSZMWPGFJslPj7e5OXlnfe2+fn55tSpU+Z3v/udadu2rad+6NAhExAQYB555BGv7W+77TYTGRlpTp06ZYwxZunSpUaSeeutt7y227Bhg5FknnnmGU+tS5cupkuXLhecp0uXLqZly5bnvP6DDz4wkszs2bO95i3N2hX8nvzpT3+6YB/5+fnm+PHjJjg42Pz1r3/11M/3Oh86dKjXOq5cudJIMnPmzPHa7o033jCSzPPPP++pNWrUyFSrVs3s3bvXU8vJyTG1a9c2o0aN8tRatWplbrrppgv2DwBVBYeXA0Al9Mknnyg4OLjYXuqCs3qffYhy9+7dFRkZ6bnsdDp1++236/vvv9f+/fvLra/zHVJclsONb731VgUEBOjvf/+7/vWvfyktLe2cZyz/5JNPdMUVV+iqq67yqg8bNkzGGM/J56666iodPXpUgwcP1rvvvqtDhw6Vup8LeeWVV7Rhwwavn6J7un/zm994bb9+/XplZGRo6NChys/P9/y43W5df/312rBhg7Kzs5Wdna0NGzZo4MCBqlatmuf2ISEh6t+//0X1evLkSX388ce6+eabVb16da/H79Onj06ePKkvvvjC6zY33nij1+WCoxeKHrZshxtvvLHEE+e9+eab6ty5s2rUqCE/Pz/5+/vrpZde0s6dOz3bhIeHq3///lq8eLHnYwZHjhzRu+++q7vuusuzPsuXL1dYWJj69+/v9Vy0adNGUVFRtnxDgDHmF9/H2a8p6fS3Bzz44INq0qSJ/Pz85Ofnpxo1aig7O9vruSmLgt+fs3//br31VgUHBxf7W9OmTRs1bNjQc7latWpq2rSp12vlqquu0gcffKCHHnpIn376qXJyci6qNwCoLDi8HAAqocOHDysqKqpYkI2IiJCfn1+xwzSjoqKK3UdB7fDhw4qJifnFPYWHh5d4eGhGRoYkqXbt2qW+r+DgYN1+++1atGiRGjVqpB49epzzMNzDhw+XeKbxgrOHF/R05513Kj8/Xy+88IJ+85vfyO12q3379po+fbp69uxZ6t5K0qJFi/OeSK1evXpelwsODT/fof0ZGRmyLEtut/u861dWhw8fVn5+vp5++mk9/fTTJW5z9hsS4eHhXpcLDie2Oyyd/bxJ0rJly3Tbbbfp1ltv1cSJExUVFSU/Pz8tXLiw2GeHR4wYobfeekurV69W7969tXTpUuXm5noFyJ9//llHjx5VQEBAiT2U55szBQoC6C85w31Jz82QIUP08ccf69FHH1X79u09X7HXp0+fi16rw4cPy8/Pr9jJ7yzLUlRUVLHf+bNfK9Lp10vRx3/qqacUExOjN954Q7Nnz1a1atXUu3dvzZ071+ujAABQVRC6AaASCg8P15dffiljjFfwPnjwoPLz81WnTh2v7dPS0ordR0GtpP9JvhitW7fW0qVLlZ+f77WX95tvvpF0+gzfZTFixAi9+OKL2rp1q+erl0oSHh6uAwcOFKunpqZKktdzMXz4cA0fPlzZ2dn67LPPNGXKFPXr10+7d+++6M/WlsbZb44U9PT000+f84zdkZGRnjOdn2/9ChTsCT/7RHpnh6JatWrJ6XTqzjvv1JgxY0p87Li4uPNMc+mUdHTEa6+9pri4OL3xxhte1589tyT17t1b0dHRSk5OVu/evZWcnKwOHTp4fdVenTp1FB4erpUrV5bYQ0hISDlM4u29996TZVmezziXdu2KOvu5yczM1PLlyzVlyhQ99NBDnnrBZ+AvVnh4uPLz85Wenu4VvI0xSktLU/v27ct8n8HBwZo2bZqmTZumn3/+2bPXu3///tq1a9dF9woAFRWHlwNAJdS9e3cdP35c77zzjlf9lVde8Vxf1Mcff+x14i2Xy6U33nhD8fHx5bKXW5JuvvlmHT9+XG+99ZZXffHixYqOjlaHDh3KdH8dO3bUiBEjdPPNN+vmm28+53bdu3fXjh07tGnTJq/6K6+8Isuy1K1bt2K3CQ4O1g033KDJkycrLy9P27dvl3Tp9uB27txZYWFh2rFjh9q1a1fiT0BAgIKDg3XVVVdp2bJlOnnypOf2x44d0/vvv+91n5GRkapWrZq2bt3qVT/7rN7Vq1dXt27dtHnzZiUmJpb42BfzRszZezPtYlmWAgICvEJnWlpasTkled5ceOedd7Ru3Tpt3Lix2Bnw+/Xrp8OHD8vlcpX4XDRr1qxc+09OTtYHH3ygwYMHew7DLu3anY9lWTLGFPtKtRdffFEul8urVpbXecHfktdee82r/tZbbyk7O7vEkxuWRWRkpIYNG6bBgwfr22+/1YkTJ37R/QFARcSebgCohO666y797W9/09ChQ/Xjjz+qdevW+vzzzzVjxgz16dNHPXr08Nq+Tp06+vWvf61HH33Uc/byXbt2leprw3bs2OE5w3daWppOnDihf/7zn5KkK664wrPX8IYbblDPnj117733KisrS02aNNHSpUu1cuVKvfbaa6X6ju6zvfTSSxfc5r777tMrr7yivn376rHHHlOjRo20YsUKPfPMM7r33nvVtGlTSdLdd9+toKAgde7cWfXq1VNaWppmzpyp0NBQz966gr3xzz//vEJCQlStWjXFxcWV29EABWrUqKGnn35aQ4cOVUZGhm655RZFREQoPT1d//3vf5Wenq6FCxdKkh5//HFdf/316tmzpyZMmCCXy6XZs2crODjYaw+mZVm64447tGjRIsXHxyspKUlfffWVlixZUuzx//rXv+qaa67Rtddeq3vvvVexsbE6duyYvv/+e73//vuez/GWRevWrbVs2TItXLhQv/rVr+RwOEr93eVl0a9fPy1btkyjR4/WLbfcon379unxxx9XvXr19N133xXbfsSIEZo9e7aGDBmioKAg3X777V7XDxo0SH//+9/Vp08fjRs3TldddZX8/f21f/9+rVmzRgMGDDjvmz7nkpOT4/lsfE5Ojvbs2aN33nlHy5cvV5cuXfTss896ti3L2p1LzZo1dd1112nu3LmqU6eOYmNjtXbtWr300ksKCwvz2rYsr/OePXuqd+/eevDBB5WVlaXOnTt7zl7etm1b3XnnnWV+bjp06KB+/fopMTFRtWrV0s6dO/Xqq6+qY8eO5fZ94wBQofj0NG4AgFI5++zlxhhz+PBhc88995h69eoZPz8/06hRI/Pwww+bkydPem2nM2eGfuaZZ0x8fLzx9/c3zZs3N3//+99L9dgFZ0su6afoWZWNMebYsWNm7NixJioqygQEBJjExESzdOnSMj1Oenr6ebc7++zlxhizd+9eM2TIEBMeHm78/f1Ns2bNzNy5c43L5fJss3jxYtOtWzcTGRlpAgICTHR0tLntttvM1q1bve5r/vz5Ji4uzjidznOeUbpAwdnLN2zYUOL1BWf/fvPNN0u8fu3ataZv376mdu3axt/f39SvX9/07du32PbvvfeeSUxMNAEBAaZhw4Zm1qxZnuerqMzMTDNy5EgTGRlpgoODTf/+/c2PP/5Y4lqlpKSYESNGmPr16xt/f39Tt25d06lTJzN9+vQL9l/S2bYzMjLMLbfcYsLCwoxlWcV6Ox+d4+zlc+fOLXH7WbNmmdjYWBMYGGhatGhhXnjhhRKfjwKdOnUyksxvf/vbEq8/deqUeeKJJ0xSUpKpVq2aqVGjhmnevLkZNWqU+e677zzbleXs5UV/T4KDg03jxo3NLbfcYt58802v12WB0q7d+X5P9u/fb37zm9+YWrVqmZCQEHP99debbdu2mUaNGhX7nTnX6/zss5cbc/oM5A8++KBp1KiR8ff3N/Xq1TP33nuvOXLkiNd2jRo1Mn379i3x+Sj6vD300EOmXbt2platWiYwMNA0btzY3HfffebQoUPnfV4BoLKyjCmHU2gCACosy7I0ZswYLViwwNetoBxNnTpV06ZNK5czYQMAAPvwmW4AAAAAAGxC6AYAAAAAwCYcXg4AAAAAgE3Y0w0AAAAAgE0I3QAAAAAA2ITQDQAAAACATfx83YDd3G63UlNTFRISIsuyfN0OAAAAAKAKMMbo2LFjio6OlsNx7v3ZVT50p6amqkGDBr5uAwAAAABQBe3bt08xMTHnvL7Kh+6QkBBJp5+ImjVr+rgbAAAAAEBVkJWVpQYNGngy57lU+dBdcEh5zZo1Cd0AAAAAgHJ1oY8xcyI1AAAAAABsQugGAAAAAMAmhG4AAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGzi5+sGqpQnLV93UH4mGF93AAAAAACVHnu6AQAAAACwCaEbAAAAAACbELoBAAAAALAJoRsAAAAAAJsQugEAAAAAsAmhGwAAAAAAmxC6AQAAAACwCaEbAAAAAACbELoBAAAAALAJoRsAAAAAAJsQugEAAAAAsAmhGwAAAAAAmxC6AQAAAACwCaEbAAAAAACbELoBAAAAALAJoRsAAAAAAJsQugEAAAAAsAmhGwAAAAAAmxC6AQAAAACwCaEbAAAAAACbELoBAAAAALAJoRsAAAAAAJsQugEAAAAAsAmhGwAAAAAAmxC6AQAAAACwCaEbAAAAAACbELoBAAAAALAJoRsAAAAAAJsQugEAAAAAsAmhGwAAAAAAmxC6AQAAAACwiU9D99SpU2VZltdPVFSU53pjjKZOnaro6GgFBQWpa9eu2r59uw87BgAAAACg9Hy+p7tly5Y6cOCA5+ebb77xXDdnzhzNmzdPCxYs0IYNGxQVFaWePXvq2LFjPuwYAAAAAIDS8Xno9vPzU1RUlOenbt26kk7v5Z4/f74mT56sgQMHqlWrVlq8eLFOnDihJUuW+LhrAAAAAAAuzM/XDXz33XeKjo5WYGCgOnTooBkzZqhx48ZKSUlRWlqaevXq5dk2MDBQXbp00fr16zVq1KgS7y83N1e5ubmey1lZWZKk/Px85efnS5IcDoccDofcbrfcbrdn24K6y+WSMeaCdafTKcuyPPcrK+B03ZySZOQ6c9mzvcmTZMll+XvV/UyejBxyWYXLYcnIaU7JLYfcJdadclvOwh6NWw7lyy0/uS1HkbpLDrnksvxlZBWp58shd7G60+TLkrtwpiKzSpLL5SpV3c/PT8YYr7plWXI6ncWe93PVbVsnZmImZmImZmImZmImZmImZmKmXzjT2XOci09Dd4cOHfTKK6+oadOm+vnnnzV9+nR16tRJ27dvV1pamiQpMjLS6zaRkZHau3fvOe9z5syZmjZtWrH65s2bFRwcLEmqW7eu4uPjlZKSovT0dM82MTExiomJ0e7du5WZmempN27cWBEREdq2bZtycnI89ebNmyssLEybN28+veBREyVJienPKcCVpY1nLhdolzZXec6a2lq38A0DpztP7X+eq8zAWO2qPdhTD8o/pKT053QoKFF7wvp66qG5e9QiY6lSa3TW/pBrPfW6J7YoPnOFUkJ7K716m8KZjq1TzPHPtLvWLcoMbFw409EVisjZom11RijHr07hTBlLFZa7p3CmMxITExUQEKCNGzd6z9SunfLy8rR169bCmZxOtW/fXpmZmdq1a1fhTEFBSkpK0qFDh7Rnz57CmUJD1aJFC6Wmpmr//v2FM9m1TszETMzETMzETMzETMzETMzETL9wpuzsbJWGZYrGdx/Lzs5WfHy8Jk2apKuvvlqdO3dWamqq6tWr59nm7rvv1r59+7Ry5coS76OkPd0NGjTQ4cOHVbNmTUk2vlPz1OlQXyX2dI875d17JX33qaDHqvSOGjMxEzMxEzMxEzMxEzMxEzP5fqasrCyFh4crMzPTkzVLUqFCtyT17NlTTZo00cSJExUfH69Nmzapbdu2nusHDBigsLAwLV68uFT3l5WVpdDQ0As+EeXiSevC21QWEyrUywIAAAAAKpTSZk2fn0itqNzcXO3cuVP16tVTXFycoqKitHr1as/1eXl5Wrt2rTp16uTDLgEAAAAAKB2ffqb7gQceUP/+/dWwYUMdPHhQ06dPV1ZWloYOHSrLsjR+/HjNmDFDCQkJSkhI0IwZM1S9enUNGTLEl20DAAAAAFAqPg3d+/fv1+DBg3Xo0CHVrVtXV199tb744gs1atRIkjRp0iTl5ORo9OjROnLkiDp06KAPP/xQISEhvmwbAAAAAIBSqXCf6S5vfKb7IvGZbgAAAAA4p0r5mW4AAAAAAKoSQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2qTChe+bMmbIsS+PHj/fUjDGaOnWqoqOjFRQUpK5du2r79u2+axIAAAAAgDKoEKF7w4YNev7555WYmOhVnzNnjubNm6cFCxZow4YNioqKUs+ePXXs2DEfdQoAAAAAQOn5PHQfP35cv/3tb/XCCy+oVq1anroxRvPnz9fkyZM1cOBAtWrVSosXL9aJEye0ZMkSH3YMAAAAAEDp+Pm6gTFjxqhv377q0aOHpk+f7qmnpKQoLS1NvXr18tQCAwPVpUsXrV+/XqNGjSrx/nJzc5Wbm+u5nJWVJUnKz89Xfn6+JMnhcMjhcMjtdsvtdnu2Lai7XC4ZYy5YdzqdsizLc7+yAk7XzSlJRq4zlz3bmzxJllyWv1fdz+TJyCGXVbgcloyc5pTccshdYt0pt+Us7NG45VC+3PKT23IUqbvkkEsuy19GVpF6vhxyF6s7Tb4suQtnKjKrJLlcrlLV/fz8ZIzxqluWJafTWex5P1fdtnViJmZiJmZiJmZiJmZiJmZiJmb6hTOdPce5+DR0v/7669q0aZM2bNhQ7Lq0tDRJUmRkpFc9MjJSe/fuPed9zpw5U9OmTStW37x5s4KDgyVJdevWVXx8vFJSUpSenu7ZJiYmRjExMdq9e7cyMzM99caNGysiIkLbtm1TTk6Op968eXOFhYVp8+bNpxc8aqIkKTH9OQW4srTxzOUC7dLmKs9ZU1vrFr5h4HTnqf3Pc5UZGKtdtQd76kH5h5SU/pwOBSVqT1hfTz00d49aZCxVao3O2h9yrade98QWxWeuUEpob6VXb1M407F1ijn+mXbXukWZgY0LZzq6QhE5W7Stzgjl+NUpnCljqcJy9xTOdEZiYqICAgK0ceNG75natVNeXp62bt1aOJPTqfbt2yszM1O7du0qnCkoSElJSTp06JD27NlTOFNoqFq0aKHU1FTt37+/cCa71omZmImZmImZmImZmImZmImZmOkXzpSdna3SsEzR+H4J7du3T+3atdOHH36opKQkSVLXrl3Vpk0bzZ8/X+vXr1fnzp2VmpqqevXqeW539913a9++fVq5cmWJ91vSnu4GDRro8OHDqlmzpiQb36l56nSorxJ7used8u69kr77VNBjVXpHjZmYiZmYiZmYiZmYiZmYiZl8P1NWVpbCw8OVmZnpyZol8Vnofuedd3TzzTd7nkjp9JNpWZYcDoe+/fZbNWnSRJs2bVLbtm092wwYMEBhYWFavHhxqR4nKytLoaGhF3wiysWT1oW3qSwm+ORlAQAAAACVQmmzps9OpNa9e3d988032rJli+enXbt2+u1vf6stW7aocePGioqK0urVqz23ycvL09q1a9WpUydftQ0AAAAAQKn57DPdISEhatWqlVctODhY4eHhnvr48eM1Y8YMJSQkKCEhQTNmzFD16tU1ZMgQX7QMAAAAAECZ+Pzs5eczadIk5eTkaPTo0Tpy5Ig6dOigDz/8UCEhIb5uDQAAAACAC/LZZ7ovFT7TfZH4TDcAAAAAnFOF/0w3AAAAAABVHaEbAAAAAACbELoBAAAAALAJoRsAAAAAAJsQugEAAAAAsAmhGwAAAAAAmxC6AQAAAACwCaEbAAAAAACbELoBAAAAALAJoRsAAAAAAJsQugEAAAAAsAmhGwAAAAAAmxC6AQAAAACwCaEbAAAAAACbELoBAAAAALAJoRsAAAAAAJsQugEAAAAAsAmhGwAAAAAAmxC6AQAAAACwCaEbAAAAAACbELoBAAAAALAJoRsAAAAAAJsQugEAAAAAsAmhGwAAAAAAmxC6AQAAAACwCaEbAAAAAACbELoBAAAAALAJoRsAAAAAAJsQugEAAAAAsAmhGwAAAAAAmxC6AQAAAACwCaEbAAAAAACbELoBAAAAALAJoRsAAAAAAJsQugEAAAAAsAmhGwAAAAAAmxC6AQAAAACwCaEbAAAAAACbELoBAAAAALAJoRsAAAAAAJsQugEAAAAAsAmhGwAAAAAAmxC6AQAAAACwCaEbAAAAAACblDl079u3T/v37/dc/uqrrzR+/Hg9//zz5doYAAAAAACVXZlD95AhQ7RmzRpJUlpamnr27KmvvvpKjzzyiB577LFybxAAAAAAgMqqzKF727ZtuuqqqyRJ//jHP9SqVSutX79eS5Ys0csvv1ze/QEAAAAAUGmVOXSfOnVKgYGBkqSPPvpIN954oySpefPmOnDgQPl2BwAAAABAJVbm0N2yZUs9++yzWrdunVavXq3rr79ekpSamqrw8PBybxAAAAAAgMqqzKF79uzZeu6559S1a1cNHjxYSUlJkqT33nvPc9g5AAAAAACQ/Mp6g65du+rQoUPKyspSrVq1PPXf//73ql69erk2BwAAAABAZVbm0C1JTqdTp06d0rp162RZlpo2barY2Nhybg0AAAAAgMqtzIeXZ2Vl6c4771T9+vXVpUsXXXfddapfv77uuOMOZWZm2tEjAAAAAACVUplD98iRI/Xll19q+fLlOnr0qDIzM7V8+XJt3LhRd999tx09AgAAAABQKZX58PIVK1Zo1apVuuaaazy13r1764UXXvCcyRwAAAAAAFzEnu7w8HCFhoYWq4eGhnqdWA0AAAAAgMtdmUP3H//4R91///06cOCAp5aWlqaJEyfq0UcfLdfmAAAAAACozMp8ePnChQv1/fffq1GjRmrYsKEk6aefflJgYKDS09P13HPPebbdtGlT+XUKAAAAAEAlU+bQfdNNN9nQBgAAAAAAVU+ZQ/eUKVPs6AMAAAAAgCqnzJ/pBgAAAAAApVOqPd21a9fW7t27VadOHdWqVUuWZZ1z24yMjHJrDgAAAACAyqxUofsvf/mLQkJCJEnz58+3sx8AAAAAAKqMUoXuoUOHSpLy8/MlSb1791ZUVJR9XQEAAAAAUAWU6TPdfn5+uvfee5Wbm2tXPwAAAAAAVBllPpFahw4dtHnzZjt6AQAAAACgSinzV4aNHj1aEyZM0P79+/WrX/1KwcHBXtcnJiaWW3MAAAAAAFRmpQ7dI0aM0Pz583X77bdLksaOHeu5zrIsGWNkWZZcLlf5dwkAAAAAQCVU6tC9ePFizZo1SykpKXb2AwAAAABAlVHq0G2MkSQ1atTItmYAAAAAAKhKynQiNcuy7OoDAAAAAIAqp0wnUmvatOkFg3dGRsYvaggAAAAAgKqiTKF72rRpCg0NtasXAAAAAACqlDKF7kGDBikiIsKuXgAAAAAAqFJK/ZluPs8NAAAAAEDZlDp0F5y9HAAAAAAAlE6pDy93u9129gEAAAAAQJVTpq8MAwAAAAAApefT0L1w4UIlJiaqZs2aqlmzpjp27KgPPvjAc70xRlOnTlV0dLSCgoLUtWtXbd++3YcdAwAAAABQej4N3TExMZo1a5Y2btyojRs36te//rUGDBjgCdZz5szRvHnztGDBAm3YsEFRUVHq2bOnjh075su2AQAAAAAolVKF7iuvvFJHjhyRJD322GM6ceJEuTx4//791adPHzVt2lRNmzbVn//8Z9WoUUNffPGFjDGaP3++Jk+erIEDB6pVq1ZavHixTpw4oSVLlpTL4wMAAAAAYKdShe6dO3cqOztbkjRt2jQdP3683BtxuVx6/fXXlZ2drY4dOyolJUVpaWnq1auXZ5vAwEB16dJF69evL/fHBwAAAACgvJXq7OVt2rTR8OHDdc0118gYoyeeeEI1atQocds//elPZWrgm2++UceOHXXy5EnVqFFDb7/9tq644gpPsI6MjPTaPjIyUnv37j3n/eXm5io3N9dzOSsrS5KUn5+v/Px8SZLD4ZDD4ZDb7fY6K3tB3eVyeX1F2rnqTqdTlmV57ldWwOm6OSXJyHXmsmd7kyfJksvy96r7mTwZOeSyCpfDkpHTnJJbDrlLrDvltpyFPRq3HMqXW35yW44idZcccsll+cvIKlLPl0PuYnWnyZcld+FMRWaVTr85Upq6n5+fjDFedcuy5HQ6iz3v56rbtk7MxEzMxEzMxEzMxEzMxEzMxEy/cKaz5ziXUoXul19+WVOmTNHy5ctlWZY++OAD+fkVv6llWWUO3c2aNdOWLVt09OhRvfXWWxo6dKjWrl3rdZ9FGWOK1YqaOXOmpk2bVqy+efNmBQcHS5Lq1q2r+Ph4paSkKD093bNNTEyMYmJitHv3bmVmZnrqjRs3VkREhLZt26acnBxPvXnz5goLC9PmzZtPL3jURElSYvpzCnBlaeOZywXapc1VnrOmttYd5ak53Xlq//NcZQbGalftwZ56UP4hJaU/p0NBidoT1tdTD83doxYZS5Vao7P2h1zrqdc9sUXxmSuUEtpb6dXbFM50bJ1ijn+m3bVuUWZg48KZjq5QRM4WbaszQjl+dQpnyliqsNw9hTOdkZiYqICAAG3cuNF7pnbtlJeXp61btxbO5HSqffv2yszM1K5duwpnCgpSUlKSDh06pD179hTOFBqqFi1aKDU1Vfv37y+cya51YiZmYiZmYiZmYiZmYiZmYiZm+oUzFRwNfiGWKRrfS8HhcCgtLU0RERFluVmp9ejRQ/Hx8XrwwQcVHx+vTZs2qW3btp7rBwwYoLCwMC1evLjE25e0p7tBgwY6fPiwatas6ZnBlndqnjod6qvEnu5xp7x7r6TvPhX0WJXeUWMmZmImZmImZmImZmImZmIm38+UlZWl8PBwZWZmerJmScocuu3WvXt3NWjQQMnJyYqOjtZ9992nSZMmSZLy8vIUERGh2bNna9SoURe4p9OysrIUGhp6wSeiXDx57j3wlc6ECvWyAAAAAIAKpbRZs1SHl5/thx9+0Pz587Vz505ZlqUWLVpo3Lhxio+PL9P9PPLII7rhhhvUoEEDHTt2TK+//ro+/fRTrVy5UpZlafz48ZoxY4YSEhKUkJCgGTNmqHr16hoyZMjFtA0AAAAAwCVV5tC9atUq3XjjjWrTpo06d+4sY4zWr1+vli1b6v3331fPnj1LfV8///yz7rzzTh04cEChoaFKTEzUypUrPfcxadIk5eTkaPTo0Tpy5Ig6dOigDz/8UCEhIWVtGwAAAACAS67Mh5e3bdtWvXv31qxZs7zqDz30kD788ENt2rSpXBv8pTi8/CJxeDkAAAAAnFNps2apvqe7qJ07d+p3v/tdsfqIESO0Y8eOst4dAAAAAABVVplDd926dbVly5Zi9S1btth2RnMAAAAAACqjMn+m++6779bvf/977dmzR506dZJlWfr88881e/ZsTZgwwY4eAQAAAAColMocuh999FGFhIToySef1MMPPyxJio6O1tSpUzV27NhybxAAAAAAgMrqF31P97FjxySpQp9NnBOpXSROpAYAAAAA52Tr93QXqMhhGwAAAAAAXyvzidQAAAAAAEDpELoBAAAAALAJoRsAAAAAAJuUKXSfOnVK3bp10+7du+3qBwAAAACAKqNModvf31/btm2TZVWhs3QDAAAAAGCTMh9eftddd+mll16yoxcAAAAAAKqUMn9lWF5enl588UWtXr1a7dq1U3BwsNf18+bNK7fmAAAAAACozMocurdt26Yrr7xSkop9tpvDzgEAAAAAKFTm0L1mzRo7+gAAAAAAoMq56K8M+/7777Vq1Srl5ORIkowx5dYUAAAAAABVQZlD9+HDh9W9e3c1bdpUffr00YEDByRJI0eO1IQJE8q9QQAAAAAAKqsyh+777rtP/v7++umnn1S9enVP/fbbb9fKlSvLtTkAAAAAACqzMn+m+8MPP9SqVasUExPjVU9ISNDevXvLrTEAAAAAACq7Mu/pzs7O9trDXeDQoUMKDAwsl6YAAAAAAKgKyhy6r7vuOr3yyiuey5Zlye12a+7cuerWrVu5NgcAAAAAQGVW5sPL586dq65du2rjxo3Ky8vTpEmTtH37dmVkZOjf//63HT0CAAAAAFAplXlP9xVXXKGtW7fqqquuUs+ePZWdna2BAwdq8+bNio+Pt6NHAAAAAAAqpTLv6ZakqKgoTZs2rbx7AQAAAACgSrmo0H3kyBG99NJL2rlzpyzLUosWLTR8+HDVrl27vPsDAAAAAKDSKvPh5WvXrlVcXJyeeuopHTlyRBkZGXrqqacUFxentWvX2tEjAAAAAACVUpn3dI8ZM0a33XabFi5cKKfTKUlyuVwaPXq0xowZo23btpV7kwAAAAAAVEZl3tP9ww8/aMKECZ7ALUlOp1P333+/fvjhh3JtDgAAAACAyqzMofvKK6/Uzp07i9V37typNm3alEdPAAAAAABUCaU6vHzr1q2e/x47dqzGjRun77//XldffbUk6YsvvtDf/vY3zZo1y54uAQAAAACohCxjjLnQRg6HQ5Zl6UKbWpYll8tVbs2Vh6ysLIWGhiozM1M1a9a098GetOy9/0tpwgVfFgAAAABw2Spt1izVnu6UlJRyawwAAAAAgMtFqUJ3o0aN7O4DAAAAAIAqp8xfGSZJ//vf//Tvf/9bBw8elNvt9rpu7Nix5dIYAAAAAACVXZlDd3Jysu655x4FBAQoPDxcllX4OWbLsgjdAAAAAACcUebQ/ac//Ul/+tOf9PDDD8vhKPM3jgEAAAAAcNkoc2o+ceKEBg0aROAGAAAAAOACypycf/e73+nNN9+0oxcAAAAAAKqUMh9ePnPmTPXr108rV65U69at5e/v73X9vHnzyq05AAAAAAAqszKH7hkzZmjVqlVq1qyZJBU7kRoAAAAAADitzKF73rx5WrRokYYNG2ZDOwAAAAAAVB1l/kx3YGCgOnfubEcvAAAAAABUKWUO3ePGjdPTTz9tRy8AAAAAAFQpZT68/KuvvtInn3yi5cuXq2XLlsVOpLZs2bJyaw4AAAAAgMqszKE7LCxMAwcOtKMXAAAAAACqlDKH7uTkZDv6AAAAAACgyinzZ7oBAAAAAEDplHlPd1xc3Hm/j3vPnj2/qCGg3D1Zhb4/foLxdQcAAAAAyqDMoXv8+PFel0+dOqXNmzdr5cqVmjhxYnn1BQAAAABApVfm0D1u3LgS63/729+0cePGX9wQAAAAAABVRbl9pvuGG27QW2+9VV53BwAAAABApVduofuf//ynateuXV53BwAAAABApVfmw8vbtm3rdSI1Y4zS0tKUnp6uZ555plybAwAAAACgMitz6L7pppu8LjscDtWtW1ddu3ZV8+bNy6svAAAAAAAqvTKH7ilTptjRBwAAAAAAVU65faYbAAAAAAB4K/WebofD4fVZ7pJYlqX8/Pxf3BQAAAAAAFVBqUP322+/fc7r1q9fr6efflrGmHJpCgAAAACAqqDUoXvAgAHFart27dLDDz+s999/X7/97W/1+OOPl2tzAAAAAABUZhf1me7U1FTdfffdSkxMVH5+vrZs2aLFixerYcOG5d0fAAAAAACVVplCd2Zmph588EE1adJE27dv18cff6z3339frVq1sqs/AAAAAAAqrVIfXj5nzhzNnj1bUVFRWrp0aYmHmwMAAAAAgEKWKeXZzxwOh4KCgtSjRw85nc5zbrds2bJya648ZGVlKTQ0VJmZmapZs6a9D/bk+c/uXqlMqEInxWNdAAAAAJSz0mbNUu/pvuuuuy74lWEAAAAAAKBQqUP3yy+/bGMbAAAAAABUPRd19nIAAAAAAHBhhG4AAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGzi09A9c+ZMtW/fXiEhIYqIiNBNN92kb7/91msbY4ymTp2q6OhoBQUFqWvXrtq+fbuPOgYAAAAAoPR8GrrXrl2rMWPG6IsvvtDq1auVn5+vXr16KTs727PNnDlzNG/ePC1YsEAbNmxQVFSUevbsqWPHjvmwcwAAAAAALszPlw++cuVKr8vJycmKiIjQ119/reuuu07GGM2fP1+TJ0/WwIEDJUmLFy9WZGSklixZolGjRvmibQAAAAAASsWnoftsmZmZkqTatWtLklJSUpSWlqZevXp5tgkMDFSXLl20fv36EkN3bm6ucnNzPZezsrIkSfn5+crPz5ckORwOORwOud1uud1uz7YFdZfLJWPMBetOp1OWZXnuV1bA6bo5JcnIdeayZ3uTJ8mSy/L3qvuZPBk55LIKl8OSkdOcklsOuUusO+W2nIU9GrccypdbfnJbjiJ1lxxyyWX5y8gqUs+XQ+5idafJlyV34UxFZpUkl8tVqrqfn5+MMV51y7LkdDqLPe/nqpfbOslxeqZi61EJ1+nMuhR77RX0XpnXiZmYiZmYiZmYiZmYiZmYqRLNdPYc51JhQrcxRvfff7+uueYatWrVSpKUlpYmSYqMjPTaNjIyUnv37i3xfmbOnKlp06YVq2/evFnBwcGSpLp16yo+Pl4pKSlKT0/3bBMTE6OYmBjt3r3b8waAJDVu3FgRERHatm2bcnJyPPXmzZsrLCxMmzdvPr3gURMlSYnpzynAlaWNZy4XaJc2V3nOmtpat/DNAqc7T+1/nqvMwFjtqj3YUw/KP6Sk9Od0KChRe8L6euqhuXvUImOpUmt01v6Qaz31uie2KD5zhVJCeyu9epvCmY6tU8zxz7S71i3KDGxcONPRFYrI2aJtdUYox69O4UwZSxWWu6dwpjMSExMVEBCgjRs3es/Urp3y8vK0devWwpmcTrVv316ZmZnatWtX4UxBQUpKStKhQ4e0Z8+ewplCQ9WiRQulpqZq//79hTOV1zoFxp6eKWKcXI7CgF0p1+nM81/stVcwU2VeJ2ZiJmZiJmZiJmZiJmZipko0U9GPRZ+PZYrGdx8aM2aMVqxYoc8//1wxMTGSpPXr16tz585KTU1VvXr1PNvefffd2rdvX7HD06WS93Q3aNBAhw8fVs2aNSXZ+E7NU6dDfaXcg+rp8cye7nGnvHuvpO8+SZLzr4FVZ0/32NO/2FXtXUJmYiZmYiZmYiZmYiZmYqbKNlNWVpbCw8OVmZnpyZolqRCh+//+7//0zjvv6LPPPlNcXJynvmfPHsXHx2vTpk1q27atpz5gwACFhYVp8eLFF7zvrKwshYaGXvCJKBdPWhfeprKY4POXRflhXQAAAACUs9JmTZ+evdwYoz/84Q9atmyZPvnkE6/ALUlxcXGKiorS6tWrPbW8vDytXbtWnTp1utTtAgAAAABQJj79TPeYMWO0ZMkSvfvuuwoJCfF8hjs0NFRBQUGyLEvjx4/XjBkzlJCQoISEBM2YMUPVq1fXkCFDfNk6AAAAAAAX5NPQvXDhQklS165dverJyckaNmyYJGnSpEnKycnR6NGjdeTIEXXo0EEffvihQkJCLnG3AAAAAACUjU9Dd2k+Tm5ZlqZOnaqpU6fa3xAAAAAAAOXIp5/pBgAAAACgKiN0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADbx83UDAC5jT1q+7qD8TDC+7qD8VKV1karW2gAAgEqHPd0AAAAAANiE0A0AAAAAgE0I3QAAAAAA2ITQDQAAAACATQjdAAAAAADYhNANAAAAAIBNCN0AAAAAANiE0A0AAAAAgE0I3QAAAAAA2ITQDQAAAACATQjdAAAAAADYhNANAAAAAIBNCN0AAAAAANiE0A0AAAAAgE0I3QAAAAAA2ITQDQAAAACATQjdAAAAAADYhNANAAAAAIBNCN0AAAAAANiE0A0AAAAAgE0I3QAAAAAA2ITQDQAAAACATQjdAAAAAADYhNANAAAAAIBNCN0AAAAAANiE0A0AAAAAgE0I3QAAAAAA2ITQDQAAAACATQjdAAAAAADYhNANAAAAAIBNCN0AAAAAANiE0A0AAAAAgE0I3QAAAAAA2ITQDQAAAACATQjdAAAAAADYhNANAAAAAIBNCN0AAAAAANiE0A0AAAAAgE0I3QAAAAAA2ITQDQAAAACATQjdAAAAAADYhNANAAAAAIBNCN0AAAAAANiE0A0AAAAAgE0I3QAAAAAA2ITQDQAAAACATQjdAAAAAADYhNANAAAAAIBNfBq6P/vsM/Xv31/R0dGyLEvvvPOO1/XGGE2dOlXR0dEKCgpS165dtX37dt80CwAAAABAGfk0dGdnZyspKUkLFiwo8fo5c+Zo3rx5WrBggTZs2KCoqCj17NlTx44du8SdAgAAAABQdn6+fPAbbrhBN9xwQ4nXGWM0f/58TZ48WQMHDpQkLV68WJGRkVqyZIlGjRp1KVsFAAAAAKDMfBq6zyclJUVpaWnq1auXpxYYGKguXbpo/fr15wzdubm5ys3N9VzOysqSJOXn5ys/P1+S5HA45HA45Ha75Xa7PdsW1F0ul4wxF6w7nU5ZluW5X1kBp+vmlCQj15nLnu1NniRLLsvfq+5n8mTkkMsqXA5LRk5zSm455C6x7pTbchb2aNxyKF9u+cltOYrUXXLIJZflLyOrSD1fDrmL1Z0mX5bchTMVmVWSXC5Xqep+fn4yxnjVLcuS0+ks9ryfq15u6yTH6ZmKrUclXKcz61LstVfQe2VbpyLPvee1V2nXSRf+G1GkLlXgdbICLvw3ojKt01l/+6vMOjETMzETMzETMzGTT2c6e45zqbChOy0tTZIUGRnpVY+MjNTevXvPebuZM2dq2rRpxeqbN29WcHCwJKlu3bqKj49XSkqK0tPTPdvExMQoJiZGu3fvVmZmpqfeuHFjRUREaNu2bcrJyfHUmzdvrrCwMG3evPn0gkdNlCQlpj+nAFeWNp65XKBd2lzlOWtqa93CNwyc7jy1/3muMgNjtav2YE89KP+QktKf06GgRO0J6+uph+buUYuMpUqt0Vn7Q6711Oue2KL4zBVKCe2t9OptCmc6tk4xxz/T7lq3KDOwceFMR1coImeLttUZoRy/OoUzZSxVWO6ewpnOSExMVEBAgDZu3Og9U7t2ysvL09atWwtncjrVvn17ZWZmateuXYUzBQUpKSlJhw4d0p49ewpnCg1VixYtlJqaqv379xfOVF7rFBh7eqaIcXI5CgNBpVynM89/sddewUyVbZ2KPPee115lXSfpwn8jCmaq6OsUNfHCfyMq0zqdeZ5L/be8Iq/TK3eW/Dei7qiS1ylyYjmsU+NzrFObc6zTdedYp77e63TdPb/s39yCmSrCOu1Zfnqmgtde7cGVe51a/dFT/8X/b1QwU0VYJ2ZiJmZipnKeKTs7W6VhmaLx3Ycsy9Lbb7+tm266SZK0fv16de7cWampqapXr55nu7vvvlv79u3TypUrS7yfkvZ0N2jQQIcPH1bNmjUl2fhOzVOnQ32F3uPjqV9gL9a4U969V9J3nyTJ+dfAyrdnzlM/a53Gnv7FrjLvEv61emGPlXEPqqeeL8cEV9V5N/ep4Kq1p/vM702VeNd9XkDZ/pZX5HUan1N19o6c+ff/ov/NrWjrNK7wf5Av971YzMRMzMRM56tnZWUpPDxcmZmZnqxZkgq7pzsqKkrS6T3eRUP3wYMHi+39LiowMFCBgYHF6n5+fvLz8x634Ik7W8HilrbuuV+T510/6/KZjUqsW3KXWHfILUeJdZccxlVCPV+OEt5GOf0PeOnrZz9XF1O3LKvE+rme97LWS79Op3+JSl6PSrZOZz2flX6dSnjOKvU6XehvxC+oX9J1KvIcnfNvRGVap7Oet0q9TmX9W16R1+nMfBf9b+4vqJf7Op31PFT6dSrhuakS63QWZmKmc9WZiZmk0s10rn6LPUaptvKBuLg4RUVFafXq1Z5aXl6e1q5dq06dOvmwMwAAAAAASsene7qPHz+u77//3nM5JSVFW7ZsUe3atdWwYUONHz9eM2bMUEJCghISEjRjxgxVr15dQ4YM8WHXAAAAAACUjk9D98aNG9WtWzfP5fvvv1+SNHToUL388suaNGmScnJyNHr0aB05ckQdOnTQhx9+qJCQEF+1DAAAAABAqfk0dHft2tXrw+lnsyxLU6dO1dSpUy9dUwAAAAAAlJMK+5luAAAAAAAqO0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA2IXQDAAAAAGATQjcAAAAAADYhdAMAAAAAYBNCNwAAAAAANiF0AwAAAABgE0I3AAAAAAA28fN1AwAAAIAtnrR83UH5mWB83QGAi8SebgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGzi5+sGAAAAAFxmnrR83UH5mWB83UH5YV1swZ5uAAAAAABsQugGAAAAAMAmhG4AAAAAAGxSKUL3M888o7i4OFWrVk2/+tWvtG7dOl+3BAAAAADABVX40P3GG29o/Pjxmjx5sjZv3qxrr71WN9xwg3766SdftwYAAAAAwHlV+NA9b948/e53v9PIkSPVokULzZ8/Xw0aNNDChQt93RoAAAAAAOdVoUN3Xl6evv76a/Xq1cur3qtXL61fv95HXQEAAAAAUDoV+nu6Dx06JJfLpcjISK96ZGSk0tLSSrxNbm6ucnNzPZczMzMlSRkZGcrPz5ckORwOORwOud1uud1uz7YFdZfLJWPMBetOp1OWZXnuV7n+p+vmlCTJZfl79Xauup85JSNLLqtwOSwZOU2+3LLkLrHukNtyFvZo3HLIJbeccluOInWXHHLLZfnJyCpSz5dDpljdafJlySg/I8O7d+fpx3K5XKWq+/n5yRjjVbcsS06ns9jzfq56ua3TSev0TKVcjwq9TmfWpdhrr6D3yrZOuYXPsee1V1nXKSvrwn8jitSlCrxOuf4X/htRmdbpzO9Nqf+WF6lLFWydcsv4t7wir9PRo7/s39widcnH63Tmb9lF/5tb0dapyP8D/OL/NypSl3ywTidVfv9v5Ot1ysiw7/9hi9SlS7ROnt+bcv5/WF+s09Gj9vw/rC/WKdfv0mSNS7FOZ/6W2Zk1srKyJMlru5JY5kJb+FBqaqrq16+v9evXq2PHjp76n//8Z7366qvatWtXsdtMnTpV06ZNu5RtAgAAAAAuU/v27VNMTMw5r6/Qe7rr1Kkjp9NZbK/2wYMHi+39LvDwww/r/vvv91x2u93KyMhQeHi4LMsq8TaVRVZWlho0aKB9+/apZs2avm4HRbA2FRPrUnGxNhUXa1MxsS4VF2tTMbEuFVdVWhtjjI4dO6bo6OjzblehQ3dAQIB+9atfafXq1br55ps99dWrV2vAgAEl3iYwMFCBgYFetbCwMDvbvORq1qxZ6V+gVRVrUzGxLhUXa1NxsTYVE+tScbE2FRPrUnFVlbUJDQ294DYVOnRL0v33368777xT7dq1U8eOHfX888/rp59+0j333OPr1gAAAAAAOK8KH7pvv/12HT58WI899pgOHDigVq1a6V//+pcaNWrk69YAAAAAADivCh+6JWn06NEaPXq0r9vwucDAQE2ZMqXY4fPwPdamYmJdKi7WpuJibSom1qXiYm0qJtal4roc16ZCn70cAAAAAIDKzHHhTQAAAAAAwMUgdAMAAAAAYBNCNwAAAAAANiF0VwKxsbGyLKvYz5gxY3zd2mUtPz9ff/zjHxUXF6egoCA1btxYjz32mNxut69bg6Rjx45p/PjxatSokYKCgtSpUydt2LDB121B0v/+9z/dcccdCg8PV/Xq1dWmTRt9/fXXvm7rsjZ16tRi/8ZERUX5uq3L0meffab+/fsrOjpalmXpnXfe8breGKOpU6cqOjpaQUFB6tq1q7Zv3+6bZi8jF1qXZcuWqXfv3qpTp44sy9KWLVt80ufl6EJrU9SoUaNkWZbmz59/yfq7XF1oXaZOnarmzZsrODhYtWrVUo8ePfTll1/6ptlLgNBdCWzYsEEHDhzw/KxevVqSdOutt/q4s8vb7Nmz9eyzz2rBggXauXOn5syZo7lz5+rpp5/2dWuQNHLkSK1evVqvvvqqvvnmG/Xq1Us9evTQ//73P1+3dlk7cuSIOnfuLH9/f33wwQfasWOHnnzySYWFhfm6tctey5Ytvf6t+eabb3zd0mUpOztbSUlJWrBgQYnXz5kzR/PmzdOCBQu0YcMGRUVFqWfPnjp27Ngl7vTycqF1yc7OVufOnTVr1qxL3BkutDYF3nnnHX355ZeKjo6+RJ1d3i60Lk2bNtWCBQv0zTff6PPPP1dsbKx69eql9PT0S9zpJWJQ6YwbN87Ex8cbt9vt61Yua3379jUjRozwqg0cONDccccdPuoIBU6cOGGcTqdZvny5Vz0pKclMnjzZR13BGGMefPBBc8011/i6DZxlypQpJikpyddt4CySzNtvv+257Ha7TVRUlJk1a5andvLkSRMaGmqeffZZH3R4eTp7XYpKSUkxkszmzZsvaU847Vxrs3//flO/fn2zbds206hRI/OXv/zlkvd2OTvf70yBzMxMI8l89NFHl6apS4w93ZVMXl6eXnvtNY0YMUKWZfm6ncvaNddco48//li7d++WJP33v//V559/rj59+vi4M+Tn58vlcqlatWpe9aCgIH3++ec+6gqS9N5776ldu3a69dZbFRERobZt2+qFF17wdVuQ9N133yk6OlpxcXEaNGiQ9uzZ4+uWcJaUlBSlpaWpV69enlpgYKC6dOmi9evX+7AzoOJyu9268847NXHiRLVs2dLX7aAEeXl5ev755xUaGqqkpCRft2MLQncl88477+jo0aMaNmyYr1u57D344IMaPHiwmjdvLn9/f7Vt21bjx4/X4MGDfd3aZS8kJEQdO3bU448/rtTUVLlcLr322mv68ssvdeDAAV+3d1nbs2ePFi5cqISEBK1atUr33HOPxo4dq1deecXXrV3WOnTooFdeeUWrVq3SCy+8oLS0NHXq1EmHDx/2dWsoIi0tTZIUGRnpVY+MjPRcB8Db7Nmz5efnp7Fjx/q6FZxl+fLlqlGjhqpVq6a//OUvWr16terUqePrtmzh5+sGUDYvvfSSbrjhBj6PUgG88cYbeu2117RkyRK1bNlSW7Zs0fjx4xUdHa2hQ4f6ur3L3quvvqoRI0aofv36cjqduvLKKzVkyBBt2rTJ161d1txut9q1a6cZM2ZIktq2bavt27dr4cKFuuuuu3zc3eXrhhtu8Px369at1bFjR8XHx2vx4sW6//77fdgZSnL2kW7GGI5+A0rw9ddf669//as2bdrE70gF1K1bN23ZskWHDh3SCy+8oNtuu01ffvmlIiIifN1auWNPdyWyd+9effTRRxo5cqSvW4GkiRMn6qGHHtKgQYPUunVr3Xnnnbrvvvs0c+ZMX7cGSfHx8Vq7dq2OHz+uffv26auvvtKpU6cUFxfn69Yua/Xq1dMVV1zhVWvRooV++uknH3WEkgQHB6t169b67rvvfN0Kiig4o/zZe7UPHjxYbO83AGndunU6ePCgGjZsKD8/P/n5+Wnv3r2aMGGCYmNjfd3eZS84OFhNmjTR1VdfrZdeekl+fn566aWXfN2WLQjdlUhycrIiIiLUt29fX7cCSSdOnJDD4f0r5HQ6+cqwCiY4OFj16tXTkSNHtGrVKg0YMMDXLV3WOnfurG+//dartnv3bjVq1MhHHaEkubm52rlzp+rVq+frVlBEXFycoqKiPN9iIp3+LOTatWvVqVMnH3YGVEx33nmntm7dqi1btnh+oqOjNXHiRK1atcrX7eEsxhjl5ub6ug1bcHh5JeF2u5WcnKyhQ4fKz49lqwj69++vP//5z2rYsKFatmypzZs3a968eRoxYoSvW4OkVatWyRijZs2a6fvvv9fEiRPVrFkzDR8+3NetXdbuu+8+derUSTNmzNBtt92mr776Ss8//7yef/55X7d2WXvggQfUv39/NWzYUAcPHtT06dOVlZXFR2V84Pjx4/r+++89l1NSUrRlyxbVrl1bDRs21Pjx4zVjxgwlJCQoISFBM2bMUPXq1TVkyBAfdl31XWhdMjIy9NNPPyk1NVWSPG8uRkVF8Z33NrvQ2oSHh3tt7+/vr6ioKDVr1uxSt3pZOd+6hIeH689//rNuvPFG1atXT4cPH9Yzzzyj/fv3V92vRPbx2dNRSqtWrTKSzLfffuvrVnBGVlaWGTdunGnYsKGpVq2aady4sZk8ebLJzc31dWswxrzxxhumcePGJiAgwERFRZkxY8aYo0eP+rotGGPef/9906pVKxMYGGiaN29unn/+eV+3dNm7/fbbTb169Yy/v7+Jjo42AwcONNu3b/d1W5elNWvWGEnFfoYOHWqMOf21YVOmTDFRUVEmMDDQXHfddeabb77xbdOXgQutS3JyconXT5kyxad9Xw4utDZn4yvDLo3zrUtOTo65+eabTXR0tAkICDD16tUzN954o/nqq6983bZtLGOMuVQBHwAAAACAywmf6QYAAAAAwCaEbgAAAAAAbELoBgAAAADAJoRuAAAAAABsQugGAAAAAMAmhG4AAAAAAGxC6AYAAAAAwCaEbgAAAAAAbELoBgCginn55ZcVFhZ2SR7r22+/VVRUlI4dO3ZJHq8sHnjgAY0dO9bXbQAALnOEbgAALsKwYcNkWZYsy5K/v78iIyPVs2dPLVq0SG63+5L1ERsbq/nz53vVbr/9du3evfuSPP7kyZM1ZswYhYSESJI+/fRTz/PicDgUGhqqtm3batKkSTpw4MAl6anApEmTlJycrJSUlEv6uAAAFEXoBgDgIl1//fU6cOCAfvzxR33wwQfq1q2bxo0bp379+ik/P/+i79cY84tuHxQUpIiIiIu+fWnt379f7733noYPH17sum+//VapqanasGGDHnzwQX300Udq1aqVvvnmG9v7KhAREaFevXrp2WefvWSPCQDA2QjdAABcpMDAQEVFRal+/fq68sor9cgjj+jdd9/VBx98oJdfflmS9OOPP8qyLG3ZssVzu6NHj8qyLH366aeSCvcOr1q1Su3atVNgYKDWrVunH374QQMGDFBkZKRq1Kih9u3b66OPPvLcT9euXbV3717dd999nr3LUsmHly9cuFDx8fEKCAhQs2bN9Oqrr3pdb1mWXnzxRd18882qXr26EhIS9N577513/n/84x9KSkpSTExMsesiIiIUFRWlpk2batCgQfr3v/+tunXr6t577/Vss2HDBvXs2VN16tRRaGiounTpok2bNnmuHzFihPr16+d1v/n5+YqKitKiRYskSf/85z/VunVrBQUFKTw8XD169FB2drZn+xtvvFFLly497xwAANiJ0A0AQDn69a9/raSkJC1btqzMt500aZJmzpypnTt3KjExUcePH1efPn300UcfafPmzerdu7f69++vn376SZK0bNkyxcTE6LHHHtOBAwfOefj222+/rXHjxmnChAnatm2bRo0apeHDh2vNmjVe202bNk233Xabtm7dqj59+ui3v/2tMjIyztnvZ599pnbt2pVqtqCgIN1zzz3697//rYMHD0qSjh07pqFDh2rdunX64osvlJCQoD59+ng+Hz5y5EitXLnSa65//etfOn78uG677TYdOHBAgwcP1ogRI7Rz5059+umnGjhwoIwxnu2vuuoq7du3T3v37i1VnwAAlDdCNwAA5ax58+b68ccfy3y7xx57TD179lR8fLzCw8OVlJSkUaNGqXXr1kpISND06dPVuHFjzx7o2rVry+l0KiQkRFFRUYqKiirxfp944gkNGzZMo0ePVtOmTXX//fdr4MCBeuKJJ7y2GzZsmAYPHqwmTZpoxowZys7O1ldffXXOfn/88UdFR0eXer7mzZt7biedfoPijjvuUIsWLdSiRQs999xzOnHihNauXStJ6tSpU7G98snJybr11ltVo0YNHThwQPn5+Ro4cKBiY2PVunVrjR49WjVq1PBsX79+fa/HBADgUiN0AwBQzowxnkO9y+LsvcbZ2dmaNGmSrrjiCoWFhalGjRratWuXZ093ae3cuVOdO3f2qnXu3Fk7d+70qiUmJnr+Ozg4WCEhIZ690iXJyclRtWrVSt1HwR7ogufm4MGDuueee9S0aVOFhoYqNDRUx48f95pv5MiRSk5O9my/YsUKjRgxQpKUlJSk7t27q3Xr1rr11lv1wgsv6MiRI16PGRQUJEk6ceJEqfsEAKA8EboBAChnO3fuVFxcnCTJ4Tj9T23RQ55PnTpV4u2Cg4O9Lk+cOFFvvfWW/vznP2vdunXasmWLWrdurby8vDL3dPabACW9MeDv71/sNuc7E3udOnWKhdzzKQj5sbGxkk7vWf/66681f/58rV+/Xlu2bFF4eLjXfHfddZf27Nmj//znP3rttdcUGxura6+9VpLkdDq1evVqffDBB7riiiv09NNPq1mzZl5nKy84PL5u3bql7hMAgPJE6AYAoBx98skn+uabb/Sb3/xGUmHYK/q55KInVTufdevWadiwYbr55pvVunVrRUVFFTtMOiAgQC6X67z306JFC33++edetfXr16tFixal6uNc2rZtqx07dpRq25ycHD3//PO67rrrPM/JunXrNHbsWPXp00ctW7ZUYGCgDh065HW78PBw3XTTTUpOTlZycnKxM6VblqXOnTtr2rRp2rx5swICAvT22297rt+2bZv8/f3VsmXLXzQrAAAXy8/XDQAAUFnl5uYqLS1NLpdLP//8s1auXKmZM2eqX79+uuuuuySdPrz56quv1qxZsxQbG6tDhw7pj3/8Y6nuv0mTJlq2bJn69+8vy7L06KOPFtvzHBsbq88++0yDBg1SYGCg6tSpU+x+Jk6cqNtuu01XXnmlunfvrvfff1/Lli3zOhP6xejdu7dGjhwpl8slp9Ppdd3Bgwd18uRJHTt2TF9//bXmzJmjQ4cOeZ1grkmTJnr11VfVrl07ZWVlaeLEiZ7DwYsaOXKk+vXrJ5fLpaFDh3rqX375pT7++GP16tVLERER+vLLL5Wenu71ZsK6det07bXXlni/AABcCuzpBgDgIq1cuVL16tVTbGysrr/+eq1Zs0ZPPfWU3n33Xa8QumjRIp06dUrt2rXTuHHjNH369FLd/1/+8hfVqlVLnTp1Uv/+/dW7d29deeWVXts89thj+vHHHxUfH3/OQ6hvuukm/fWvf9XcuXPVsmVLPffcc0pOTlbXrl0venZJ6tOnj/z9/UsM782aNVN0dLR+9atfadasWerRo4e2bdumK664wrPNokWLdOTIEbVt21Z33nmnxo4dW+L3i/fo0UP16tVT7969vU7cVrNmTX322Wfq06ePmjZtqj/+8Y968skndcMNN3i2Wbp0qe6+++5fNCcAAL+EZYp+yAwAAKAMnnnmGb377rtatWqVbY9x4sQJRUdHa9GiRRo4cGCpb7dixQpNnDhRW7dulZ8fB/cBAHyDf4EAAMBF+/3vf68jR47o2LFjCgkJKdf7drvdSktL05NPPqnQ0FDdeOONZbp9dna2kpOTCdwAAJ9iTzcAAKiQfvzxR8XFxSkmJkYvv/yyunfv7uuWAAAoM0I3AAAAAAA24URqAAAAAADYhNANAAAAAIBNCN0AAAAAANiE0A0AAAAAgE0I3QAAAAAA2ITQDQAAAACATQjdAAAAAADYhNANAAAAAIBNCN0AAAAAANjk/wEPwLrYsvQOtgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "# 1. DEFINE THE ABSOLUTE FILE PATH (REQUIRED TO FIX THE ERROR)\n", + "travel_trip_data = r\"D:\\Ironhack\\Week4\\first_project\\data\\raw\\Travel details dataset.csv\"\n", + "\n", + "# --- Column Cleaning Function (Must be defined first) ---\n", + "def clean_column(name):\n", + " \"\"\"Cleans column names.\"\"\"\n", + " return name.lower().strip().replace(\" \", \"_\").replace('', '') \n", + "\n", + "# --- Load Data and Clean Columns ---\n", + "try:\n", + " # Use the absolute path variable to load the file\n", + " travel_trip_safina_df = pd.read_csv(travel_trip_data, encoding='ISO-8859-1')\n", + " print(\"File loaded successfully.\")\n", + "\n", + "except FileNotFoundError:\n", + " print(f\"Error: The file was still not found at the specified path.\")\n", + " print(f\"Please double-check that the file exists here: {travel_trip_data}\")\n", + " # Re-raising the error to stop execution gracefully\n", + " raise\n", + "\n", + "travel_trip_safina_df.columns = [clean_column(col) for col in travel_trip_safina_df.columns] \n", + "\n", + "# --- 2. Prepare 'duration_(days)' Column ---\n", + "travel_trip_safina_df['duration_(days)'] = pd.to_numeric(\n", + " travel_trip_safina_df['duration_(days)'], \n", + " errors='coerce'\n", + ").astype('Int64')\n", + "\n", + "# --- 3. Analyze Duration Frequencies ---\n", + "duration_counts = travel_trip_safina_df['duration_(days)'].value_counts().sort_values(ascending=False)\n", + "duration_counts = duration_counts.rename_axis('Duration (Days)').rename('Number of Trips')\n", + "\n", + "# --- 4. Display the top 10 most frequent durations ---\n", + "print(\"\\n--- Most Frequent Travel Durations (Top 10) ---\")\n", + "print(duration_counts.head(10))\n", + "\n", + "# --- 5. Generate Plot (Optional) ---\n", + "top_10_durations = duration_counts.head(10)\n", + "plt.figure(figsize=(10, 6))\n", + "top_10_durations.plot(kind='bar', color='darkorange')\n", + "plt.title('Top 10 Most Frequent Travel Durations')\n", + "plt.xlabel('Duration (Days)')\n", + "plt.ylabel('Number of Trips')\n", + "plt.xticks(rotation=0)\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "990c780f-e60e-4875-a82f-7073d8cf9915", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "File loaded successfully.\n", + "\n", + "--- Month Travel Frequency (Sorted) ---\n", + "The month with the highest number of trips is at the top.\n", + "End Month\n", + "September 18\n", + "August 16\n", + "July 16\n", + "June 15\n", + "May 15\n", + "November 10\n", + "January 10\n", + "February 10\n", + "October 9\n", + "April 7\n", + "March 6\n", + "December 5\n", + "Name: Number of Trips, dtype: Int64\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAApUdJREFUeJzs3XmcTfX/wPH3mRkzhoxlmGGMPfsesmVL1ihJoYREwrdEK8kakhbZ1Y+QbCUSylZItEwGEQmTfco6o2nMdt+/P3zv+d47c8fMnZnjXub1fDw86r7vufd+3p/7OWc+77NdQ1VVAAAAAABAjvPxdAMAAAAAALhdUXQDAAAAAGARim4AAAAAACxC0Q0AAAAAgEUougEAAAAAsAhFNwAAAAAAFqHoBgAAAADAIhTdAAAAAABYhKIbAAAAAACLUHQDgJcxDCNT/7Zt2+bppjpZuHChGIYhf/75Z6aWc/XvxRdfvDmNzSXGjh0rhmHIhQsXLP2cvn373nCs5qSWLVtKy5YtM1yubNmyYhhGussuXrz4pq1LkyZNkjVr1qSJ29eFiIiIbL1/v379pH379k6xU6dOyeDBg6VSpUoSGBgoRYoUkZo1a8qAAQPk1KlT2fq81DZs2CBjx47N0fe0S/19HzlyRPz9/WXPnj2WfB4AWMHP0w0AADjbvXu30+MJEybIt99+K998841TvFq1ajezWTnuo48+kipVqjjFwsLCPNQaZFdgYGCaMeppBQoUkB07dsixY8ekQoUKTs8tWLBAgoKCJDY21vJ2TJo0Sbp16yZdunTJ8feOjIyURYsWyY8//mjGTp8+LXfddZcUKlRIXnjhBalcubLExMTIb7/9JitXrpTjx49LqVKlcqwNGzZskFmzZllWeDuqVKmSPP744zJs2DDZvn275Z8HADmBohsAvEyjRo2cHhcrVkx8fHzSxFP7999/JV++fFY2LUfVqFFD6tevn6llk5KSxDAM8fPjz5a3yswYvdnuuece+fXXX2XBggUyceJEM37s2DHZsWOH9O/fXz788EMPtjD73nzzTbn77rud1qUPP/xQLly4ID/99JOUK1fOjHfp0kVGjhwpNpstRz7bU9uc//znP1K/fn3ZtWuXNGnS5KZ/PgC4i9PLAeAW1LJlS6lRo4bs2LFDmjRpIvny5ZN+/fqJiMiKFSukbdu2UqJECQkMDJSqVavKq6++KnFxcebrp02bJoZhyNGjR9O89yuvvCL+/v5OpyRv2bJFWrduLUFBQZIvXz5p2rSpbN261ZLctm3bJoZhyMcffywvvPCClCxZUgICAsy2ZrYt69evlzp16khAQICUK1dO3n77bfN0a7s///xTDMOQhQsXpnm9YRhpjtz98ccf8thjj0lISIgEBARI1apVZdasWS7bv2zZMnnttdckLCxMgoKC5L777pPff/89zed8/fXX0rp1aylYsKDky5dPqlatKpMnTxYRkY8//lgMw0hz9oOIyPjx4yVPnjxy9uzZDPv01KlT0rVrVwkKCpKCBQtKr1695Pz58+bzTz31lBQpUkT+/fffNK+99957pXr16hl+Rma40zeqKm+99ZaUKVNG8ubNK3fddZd89dVXbn2ej4+P9O7dWxYtWuRUaC5YsEBKlSol9913n8vXrV27Vho3biz58uWTAgUKSJs2bdJ8B/axdPDgQenZs6cULFhQQkNDpV+/fhITE2MuZxiGxMXFyaJFi8zT2VOf8n716lUZNGiQFC1aVIKDg6Vr166Z+l7/+usvWb16tTzxxBNO8YsXL4qPj4+EhISk2y9ZzXfPnj3SrVs3KVy4sFSoUEH69u1rrgOOlxTYLzNRVZk9e7bUqVNHAgMDpXDhwtKtWzc5fvy40/u7833Xq1dPqlatKnPnzs2wjwDAG1B0A8At6ty5c9KrVy957LHHZMOGDTJ48GARuV4YduzYUebPny9ff/21PP/887Jy5Urp3Lmz+dpevXqJv79/mmIzJSVFlixZIp07d5aiRYuKiMiSJUukbdu2EhQUJIsWLZKVK1dKkSJFpF27dtkqvFNSUiQ5Odnpn6MRI0bIyZMnZe7cufLll19KSEhIptuydetWefDBB6VAgQKyfPlymTp1qqxcuVI++uijLLf3t99+kwYNGsiBAwfknXfekXXr1sn9998vzz33nIwbNy7N8iNHjpQTJ07I//3f/8kHH3wgf/zxh3Tu3FlSUlLMZebPny8dO3YUm81m5vncc8/J6dOnRUSke/fuUrx48TSFfXJyssybN08eeuihTJ2S/9BDD8mdd94pn332mYwdO1bWrFkj7dq1k6SkJBERGTp0qFy+fFmWLl2aJudvv/1WhgwZkqk+Sv19Jicnuzyqmpm+GTdunLzyyivSpk0bWbNmjQwaNEgGDBjgcsfFjfTr10/Onj0rGzduFJHr427RokXSt2/fNMWniMjSpUvlwQcflKCgIFm2bJnMnz9fLl++LC1btpSdO3emWf7hhx+WSpUqyapVq+TVV1+VpUuXyrBhw8znd+/eLYGBgdKxY0fZvXu37N69W2bPnu30Hv3795c8efLI0qVL5a233pJt27ZJr169Msxt06ZNkpSUJK1atXKKN27cWGw2m3Tt2lU2btx4w1Po3c23a9eucuedd8qnn34qc+fOlddff126detm5mr/V6JECRERGThwoDz//PNy3333yZo1a2T27Nly8OBBadKkifz111/m+7r7fbds2VK++uorUdUM+wkAPE4BAF6tT58+mj9/fqdYixYtVER069atN3ytzWbTpKQk3b59u4qI7tu3z3yua9euGh4erikpKWZsw4YNKiL65ZdfqqpqXFycFilSRDt37uz0vikpKVq7dm29++67zdhHH32kIqJRUVE3bJN9OVf/kpKS9Ntvv1UR0ebNmzu9zp22NGzYUMPCwjQ+Pt6MxcbGapEiRdTxT19UVJSKiH700Udp2ikiOmbMGPNxu3btNDw8XGNiYpyW+89//qN58+bVS5cuqaqa7e/YsaPTcitXrlQR0d27d6uq6tWrVzUoKEjvuecetdls6fbXmDFj1N/fX//66y8ztmLFChUR3b59e7qvs79WRHTYsGFO8U8++URFRJcsWWLGWrRooXXq1HFabtCgQRoUFKRXr1694ef06dMn3e+0devW5nKZ7ZvLly9r3rx59aGHHnJa7vvvv1cR0RYtWtywPaqqZcqU0fvvv9/MrVu3bqqqun79ejUMQ6OiovTTTz9VEdFvv/1WVa+PpbCwMK1Zs6bTenH16lUNCQnRJk2amDF737711ltOnzt48GDNmzev03eaP39+7dOnT5o22teFwYMHO8XfeustFRE9d+7cDXMcNGiQBgYGphk/NptNBw4cqD4+PioiahiGVq1aVYcNG+a0fmYl39GjR6dpx5AhQ5zWK7vdu3eriOg777zjFD916pQGBgbqyy+/rKpZ+74//PBDFRE9dOhQ+h0EAF6CI90AcIsqXLiw3HvvvWnix48fl8cee0yKFy8uvr6+kidPHmnRooWIiBw6dMhc7sknn5TTp0/Lli1bzNhHH30kxYsXlw4dOoiIyK5du+TSpUvSp0+fNEcv27dvLz//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P/zwgyxZskQef/xxeeWVVzzdJEtRdN9kqf8AFipUSBYvXizt27eXffv2yUcffSQiwh8A+d9pvz4+PnLy5Elp166dHDhwQHr37i1r166VGTNmyLlz59iLKCL79++X5ORk8fX1FRGRTZs2yc6dO83nW7VqJR06dJDRo0dLbGwsfZZKTEyM+Pn5SatWrWTNmjXSqVMnee+996R///4SExMja9euFRH2WKfeJqmq3HPPPVKlShX54YcfRCTtjh9c35b9+OOPMnbsWNmyZQuFkAPHvpgzZ4506dJFunXrJnv27JHLly9L0aJF5cEHH5SIiAhR1Vz/d9GRq74oWrSolClTRlasWCEinB2Qni+++EL69OkjZ86ckcWLF0tcXBxF5H+1aNFC5s6dK35+frJixQrZuXOn3HHHHTJz5kwK71RUVcaNGydPPfWU7Nu3T/bv3y8vvviiDBw4UD744APJkyePPPnkk/L1119LYmKip5vrda5cuSLvv/++TJ48WY4fP27Gb9sxpbhpUlJSzP8/cuSIHj16VE+fPq2qqidOnNBOnTppq1atdOnSpS5fk5s45j1u3DitX7++btu2zYyNHTtW69atq6NGjdJz586pqmrfvn11//79N72tnjZu3Dg1DEO3bNmiiYmJeuDAAa1evboWKVJEBw8erF9//bWqqu7cuVPvvvtu/fHHH1U1944tm82WJvbbb79pzZo1ddy4cRoUFKRz5841n9u9e7c2a9ZM9+3bdzOb6dX++ecfp8fPPvusli1bVuPj4z3UIu8XExOjU6dOVR8fH50+fbqnm+N1pk6dqhMmTNCZM2dqjx49NDg4WB999FFdvXq1btmyRf38/PS7777zdDO90smTJ522a0ePHtXg4GBdvHixB1vlPex9c/bsWY2OjtbDhw+bz3Xr1k2rV6+uS5YsMbdfrv5G5BaJiYnm///xxx9ar149bd++vTlvuHr1qvbp00cbNmyo77//viYkJKhq7uwze86JiYlap04drVevni5evFhfeeUVp+Xat2+vFStW1LVr15r9hf/ZunWrduvWTQMCAnTr1q2qevuOJ4rum8RxAI0ZM0Zr1KihVapU0dDQUJ01a5aqqh4/flw7duyo9957ry5btsxTTfUqL7/8soaGhuratWs1KirK6blx48Zp3bp1tW3bttqiRQsNCQnRpKQkzzTUw9q1a6fh4eG6ZcsWVVU9ffq0btq0SRs2bKgNGzbUFi1a6I4dO7RkyZI6aNAgD7fWcxx3NDj+8btw4YJ269ZNAwMDddiwYWb82rVr2rlzZ+3atWuu3UmR2rx587Rbt27mTh5V1cuXL2v9+vV19uzZqnr7/sHMLHv+0dHR+vvvv+vFixfNvnr99dfVMAydP3++J5vocY7r02effabFihXT3377zYx98cUX+uqrr2r+/Pn1kUceUT8/P+3Vq5f++++/uX58OfbdjBkztH79+vrYY4/psWPHNDY2VlVVe/furUOGDEmzfG5jHytr1qzRhg0batWqVbVSpUo6cuRIc5muXbtqjRo1dOnSpfrvv/96qqleZcyYMRoZGakrVqzQ9u3ba6dOnfSHH35Q1euFd9++fbVJkyb6xhtvOBXquY0998TERK1WrZoahqEPPPBAmm1U+/bttVq1avrpp5/m6v6y90tcXJxevnzZjO/bt08feOABrVGjhnmA7XbczlN032QTJ07UYsWK6ebNm/Xff//VRx55RIOCgvTAgQOqqnrs2DHt3Lmz1qpVSzdv3uzh1nrWrl279M4779Rdu3ap6vUCKDo6WlevXm3ukf7www916NCh+tRTT5kFd3JyssfafLM5brzvu+8+DQ0NdSqGLl68qHv27NEHHnhA77vvPi1SpIgGBQXpzz//7Kkme4zjBnzq1Knas2dPfeCBBzQyMlJVVb/77ju9++679Z577tE33nhD33//fW3durXWqFHD7M/cPHm1mzp1qj7++OPq7++vjz32mE6fPl1TUlK0R48e2rNnT083z+Ps4+zzzz/XOnXqaOnSpbVp06bar18/PX/+vNpsNvPslI8++sizjfUCn332mU6cOFGnTJmiqppmQhoVFaWvv/663nPPPVq4cGGNjo5W1dtzQuau999/X8eOHatvv/22tmvXTkuUKKF9+vTRHTt26Oeff6558+bVX3/91dPN9Livv/5a8+bNq7Nnz9ZDhw7pe++9p4Zh6Pr1681lunXrpiVLltSVK1d6sKWe4/i3bfXq1WoYhjlPWLVqld53331pCu8HHnhABwwYkGvXRXvely5dUtXr267GjRtraGio7ty5M818oXHjxlq/fn29evXqTW+rN7D315dffqmtW7fWqlWrart27XT58uWalJSkP/30kz766KNaq1Yt3b59u4dbaw2K7pso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e01r166tRYoU0R49epjXOr7++utas2ZNrVWrlj788MPasGFDrVOnjvna3FJMprfB3rNnj3bq1Elbt25tHvFOSUnRRYsWabNmzbRRo0a5rq9Ssx/1t/vss8+0atWq2q9fP/3ll1/MeJ06dfSBBx4wHycmJurixYvNm4flBqlPv2/Xrp0WL15cN2/enGb8TJw4MdeOKdXr16fZfznhypUr+swzz5jXu69atUoLFSqk7777rlaoUEGbNWumERERaSYjd911l44ZM+ZmN/2msxfYqtcLxri4OL148aKqXr+MoXz58lqqVCnzqGxKSoqOHDlSS5curUeOHPFYuz3plVde0dDQUB0wYIB26tRJS5YsqTNmzDAvdfnrr7+0TJkyWrlyZZdn4qT+qbrb3Y2KmsOHD2uhQoW0U6dONywau3fvro0bN9Zr167dlkdyU++cX7NmjdarV0+rVaumrVu31g0bNqjq9Z095cqV0+bNm+sjjzyiXbp00eDg4Fx/FHLKlCnapUsXbdSokc6ePVv//PNPVVXdsGGDVqpUSdu2bWsuy123Vbdv364//PCDbt++XUuWLOl0oMO+zObNm81rlHMj+2VWqtePWNsLbtXrdVJwcLDTmRSq1+ulypUrp/mVotsNRXcO2bFjhxqGoa+99pqqqk6fPl1DQkJ07ty5umjRIm3RooU2atTI/JmYTZs26csvv6zPP/+8Tps2LVffrGnVqlVp7tT+yy+/aOfOnbVZs2bmzorvv/9eZ86cmSv7ateuXfr777+rqup7772n//nPf9JsnFauXKnFihXTJ554wqnwTj1xux0nXulx5/R7R7mx8N65c6cahqH169fXTz75RFWv/35mdHS0RkZGaoUKFcxT6RYvXqyGYWi1atXMcal6/TfNAwICdP/+/R7J4Wb47LPPnHZarVq1SmvXrq2VKlXSJk2amHvq169fr4UKFdL69etru3bttGvXrrl6kj9//nwtU6aMmf/u3bvVMAwtVaqUvvPOO+Zdyc+dO6ddunTJleugI8ft9oIFC/S1117TAQMG6KFDh8xrtH/77TctWLCgdu7c2eXRtGPHjmmbNm1u27MDoqKi1DAM7dq1q6qq/vzzz5o3b1599dVX9YMPPtA2bdpo1apVze3WunXrdOzYsdqlSxedMGGC003ocgvHcTVmzBgtUqSI+QswRYoU0ccee8ycP6xfv16rVaumdevW9VRzPc5xvrR161Y1DEM3bNigR48e1ZCQEB0yZEianYHPPvus/uc//7ltd3Sl5+eff9a///7bfLx27Vp96KGHtHHjxjpmzBjdvXu3ql7/KeDg4GB94okn9LXXXtPevXtrwYIFc8XfRoruHLR06VL19/fXcePG6aRJk8wjRKqqZ8+e1YEDB2rDhg3THVi5ZZJh3wilpKTosWPHtEqVKtqlS5c0PxGwd+9eDQ0N1SZNmujy5cudnsstfaV6fWLRsGFD7dy5s547d04XLFigwcHBOmLECHOvtN3YsWO1UKFC+sgjj+jBgwfNeG7pr5w4/T63sv9MTPPmzfWBBx5wWudmzpyp9957r/kH9eOPP9YhQ4Zojx49nMbW5cuXb+vLFg4ePKh169bVzp076x9//KHHjx/XAgUK6Jtvvqnvv/++Dhs2TA3D0MmTJ6vq9VOihw8froMGDdIpU6bk2iPc8fHxOnfuXJ05c6aqXj86WbBgQV20aJE+99xzmj9/fn3vvff05MmTTq/LLdutG3nllVc0JCREe/XqpU2aNNE777xTFyxYoBcuXFDV64V3kSJFtEmTJnrmzBmn1yYnJ6e5KeTtxGaz6caNGzU0NFR79OhhFtWOnn32Wa1SpYpu3brVQ630TidOnNBXX31Vv/nmGzO2ceNGrVevnvbt21fj4uI0Pj5eP/30U+3Zs2eu/xt55swZ/eCDD8xfflG9vh3z9fXVgQMH6jfffKORkZE6fPhwLVSoUK67QebmzZs1KChI3333XU1ISNBdu3ZpQECAPv/889q7d2+97777tEyZMrplyxZVVV2xYoU2adJE27ZtqwMGDMg1/UXRncOWLFmiefLkUcMwzDuL2guBCxcuaJkyZdL8Ucit7Bvx9evX6z333KMPP/ywbtu2zWmZ9u3ba9myZc07AedWH3zwgbZq1Uq7d++uV69e1RUrVmjx4sX1lVdecTri/d5772mLFi20T58+ufqPZFZPv8/tevXqpS1atNCuXbtqy5YtzZ+4sp/6de7cOY2JidFOnTqZBZRq7iqOlixZoq1bt9ZHHnlER48erc8//7zT8/Pnz1fDMJx2uuL6DouzZ8/qn3/+qbVr19Z3331XVa9P/gsUKKAFCxY0L23ITUeHbmTevHlaunRpc0e9/Yy6ihUr6rx588zr4ffv369t27bNldt8m82mmzZt0pCQEPXx8THvoeC4TWrRooXef//9nmqi1/niiy/UMAwNCQlJszNiw4YN6u/vr99++62qOp9RmBvHl+r1bZRhGBoUFKRvvvmm03MbN27UO++8U0uWLKl33nmn1qhRI1ddvufoueee0woVKuisWbP0xRdf1IkTJ5rP/frrrzp48GCtUKGC/vTTT06vy03zB4rubHI1Ofj88881b9682qNHD42JiXFa5rHHHtNevXrlykmF4wZ72bJl2qFDB/Maoa+++kobN26s3bp1Mwvvf/75R5966ilduXJlrt3YO46Tjz76SJs2bardu3fX2NhYXbZsmZYoUUJffvll/fHHHzUxMVG7du2qn376qdPZBLlBTp5+nxvZb6KzZMkSHTBggP7www/atWtXbdasma5du1b//vtvLVGihJYoUULLly+vNWvWzHXX9zmOk08++UTbt2+vpUuX1qeeekpVr6+r9snDoEGDtG3bthobG2vGcuM2f/r06eYlV3bfffed1qhRQ/fu3auq1y8lGjJkiL799tu5avKVkX///VffffddnTVrlqpev4yhYMGCOn/+fO3Zs6cGBwfrBx98oH/99ZfT63Lj9iw5OVk3b96sFStW1MaNG5t3PraPpzfffFMbN27s8mZguUHqO9ufOXNGhwwZooZh6MKFC1XVubiuXr26vvXWWze/oV5s7ty56u/vr08++aR5nw77Nv2vv/7SQ4cO6d69e/X8+fOebKZHOG63hw4dqhUrVtSKFSumubP7vn37tEWLFubYyo1/Gym6s8Hxj1vq29svXbpU/fz89IUXXjD/KMbHx2vt2rV12LBhN7Wd3sCxr7Zu3aoDBgxQX19f7d+/v1Ph3aJFC23YsKH27t1bW7VqpfXr10/zByO3uVHh/emnn2rNmjW1RIkSWrFiRa1evbr5xzO3bMg4/T5rvvnmG/2///s/p9jZs2e1ZMmSOn/+fD137px27dpV77nnHl23bp1eunRJp0+frrNnz86V91VQdR4nS5cu1Tp16mhYWJhZQNrXuQkTJmjdunVzXf84unr1qnnjNMejQ59//rmGhIToihUrdP/+/dqpUyft27ev+XxuXBdVXW+v9+7dq+fOndNjx45pjRo19L333lPV6/eqCAwM1NDQUF2zZk26r79dpfdb7ps2bdLg4GDt2rWr/vPPP+ZyTzzxhN57771OvzmdWyxdulR79+6tBw8edDoD7Ny5c9q7d28NDAx0OtodExOj5cuX1zlz5niiuV5tzpw5ahiGTpkyJVetb5nhuBN+5MiRahiGPvLII07XeKuqdunSRTt06HCzm+c1KLpzwNSpU7V79+76+OOP66+//up01MjPz08bNGigvXr10gcffFBr1aqV644QORo+fLjWq1dPBw4cqHfffbcWL15ce/ToYfbJ7t27ddSoUdq2bVt98sknzXhuLbjt0iu8L126pEeOHNGlS5fqnDlzzEl+bpu4cvq9e7755hvzt37btWunc+bMMX96aNmyZdq5c2e9evWqHjhwQB9++GFt0aKFeXM1u9w0xuzrX+pt94oVK7Rp06Z6//336759+8z4kCFDtFmzZuYNr3IDV+vTmTNndMKECRoeHu50LeTDDz+shQoV0lKlSmm9evVy9d/E1KZPn25emma3ceNGrV27tnnjr++++04HDRqk48aNy1Xroer/1sVvv/1Wx44dq0888YSuW7fO3MG6ceNG8+7Ijz32mA4dOlTvuOMOc8dYbnLlyhWtUKGCFitWTGvUqKF9+vQxb+arev0nDHv27Kl58+bVoUOH6pQpU7RTp05ao0aNXLvD0D6+fv31V926dauuXr3a6fkZM2aoYRj61ltvUXhr+jv7XnrpJQ0LC9OpU6c6Hf3v3r279u3bN9du8ym6s+ndd9/VwoUL6/Dhw7V8+fJatWpVXbp0qXn6yYoVK/SOO+7QihUr6pYtW3LtESLV63dsL1q0qPnzTSkpKfruu+9q7dq19bHHHjNXwtR9kxv7yhXHjduCBQv0nnvu0e7du5s/rZP6NyJzA06/z5o//vhDmzdvrvfee6+2atVKn332WQ0ODtb33ntP3333Xb333nv1u+++U9Xr1+K2bNlShwwZ4uFWe4Z9rGzYsEE7d+6sAwYM0Hnz5pnPL168WBs3bqzFihXTRx99VJ9++mktUqRIrrgTqyup71x/5swZHT9+vIaHh+sbb7xhxrdu3ao7d+40t1ds568XSYMGDdKQkBD98MMPzfjHH3+sYWFhun79ev3jjz+0c+fO+p///Md8Pjdt81Wvn2ofGBioXbp00caNG2tYWJj26NHDvEv7pk2btHr16moYhm7fvj3X/k5ycnKyjhgxQufOnau//PKLTp06VQsWLKiPPvqoTpw4URMSEvTvv//W4cOHq2EY2q1bN12xYoV54Ci3rZP2bf3nn3+u4eHhWrNmTS1UqJC2bdtW9+/fb84XZsyYoQEBATpu3DhPNtfjHHeADR8+XGfOnOl0vfZzzz2nxYsX186dO+vEiRP1+eef1wIFCjjtoM5tKLrdlHqSPnLkSP3iiy/Mxw899JDWqFFDlyxZYp5yvmDBAm3WrFmuLIocLVmyRMPCwsy7rqqqxsbG6ujRozVfvnz61FNPpTmyzZ5EZ6kL7+bNm2uvXr301KlTHmyVZ3H6fdb8/vvv2rVrV+3cubNu2bJFN27cqF27dtUOHTqoYRhOP9sUFRWVa3dQqF6/gdUdd9yhffv21bZt22rZsmWdLhNasWKFeebO22+/radPn/Zgaz3n66+/1mLFijkdTVNVPX36tD7//PNasGDBNNf5qebev4mu1qljx47pyy+/rGFhYU47d1q2bKlFihTR8PBwrVu3bq49UvTnn39qlSpVdO7cuWZs5cqV2q5dO3388cf1zJkzmpycrOvXr9c777zT/A343Oqrr77SoKAgs9CJj4/X0aNHq2EYetddd+nEiRN1/fr15hkB9t+Xzg2n4rta/zZv3qyFCxc2L7365Zdf1DAMvffee/WXX34x5w1vvfWWFilSRC9evHhT2+xtvv76aw0ICNC2bdtqSEiItmvXThctWmQ+//LLL5s/LzpmzBinnxjNjSi63eA4Sd+4caOuXr1an3zySXMjZde1a1etWbOmfvLJJ+bv9+W2I2uuCpodO3ZolSpVdNOmTU7xkydPasmSJbVixYr61FNP5doJWGY59u38+fO1YcOG5iQ3txaSnH6fNYcPH9b27dtr27Zt9dChQ5qcnKwHDx7Up556Ks11yqq5Z/uV2qeffqrvvPOOqqpGR0fr7NmzNTg4WIcOHWou8+GHH+ojjzySqyf5+/bt02eeeUarV69u/l653fbt2zV//vxqGEaa53K71BPR48eP64svvqhhYWFO19auW7dON23alKvODkj9N+3IkSNasmRJ3bx5s1N8+fLlWrx4cfNGrCkpKeYZh7ndkCFDdPDgwebjatWqaZcuXfTll1/Wjh07qmEYOnHiRO3Vq5cWKlTIvHP57cz+tywqKso8cJaQkKDPP/+8jhkzRlWvr4fly5fXvn37avny5bVRo0YaERFhvtb+6wG52ejRo3X27NmqqhoREaE9e/bUpk2bOm3jBw8erA0aNEjzqzK5EUV3Jjlu+O2/wxcaGqqGYehzzz2XZuP+yCOPaLFixXTjxo03u6le5c033zR/fzs6Olrvuusu7dSpkx44cMBc5tixY9qtWzfz5kM7d+70VHNvGY7j8f7779cHH3zQc43xEpx+nzVHjhzRtm3batu2bXXHjh1Oz+XWIts+Vvbs2aPffvutPv744+Zvb6te/z1ye+E9fPhwM37lypWb3lZPSW9sHDx4UIcMGaKVK1d2OuL966+/6hNPPKErVqzI9eugY99t2LBBS5Qokeba0aNHj+pTTz2lwcHB+vHHH6d5j9u5D+3945jjvn379NKlS3r06FEtU6aM2V+OdySvWbOm0/qI6/7v//5PmzZtqhcvXtS6detq06ZNzQLo7Nmz+tlnn2lSUpL+888/+uCDD2rJkiXT3Bz4dnTmzBktWrSoVq1a1bxnyaZNm/TgwYN6+fJlbdCggfbv319V/3cflHr16uXK+wPY2f82/vHHH3ry5EkdPHiwrl271nx+7969ZuHteMT73LlzN72t3oiiOxMcJ/O//PKLtmnTRr///ns9deqUPvXUU3rXXXfp22+/nabwHjly5G39hzEjsbGx+sADD6iPj49ZSB88eFDDwsK0Xbt2+s477+iWLVv0vvvu0549e+qlS5e0QIEC5u+34sbs43LIkCHao0ePXPtzKI44/T5rjhw5ou3bt9f27dub13LndvaffixXrpwWLlxYH330Uafnr1y5ovPmzVPDMPTVV1/1UCs9w3E9mz59uv7nP//R/v37m3eq/f3333XIkCFarlw5HT9+vP7000/asWNHffLJJ3P9zi/Hvvv66691+fLl2qdPH61Zs6bTpWqq149s58mTRw3D0M8///xmN9WjoqKitEWLFqqqunr1ag0LCzPvk9CzZ08tWbKk069TJCYmaosWLXT69OmeaK7Xa9CggRqGoS1atEj3lOikpCS9cOGCnjlz5ia3zjPshXSDBg30gQce0GXLlpnPrVmzRhs0aKB//PGHql7fOfbAAw9o3bp1c+09AuxWrlypISEhWqxYMQ0KCnL6PW7V6zvInnjiCa1evXqaG7DmdhTdbli+fLl53ZD9D2dCQoIOHDhQGzRo4LLwVs09kwtX12GfPHlSe/furf7+/uYR70OHDmm3bt20SpUqWqFCBW3RooW5V7Vx48a6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YdJNREREREREVEuYdBMRERERERHVEibdRERERERERLWESTcRERERERFRLWHSTURERLVKURTs3LlT32EQERHpBZNuIiKiemrq1KlQFAWzZ8++b92cOXOgKAqmTp360P7em2++iZ49ez60zyMiIqoPmHQTERHVY+3atcO2bdtw9+5ddVlZWRk+/fRT2NnZ6TEyIiIiw8Ckm4iIqB5zdXWFnZ0dkpOT1WXJyclo164devXqpS4rLy/HvHnz8MQTT6Bhw4bw8PDAP//5T3X9d999B0VRcPDgQfTp0weNGzfGU089hTNnzgAAEhISsHz5cvz8889QFAWKoiAhIUHdv7i4GKNGjULjxo3h7OyML774ovYPnoiI6DHApJuIiKiemzZtGuLj49Xf4+LiMH36dJ1tXnvtNWzfvh1btmzBTz/9BCcnJwwdOhTXr1/X2e7111/H2rVrcfToUZiYmKifM378eCxcuBBdu3bFlStXcOXKFYwfP17db/ny5fD398eJEycwfPhwBAYG3vfZRERE9RGTbiIionouKCgIqampuHDhAi5evIi0tDRMmjRJXf/bb78hOjoaUVFR8Pb2RpcuXRATE4NGjRrho48+0vmsVatWwdPTE126dEFoaCjS09NRVlaGRo0awdzcHCYmJrC2toa1tTUaNWqk7jd16lRMmDABTk5OWL16NX777TdkZmY+su+AiIhIX0z0HQARERHVrlatWmHEiBHYsmULRAQjRoxAq1at1PW5ubmorKzEgAED1GWmpqbo27cvTp06pfNZLi4u6s82NjYAgKKiov84Przmfk2aNEHTpk1RVFT0l46LiIioLmDSTUREZACmT5+OuXPnAgA+/PBDnXUiAuDe1F6/X/77ZaampurP2nUajeY//v2a+2n3/TP7ERER1XXsXk5ERGQAhg0bhoqKClRUVGDo0KE665ycnGBmZobU1FR1WWVlJY4ePYrOnTv/6b9hZmaG6urqhxYzERFRfcA33URERAbA2NhY7SpubGyss65JkyYIDg7GokWL0KJFC9jZ2SEyMhJ37tzBjBkz/vTfsLe3x/nz53H8+HHY2tqiadOmaNCgwUM9DiIiorqGSTcREZGBsLCweOC6v/3tb9BoNAgKCsLt27fRp08f7N+/H5aWln/688eMGYPk5GR4eXnh5s2biI+Px9SpUx9C5ERERHWXItqBXERERERERET0UHFMNxEREREREVEtYdJNREREREREVEuYdBMRERERERHVEibdRERERERERLWESTcRERERERFRLWHSTURERERERFRLmHQTERERERER1RIm3URERERERES1hEk3ERERERERUS1h0k1ERERERERUS5h0ExEREREREdUSJt1EREREREREteT/AAUxtZ0L51tXAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# 1. DEFINE THE ABSOLUTE FILE PATH\n", + "# *** IMPORTANT ***\n", + "# You must change the path below to match the exact location of the CSV file on your computer.\n", + "# Based on our previous conversation, this should be:\n", + "travel_trip_data = r\"D:\\Ironhack\\Week4\\first_project\\data\\raw\\Travel details dataset.csv\"\n", + "\n", + "# --- Column Cleaning Function (Must be defined first) ---\n", + "def clean_column(name):\n", + " \"\"\"Cleans column names.\"\"\"\n", + " return name.lower().strip().replace(\" \", \"_\").replace('', '') \n", + "\n", + "# --- Load Data and Clean Columns ---\n", + "try:\n", + " # Use the absolute path variable to load the file\n", + " travel_trip_safina_df = pd.read_csv(travel_trip_data, encoding='ISO-8859-1')\n", + " print(\"File loaded successfully.\")\n", + "\n", + "except FileNotFoundError:\n", + " print(f\"ERROR: File not found at the specified path.\")\n", + " print(f\"Please check and correct the path variable: {travel_trip_data}\")\n", + " # Stopping execution if file is not found\n", + " raise\n", + "\n", + "travel_trip_safina_df.columns = [clean_column(col) for col in travel_trip_safina_df.columns] \n", + "\n", + "# --- 2. Prepare 'end_month' Column ---\n", + "# Convert 'end_date' to datetime\n", + "travel_trip_safina_df['end_date'] = pd.to_datetime(travel_trip_safina_df['end_date'], errors='coerce')\n", + "\n", + "# Extract 'end_month' as a clean integer (1=Jan, 12=Dec)\n", + "travel_trip_safina_df['end_month'] = travel_trip_safina_df['end_date'].dt.month.astype('Int64')\n", + "\n", + "# --- 3. Analyze Month Frequencies ---\n", + "# Count the number of trips ending in each month and sort descending\n", + "month_counts = travel_trip_safina_df['end_month'].value_counts().sort_values(ascending=False)\n", + "\n", + "# --- 4. Map Month Numbers to Names for Readability ---\n", + "month_map = {\n", + " 1: 'January', 2: 'February', 3: 'March', 4: 'April', \n", + " 5: 'May', 6: 'June', 7: 'July', 8: 'August', \n", + " 9: 'September', 10: 'October', 11: 'November', 12: 'December'\n", + "}\n", + "\n", + "# Apply the mapping\n", + "month_counts.index = month_counts.index.map(month_map)\n", + "\n", + "# Clean up (remove 'NaN' index if present) and rename for display\n", + "if 'nan' in month_counts.index:\n", + " month_counts = month_counts.drop('nan')\n", + "month_counts = month_counts.rename_axis('End Month').rename('Number of Trips')\n", + "\n", + "# --- 5. Display the results ---\n", + "print(\"\\n--- Month Travel Frequency (Sorted) ---\")\n", + "print(\"The month with the highest number of trips is at the top.\")\n", + "print(month_counts)\n", + "\n", + "# --- 6. Generate Plot (Optional) ---\n", + "plt.figure(figsize=(10, 6))\n", + "month_counts.plot(kind='bar', color='teal')\n", + "plt.title('Travel Frequency by End Month (Sorted)')\n", + "plt.xlabel('Month')\n", + "plt.ylabel('Number of Trips')\n", + "plt.xticks(rotation=45, ha='right')\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "plt.tight_layout()\n", + "plt.savefig('travel_frequency_by_month_final.png')" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "36f7845a-027d-4d60-8578-88682c1018e3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "File loaded successfully.\n", + "\n", + "--- Most Frequent Travel Destinations (Top 10) ---\n", + " country city Number of Trips\n", + "5 Bali Bali 7\n", + "26 Japan Tokyo 7\n", + "16 France Paris 7\n", + "34 Paris Paris 7\n", + "22 Indonesia Bali 5\n", + "32 New York New York 5\n", + "38 Rome Rome 5\n", + "47 Sydney Sydney 5\n", + "53 Tokyo Tokyo 5\n", + "6 Bangkok Bangkok 4\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAKyCAYAAAAEvm1SAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA3GVJREFUeJzs3XmcjXX/x/H3NWfMGGMGg7HvlbFkKUtCRkK2JCpKiVbcUaFoH7otaVHdEYW0oBQqbpUkpVRGJCSFsky2wWCMWc75/v7wO9c9ZxbNcOY6zLyej4dHzedcc873e33Ocp33XItljDECAAAAAAAAHBQU6AEAAAAAAACg6CGUAgAAAAAAgOMIpQAAAAAAAOA4QikAAAAAAAA4jlAKAAAAAAAAjiOUAgAAAAAAgOMIpQAAAAAAAOA4QikAAAAAAAA4jlAKAAAAAAAAjiOUAoAiwLKsPP376quvCnwsb731lvr27au6desqKChINWvWzHXZEydO6IEHHlDlypVVvHhxNWnSRPPnz8/T4zz99NOyLEtBQUHasWNHttuTk5MVGRkpy7J0xx13nOVszmzLli16+umn9eeff+Zp+TfffDPX3owcObJAxni+mjt3rqZMmfKPy51pnWX+d6bnWaDExsYqNjY2T8t55xEUFKSIiAhddNFFuvHGG/XBBx/I4/EU6DjHjx+vxYsXZ6t/9dVXjrxvTJ06VW+++Wa2+p9//inLsnK87XyRnp6umJgYTZw4MdttGzdu1MCBA1WrVi0VL15cJUuW1GWXXaZnn31Whw8ftpfL+jw5efKknn76aUfer71SU1P1n//8R23atFGZMmUUEhKiKlWq6KabbtKqVascG8eZJCQk6Omnn9aGDRsK5P6vuuoqPfDAAwVy3wBQlAUHegAAgIK3Zs0an5/HjRunlStX6ssvv/Sp169fv8DH8vbbb2vfvn1q0aKFPB6P0tPTc132hhtu0Nq1azVx4kRdcsklmjt3rvr16yePx6NbbrklT49XsmRJzZ49W+PGjfOpL1iwQOnp6SpWrNg5zedMtmzZori4OMXGxuYrFJk9e7ZiYmJ8apUrV/bz6M5vc+fO1aZNm/7xS2C3bt2yPb9btWqlPn36aMSIEXYtNDS0IIbpmNq1a+vdd9+VdDpQ3blzpxYvXqwbb7xRbdu21SeffKJSpUoVyGOPHz9effr00fXXX+9Tv+yyy7RmzZoCf9+YOnWqypUrly08rlSpktasWaM6deoU6OOfi6lTp+rIkSO6//77feqvv/66hgwZorp162rUqFGqX7++0tPTFR8fr9dee01r1qzRokWL7PvI7OTJk4qLi5OkPIWa5+rQoUO69tprtXHjRg0aNEijRo1SVFSU9u7dq48++kgdOnTQunXr1Lhx4wIfy5kkJCQoLi5ONWvWVJMmTfx+/+PGjVPHjh01ePBg1a1b1+/3DwBFFaEUABQBV1xxhc/P5cuXV1BQULa6Ez777DMFBZ3eUbd79+7atGlTjsv997//1fLly+0gSpLat2+vv/76S6NGjdLNN98sl8v1j4938803a86cOYqLi7MfV5JmzpypXr166eOPP/bDrPyrYcOGatasWZ6WTU9Pl2VZCg4umh/p5cuXV/ny5bPVK1SocMbnt9vtVkZGxgUTVoWFhWWbz1133aXZs2dr0KBBuueee/Tee+85OqbIyMiAvId4hYaGBvTx/0lGRoYmT56sQYMGKTw83K6vWbNGgwcPVseOHbV48WKf52DHjh01YsQIffrpp3bNiT8WnMntt9+un3/+WZ999pmuvvpqn9v69u2rhx56SGXKlAnQ6M7eyZMnVaJEiTwv365dO9WtW1fPP/+8ZsyYUYAjA4CihcP3AACSpMOHD2vIkCGqUqWKQkJCVLt2bT322GNKTU31Wc6yLP3rX//S9OnTdckllyg0NFT169fP82F1mYOhM1m0aJFKliypG2+80ac+cOBAJSQk6IcffsjT/QwaNEi7d+/W8uXL7dq2bdu0evVqDRo0KMff2bVrl/r376/o6GiFhoaqXr16ev7557MdJjVt2jQ1btxYJUuWVEREhGJiYvToo49KOn1YmXfs7du3tw+/OpdDjbyHS7399tsaMWKEqlSpotDQUP3xxx+SpC+++EIdOnRQZGSkSpQoodatW2vFihXZ7mfp0qVq0qSJQkNDVatWLT333HP24Y5eZzo0yrIsPf300z6133//XbfccovPOnv11VdzHP+8efP02GOPqXLlyoqMjNQ111yj3377zV4uNjZWS5cu1V9//eVzCN7Z8s7l2Wef1TPPPKNatWopNDRUK1eu1KlTpzRixAg1adJEpUqVUlRUlFq1aqWPPvrI5z6aNm2qtm3bZrtvt9utKlWq6IYbbrBraWlpeuaZZxQTE6PQ0FCVL19eAwcO1MGDB896DrkZOHCgunbtqgULFuivv/6y68YYTZ06VU2aNFFYWJjKlCmjPn36ZDuUdf369erevbvdt8qVK6tbt27as2ePpNO9Tk5O1pw5c+w+ePfOyenwvTvuuEMlS5bUH3/8oa5du6pkyZKqVq2aRowYke29JC4uTi1btlRUVJQiIyN12WWXaebMmTLG2MvUrFlTmzdv1qpVq7Idipnbc3T16tXq0KGDIiIiVKJECV155ZVaunSpzzLewz5XrlypwYMHq1y5cipbtqxuuOEGJSQk+Cz75ZdfKjY2VmXLllVYWJiqV6+u3r176+TJk2fszccff6y9e/fqtttu86mPHz9elmVpxowZOYaiISEhuu666+yfMx++9+eff9ohbFxcnL1O7rjjDn3zzTf26yurt956S5Zlae3atWccc1br1q3TsmXLdOedd2YLpLyaN2+u6tWr2z9v2rRJPXv2VJkyZezDrufMmePzO971n/XQ5pyeU7GxsWrYsKHWrl2rtm3bqkSJEqpdu7YmTpxovyd/9dVXat68uaTTrwnvevG+T3mfl7/88os6deqkiIgIdejQQePGjVNwcLB2796dbV6DBg1S2bJlderUKbt22223ae7cuTp+/Hie1yEA4MwIpQAAOnXqlNq3b6+33npLDz30kJYuXar+/fvr2Wef9fmy7fXxxx/r5Zdf1tixY/XBBx+oRo0a6tevnz744AO/jWnTpk2qV69etj2AGjVqZN+eFxdffLHatm2rWbNm2bVZs2apZs2a6tChQ7blDx48qCuvvFKff/65xo0bp48//ljXXHONRo4cqX/961/2cvPnz9eQIUPUrl07LVq0SIsXL9aDDz6o5ORkSacPKxs/frwk6dVXX9WaNWu0Zs0adevW7R/H7N2LJ/O/zMaMGaNdu3bptdde0yeffKLo6Gi988476tSpkyIjIzVnzhy9//77ioqKUufOnX2CqRUrVqhnz56KiIjQ/PnzNXnyZL3//vuaPXt2ntZnTrZs2aLmzZtr06ZNev7557VkyRJ169ZNw4YNsw8zyuzRRx/VX3/9pTfeeEMzZszQ77//rh49esjtdks6fbhS69atVbFiRXu9ZT1E72y8/PLL+vLLL/Xcc89p2bJliomJUWpqqg4fPqyRI0dq8eLFmjdvntq0aaMbbrhBb731lv27AwcO1OrVq/X777/73Ofnn3+uhIQEDRw4UJLk8XjUs2dPTZw4UbfccouWLl2qiRMnavny5YqNjVVKSso5zyOr6667TsYYffPNN3bt3nvv1QMPPKBrrrlGixcv1tSpU7V582ZdeeWV2r9/v6TThwF27NhR+/fv16uvvqrly5drypQpql69uv2le82aNQoLC1PXrl3tPmQ9nCyr9PR0XXfdderQoYM++ugjDRo0SC+++KImTZrks9yff/6pe++9V++//74WLlyoG264Qffff7/PobaLFi1S7dq11bRpU/vxvYe15WTVqlW6+uqrlZSUpJkzZ2revHmKiIhQjx49ctyT7K677lKxYsU0d+5cPfvss/rqq6/Uv39/nzF269ZNISEhmjVrlj799FNNnDhR4eHhSktLO+N6WLp0qaKjo332dHK73fryyy91+eWXq1q1amf8/ZxUqlTJ3ovqzjvvtNfJE088obZt26pp06bZwmBJ+s9//qPmzZvbwU1eff7555KU7dDN3Pz222+68sortXnzZr388stauHCh6tevrzvuuEPPPvtsvh47s3379unWW29V//799fHHH6tLly4aM2aM3nnnHUmnDyX1voc9/vjj9nq566677PtIS0vTddddp6uvvlofffSR4uLidO+99yo4OFjTp0/3ebzDhw9r/vz5uvPOO1W8eHG7Hhsbq+TkZEfP5wUAhZ4BABQ5AwYMMOHh4fbPr732mpFk3n//fZ/lJk2aZCSZzz//3K5JMmFhYWbfvn12LSMjw8TExJiLLrooX+Po1q2bqVGjRo63XXzxxaZz587Z6gkJCUaSGT9+/Bnv+6mnnjKSzMGDB83s2bNNaGioSUxMNBkZGaZSpUrm6aefNsYYEx4ebgYMGGD/3ujRo40k88MPP/jc3+DBg41lWea3334zxhjzr3/9y5QuXfqMY1iwYIGRZFauXHnG5bxmz55tJOX4Lz093axcudJIMldddZXP7yUnJ5uoqCjTo0cPn7rb7TaNGzc2LVq0sGstW7Y0lStXNikpKXbt2LFjJioqymTeLNi5c6eRZGbPnp1tnJLMU089Zf/cuXNnU7VqVZOUlOSz3L/+9S9TvHhxc/jwYWOMscfftWtXn+Xef/99I8msWbPGrp3pufFPJJmhQ4dmm0udOnVMWlraGX83IyPDpKenmzvvvNM0bdrUrh86dMiEhISYRx991Gf5m266yVSoUMGkp6cbY4yZN2+ekWQ+/PBDn+XWrl1rJJmpU6fatXbt2pl27dr943zatWtnGjRokOvty5YtM5LMpEmTjDHGrFmzxkgyzz//vM9yu3fvNmFhYebhhx82xhgTHx9vJJnFixef8fGzvka8vP3M/PweMGBAju8lXbt2NXXr1s31Mdxut0lPTzdjx441ZcuWNR6Px76tQYMGOa6nnJ6jV1xxhYmOjjbHjx+3axkZGaZhw4amatWq9v16X2tDhgzxuc9nn33WSDJ///23McaYDz74wEgyGzZsyHXsualXr5659tprfWr79u0zkkzfvn3zfD9ZnycHDx7M9hr08s5r/fr1du3HH380ksycOXPyOwVz3333GUlm69ateVq+b9++JjQ01Ozatcun3qVLF1OiRAlz9OhRn3Hu3LnTZ7mcnlPt2rXL8T25fv36Pp8R3tdYTu9Z3uflrFmzcrwtOjrapKam2rVJkyaZoKCgbONLS0szlmWZRx555EyrAQCQD+wpBQDQl19+qfDwcPXp08en7j2xcNZDwDp06KAKFSrYP7tcLt188836448/7MN+/OFMh2zl53CuG2+8USEhIXr33Xf13//+V/v27cv1intffvml6tevrxYtWvjU77jjDhlj7JPDt2jRQkePHlW/fv300Ucf6dChQ3kezz956623tHbtWp9/mfcY6927t8/y3333nQ4fPqwBAwb47F3l8Xh07bXXau3atUpOTlZycrLWrl2rG264weev/949Sc7GqVOntGLFCvXq1UslSpTwefyuXbvq1KlT+v77731+J/OhSdL/9n7LfPhZQbjuuutyPLH9ggUL1Lp1a5UsWVLBwcEqVqyYZs6cqV9//dVepmzZsurRo4fmzJljHzJ05MgRffTRR7r99tvt/ixZskSlS5dWjx49fNZFkyZNVLFixQLZw8JkOtzNOwbLstS/f3+fMVSsWFGNGze2x3DRRRepTJkyeuSRR/Taa69py5YtfhmPZVnZnk+NGjXK1t8vv/xS11xzjUqVKiWXy6VixYrpySefVGJiog4cOJDvx01OTtYPP/ygPn36qGTJknbd5XLptttu0549e3wOE5X++bnYpEkThYSE6J577tGcOXNyvJJnbhISEhQdHZ3veZyLfv36KTo62mdvqVdeeUXly5fXzTffXOCP/+WXX6pDhw7Z9gK74447dPLkybPe47FixYrZ3pNzek79k6zvnZI0fPhwHThwQAsWLJB0em/HadOmqVu3btkuUFGsWDGVLl1ae/fuzd8EAAC5IpQCACgxMVEVK1bMFvRER0crODhYiYmJPvWKFStmuw9vLeuyZ6ts2bI53pf3UulRUVF5vq/w8HDdfPPNmjVrlmbOnKlrrrlGNWrUyHHZxMREVapUKVvde/U775huu+02zZo1S3/99Zd69+6t6OhotWzZ0ufcVWerXr16atasmc+/zLKOz3s4Vp8+fVSsWDGff5MmTZIxRocPH9aRI0fk8XjO2L/8SkxMVEZGhl555ZVsj921a1dJyhbYlS1b1udn73l1CuLQtsxy6uvChQt10003qUqVKnrnnXe0Zs0arV27VoMGDfI5l4x0+hwze/futXs8b948paam+gSc+/fv19GjRxUSEpJtfezbt8+v4aWX94u59zm6f/9+GWNUoUKFbGP4/vvv7TGUKlVKq1atUpMmTfToo4+qQYMGqly5sp566qkzXhXzn5QoUcIn9JRO9zjz+vzxxx/VqVMnSaevRPftt99q7dq1euyxxySd3XPhyJEjMsbk6fXr9U/PxTp16uiLL75QdHS0hg4dqjp16qhOnTp66aWX/nE8KSkp2dZDuXLlVKJECe3cuTPvE8uH0NBQ3XvvvZo7d66OHj2qgwcP6v3339ddd911Vif1954rKq/jzev7Z35l7ZN0eq75eZ6UKFFCkZGR2ere88V5g7wlS5bozz//9DlcO7PixYsX+HsVABQlRfNSPQAAH2XLltUPP/wgY4xPMHXgwAFlZGSoXLlyPsvv27cv2314azl9eTgbl156qebNm6eMjAyfvYR++eUXSaevUJcfgwYN0htvvKGNGzfq3XffzXW5smXL6u+//85W9578OPO6GDhwoAYOHKjk5GR9/fXXeuqpp9S9e3dt27Yt19DLH7KGh94xvfLKK7lejaxChQr2lfrO1D8v75fprCenzvqlskyZMvaeKEOHDs3xsWvVqnWG2Tgnp73r3nnnHdWqVUvvvfeez+1Z5y1JnTt3VuXKlTV79mx17txZs2fPVsuWLX3OGeQ9YXbmq6dlFhER4YeZ+Pr4449lWZauuuoqewyWZembb77JMYjIXLv00ks1f/58GWO0ceNGvfnmmxo7dqzCwsI0evRov4/Va/78+SpWrJiWLFniE9wsXrz4rO+zTJkyCgoKyvPrN6/atm2rtm3byu12Kz4+Xq+88ooeeOABVahQQX379s3198qVK2eH6F4ul0sdOnTQsmXLtGfPHlWtWjXf4/kngwcP1sSJEzVr1iydOnVKGRkZuu+++87qvjp37qxHH31Uixcv1rXXXvuPy+f1/TO395eCCG29zrR37bBhw3TjjTfqp59+0n/+8x9dcskl6tixY47LHjly5KyeRwCAnLGnFABAHTp00IkTJ7J9IfSe6DnrCcFXrFhh750jnT5573vvvac6der47UtWr169dOLECX344Yc+9Tlz5qhy5cpq2bJlvu6vVatWGjRokHr16qVevXrlulyHDh20ZcsW/fTTTz5179Wr2rdvn+13wsPD1aVLFz322GNKS0vT5s2bJTm3B1Dr1q1VunRpbdmyJdseVt5/ISEhCg8PV4sWLbRw4UKfvVaOHz+uTz75xOc+K1SooOLFi2vjxo0+9axXpStRooTat2+v9evXq1GjRjk+9tkElfndC+JsWZalkJAQny+s+/btyzZP6X+HgS1evFjffPON4uPjs13BsXv37kpMTJTb7c5xXdStW9ev4589e7aWLVumfv362Xu1dO/eXcYY7d27N8cxXHrppTmuh8aNG+vFF19U6dKlfZ7/BdELy7IUHBwsl8tl11JSUvT2229nWzavjx8eHq6WLVtq4cKFPst7PB698847qlq1qi655JKzHrPL5VLLli3tPWqyvkdkFRMTo+3bt2erjxkzRsYY3X333TmeLD09PT3b6zGzf3pfqVSpkm688UZNnTpVr732mnr06OFzdbz8uOyyy9SlSxfNnDnTPnQ5q/j4eO3atUvS6ffPL7/8MtsVDN966y2VKFHCDs29h8VlfX/5+OOPz2qc0rm93/bq1UvVq1fXiBEj9MUXX2jIkCE5hlgJCQk6deqUTxANADg37CkFANDtt9+uV199VQMGDNCff/6pSy+9VKtXr9b48ePVtWtXXXPNNT7LlytXTldffbWeeOIJhYeHa+rUqdq6davmz5//j4+1ZcsW+9w1+/bt08mTJ+2r9tWvX9/e2O/SpYs6duyowYMH69ixY7rooos0b948ffrpp3rnnXd8vszm1cyZM/9xmQcffFBvvfWWunXrprFjx6pGjRpaunSppk6dqsGDB9tfau+++26FhYWpdevWqlSpkvbt26cJEyaoVKlS9hWuvHtzzZgxQxERESpevLhq1arlt73JvEqWLKlXXnlFAwYM0OHDh9WnTx9FR0fr4MGD+vnnn3Xw4EFNmzZNkjRu3Dhde+216tixo0aMGCG3261JkyYpPDzcZ68O7zmJZs2apTp16qhx48b68ccfNXfu3GyP/9JLL6lNmzZq27atBg8erJo1a+r48eP6448/9Mknn+T6ZfZMLr30Ui1cuFDTpk3T5ZdfrqCgoGyHMfpD9+7dtXDhQg0ZMkR9+vTR7t27NW7cOFWqVCnblfak03vcTZo0SbfccovCwsKynaenb9++evfdd9W1a1cNHz5cLVq0ULFixbRnzx6tXLlSPXv2PGMompuUlBT73FwpKSnasWOHFi9erCVLlqhdu3Z67bXX7GVbt26te+65RwMHDlR8fLyuuuoqhYeH6++//9bq1at16aWXavDgwVqyZImmTp2q66+/XrVr15YxRgsXLtTRo0d99hK59NJL9dVXX+mTTz5RpUqVFBERcc7hWrdu3fTCCy/olltu0T333KPExEQ999xzOe7Z5d2b67333lPt2rVVvHjxHIM1SZowYYI6duyo9u3ba+TIkQoJCdHUqVO1adMmzZs3L1/nopOk1157TV9++aW6deum6tWr69SpU/aVPLO+L2YVGxursWPH6uTJkypRooRdb9WqlaZNm6YhQ4bo8ssv1+DBg9WgQQOlp6dr/fr1mjFjhho2bJjred4iIiJUo0YNffTRR+rQoYOioqJUrlw5n/MfDR8+3A7uc7qy5p9//qlatWppwIABevPNN884j7feekvXXnutunTpokGDBqlLly4qU6aM/v77b33yySeaN2+e1q1bp+rVq+upp57SkiVL1L59ez355JOKiorSu+++q6VLl+rZZ59VqVKlJEnNmzdX3bp1NXLkSGVkZKhMmTJatGiRVq9efcaxnEmdOnUUFhamd999V/Xq1VPJkiVVuXJl+9DBM3G5XBo6dKgeeeQRhYeH53rOQe9rMKc/TgAAzlKgzrAOAAicrFffM8aYxMREc99995lKlSqZ4OBgU6NGDTNmzBhz6tQpn+X0/1c2mzp1qqlTp44pVqyYiYmJMe+++26eHtt7Vbyc/mW9mtTx48fNsGHDTMWKFU1ISIhp1KiRmTdvXr4e5+DBg2dcLqcri/3111/mlltuMWXL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9derWbNm6ty5s1auXGnfhsB4/PHHtXjxYhljfILDxo0b80f7CxivqiKqfPnysixLb7/9thYsWCBJuv/++zVu3DjNmDFDr7/+OsFUgGX+S8wbb7yhKVOm6Pbbb1e1atU0Y8YMPfPMM9q7d28ARwhJ9h5SvXr10i233KLVq1dr+/bt+u6777Rnzx42LgMoc3BrWZaOHj2q2267Tf3799cbb7yhFi1aSJJ+//13HTlyJFDDhHy/SLdp00bvvvuuvvzyS1199dWaOnWqEhISAj3EIi04OFjTp0/X6NGj7fNPnjhxQpZlqVixYnwROI94g91rrrlGnTt31qeffqrPP/9cS5Ys0WeffcZeHgGU2/ZAt27ddP311+u5557TyZMneT0FmHf9x8XF6aWXXtL999+voUOH6pJLLlGnTp00f/58SewxFQhJSUmaP3++pkyZos8//9z+w29CQgL9uMARShVBHo9H9erV04wZM2SM0YwZM+w32JEjR2rYsGGaOXMmwVSAef8S88MPP2jjxo164403dN9992nhwoXq27ev1q1bp/HjxxNMnQe2bt2qChUq6N///rdOnjypa6+9Vh06dNBTTz2lYsWK6eDBg4EeYpHzxRdfqEuXLjp06JC9oZKUlKTg4GD1799fxhi9+eab6tu3rxo3bqw777xTq1atCvCoi66goCDt2rVLvXv31h133KHVq1drzZo1sixLzz//vF5//XX2Dg2g66+/Xh9//LFee+01jRgxQtLpbQm3262UlBS+DJxnvvrqK7Vq1Urjx49X2bJldd9996ljx46655572MsjgLxhx8SJEzVr1iz9/PPP9m2dO3fWli1bdOjQIUkEHoF2+PBhffrpp3ruued066236v7779fMmTM1evRo9e/fXxs2bOC15DCPx6NSpUrpu+++U3p6usaPH68vvvhCkpSamspr5gLHq6kICgoKksfjUd26dfXSSy/J5XJp5syZdjD18MMP28HUrFmz7HNPwXnLly/XbbfdpgULFqh48eJ2feTIkerdu7d++uknTZgwgfOAOSzrXzv/+usvBQcHS5Lat2+vEiVKaOHChSpZsqRWr16tWbNm6dixY4EYapEVFham1157TeXKlbMPOYqKitLOnTv16KOPqnnz5po3b54qVKigd955Rz/99JN++OGHAI+66Hjvvfc0duxY+2djjDZu3Kj27dsrLi5OaWlpatWqlVq2bKlBgwZp7NixeuONN3ivCwDvxQE6d+6s//73v5o9e7YeeeQRJScnKzo6Wlu3btX27dt16NAh7dmzRxs2bOCEswH2888/24cmt2nTRsWLF9cHH3ygkiVL6sMPP9Qbb7wR4BEWXcYYbd++XVOmTNFNN92kRx55RL/99ptuu+02RUVFKS4uTpIIPByWNdA4duyYtmzZovDwcEn/O6TvkUce0VVXXaW5c+fKGMPe8A4KCgqS2+1WdHS0Fi1apLS0NI0bN04rVqxQaGioypcvr8TERP39999KSEhQYmKifv75Zy7idYHgHa+I8b55ej/s6tatqxdffFFBQUHZgqkHH3xQzz//vKZPn+5zHgk4p2PHjurdu7cyMjK0cOFCn0OMRo4cqRtvvFHLli2zD8FEwfOeQPbAgQP666+/JElXXXWVfv31V1WoUEHly5fXokWLFBERIUn67rvvtHz5ciUnJwdy2EVO69atdcUVVyghIUHXXnutli1bpoiICH333XeqUKGCWrdurZdeeknjx4/XDTfcoJYtW9qHJbGRWbBOnjypX3/9VS1btrRrlmWpfv36uuuuu1SsWDHde++9KlWqlN59910988wz9mfVrFmz+DxyUOZzsXXt2lXVqlXTe++9pylTpmjQoEHasWOHOnXqpDZt2qhly5Zq2rSp2rZtqz///DPQQy8ycnq/6ty5sxISElS3bl1FRUVp4cKF9mfS5s2b9dlnn+no0aMOj7Royhp2WJal119/XYsWLdJTTz2ljz76SHfccYd69eqldu3aadOmTdq+fXuARlt0eb8XvfPOOzLGqGbNmoqNjdW8efN06NAhey+3kiVLqmTJkjpy5Igsy+JQS4d43+dcLpckKTo6WosXL1ZaWpoef/xxffXVV7rnnnvUoUMHXXbZZapXr54aN26ssWPHEvBeKAyKjIyMDGOMMceOHTO7du0yx48fN6mpqcYYYzZv3mw6depkrrnmGjNv3jz7dyZMmGBWrFgRkPEWNW63O9fbRo0aZZo2bWrGjh1rjhw54nPb3Llz7d6iYHnX88aNG81ll11mhgwZYhISEkxqaqqJi4szlSpVMuPHjzfGGLN//34zc+ZMEx4ebpYsWRLIYRc56enpxhhjEhMTzcqVK03Xrl3NZZddZr+XZX29zJw505QqVcqsWrXK8bEWVSkpKcYYY7Zv324mTZpk191utzly5Ii54oorzFtvvWWMMebo0aPm5ptvNvfcc4/58ssvAzLeosj7Ojly5Ii55pprzOjRo+1thmXLlplSpUqZLl26mF9++cX8/vvv5s8//zTbtm0zf/75ZyCHXaRk7tHu3buNx+Mxxhjz66+/mquvvtpUr17dLF682Bhz+jU3e/ZsExUVZT777LOAjbkoybxd98Ybb5jHH3/c9O3b13z77bcmMTHRGHP6c+qzzz4zPXv2NKVLlzaWZZlp06YFashF2s6dO0316tXNG2+8YYwxZurUqaZVq1bm0UcfNcePHzfGGJOammratWtnHnvssUAOtUjJ/Do6dOiQOXnypDl27JgxxpiEhATTtm1bExMTY8aNG2d27txptm/fbn788Ufz22+/8f3oAkIoVUR4X5S//PKLadWqlbnoootMs2bNzDPPPGP2799vjDFm06ZNplOnTubaa6+1vwx4eTd0UDAyv+F+9tlnZvr06eazzz4zf/zxh11/4IEHzOWXX55jMGVM9i/aKBi//fabKVOmjHnkkUfM77//btd///13M2bMGFOiRAlTt25dc9lll5lq1aqZ+fPnG2N4DTltw4YNpnbt2mb9+vVm1apV5sYbbzSNGjXyCTU+//xzc/fdd5ty5crZfYIzPB6PycjIMBMnTjTly5c3Y8eOtW/77bffTK1atcyrr75q9u/fb959913TtGlT+0scryXn7Ny500yZMsXceOON5q+//jLG/G/9L1myxISEhJiHH344x88f+lSwvOt348aN5uKLLzb16tUzDRs2NN99950xxpivvvrKtGvXzlxyySUmNjbW9OjRw0RFRfGZFACjRo0yFStWNMOGDTO9evUyFStWNE8++aQ5ceKEz3KrV682//rXv0z9+vXNrl27AjTaois5Odn06NHD9O/f36498cQTplmzZqZ+/fpm4MCBpmXLlqZ+/fr2H79QsDK/Tz3zzDMmNjbW1K1b1/Tp08cO1//++2/TokULExsba7744ots98H3owsDoVQR8uuvv5ry5cuboUOHmk2bNpkxY8aY6tWrm7vvvtskJCQYY07vMdWmTRvTvn17u4aClfkN9+GHHzZVqlQxl112mYmJiTF9+vTx+RL94IMPmhYtWphRo0bZf7WBc9xutxk5cqS5+eabjTH/6533A+/48eNmw4YNZtKk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Wl9//bXCw8OVkZGh4OBgtW7dOtBDL5IOHjyoyMhIDR06VJL03nvvaenSpVq+fLm6d++uxx9/XPfee6/S09PVoUOHAI+28AsKClJycrI2b96sFi1a6LffflPbtm3Vv39/de/eXXv37tXMmTP1xx9/6IMPPtD48eMVHBysCRMmKCMjQyNGjFBISEigp1EkmP/fK/fo0aN6//33NWzYMD3zzDOSpPvuu0+vv/66SpYsqVtuuUWRkZGSTu+Fs2HDBlWoUCGQQy8SjDH2Ntnbb7+tjRs3qkmTJrriiitUp04djRgxQlOmTNGqVat05ZVXaufOnXr55Ze1d+9eLV682N7jOigoSK1atQrwbAqfV155RQMHDlTJkiXl8XiUkZGh5cuXa9SoUapXr57q1aunf/3rX3r11Ve1bt06xcbGKiwsTH///bfS0tIUFhZmvwZRMH744Qc1adJEoaGh8ng8SkhI0LRp09S3b1+5XC61adNG8+fP17vvvqsBAwYoMjJSJ0+eVHp6uqpWrRro4cMfAhqJwS+8KX5SUpKpVq2a6dOnj0lMTDQ//vijadu2rXn55Zd9lp87d65p1qyZGTBggBkzZowpVqxYjlcrgP9l/mvYrFmzzDPPPGMef/xx88cff9h7so0fP95ceuml5ueffzbGGNOzZ0/z/PPP27/LHlIFy7t+ExISTJkyZcxdd91l7rvvPtO8eXNz0UUX2X+NXrBggenfv79p0aKFufXWW83SpUuNMZyrwyne973NmzebTp06mSuuuMI0btzYPmm5MaevSlW/fn3TokULLgwQAFlfC7///ruxLMvcd9995qqrrjLXXnutufPOO80LL7xgKlasaObMmWOM4TxfTvF4PObuu++2L9zw6KOPmp49e9q3p6WlmWXLlpny5cub4cOH2/XHHnvMPicbnHPgwAHTvXt3U7duXfPss8/63Hb33Xebiy66yMyYMcPeOzQzXksFJ/O6feyxx0zp0qVNbGysKVu2rLnxxhvNDz/8YNLT082cOXPMxRdfbMqUKWOaNm1qevbsadLS0owxnDC7IG3atMlYlmXuuOMOk5ycbG/jNW7c2CxZssQYk339r1y50jz00EMmKirKjBs3zvExFzVTpkwxlmWZhQsX2q+J3bt3mwoVKpjffvvNXm7YsGGmYcOGpm3btmbIkCGmdevWpkGDBpzfq5AglCok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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# 1. DEFINE THE ABSOLUTE FILE PATH\n", + "# *** IMPORTANT *** Please ensure this path is correct for your local machine.\n", + "travel_trip_data = r\"D:\\Ironhack\\Week4\\first_project\\data\\raw\\Travel details dataset.csv\"\n", + "\n", + "# --- Column Cleaning Function ---\n", + "def clean_column(name):\n", + " \"\"\"Cleans column names.\"\"\"\n", + " return name.lower().strip().replace(\" \", \"_\").replace('', '') \n", + "\n", + "# --- Load Data and Clean Columns ---\n", + "try:\n", + " # Use the absolute path variable to load the file\n", + " travel_trip_safina_df = pd.read_csv(travel_trip_data, encoding='ISO-8859-1')\n", + " print(\"File loaded successfully.\")\n", + "\n", + "except FileNotFoundError:\n", + " print(f\"ERROR: File not found. Please check and correct the path variable: {travel_trip_data}\")\n", + " raise\n", + "\n", + "travel_trip_safina_df.columns = [clean_column(col) for col in travel_trip_safina_df.columns] \n", + "\n", + "# --- 2. Split Destination into City and Country ---\n", + "travel_trip_safina_df['destination'] = travel_trip_safina_df['destination'].str.strip()\n", + "destination_split = travel_trip_safina_df['destination'].str.split(',\\s*', expand=True)\n", + "\n", + "travel_trip_safina_df['city'] = destination_split[0].str.strip()\n", + "travel_trip_safina_df['country'] = destination_split[1].fillna(destination_split[0]).str.strip() \n", + "\n", + "# --- 3. Analyze Destination Frequencies ---\n", + "# Group by both country and city to count the number of trips\n", + "destination_counts = travel_trip_safina_df.groupby(['country', 'city']).size().reset_index(name='Number of Trips')\n", + "\n", + "# **This is the critical line that completes the statement and fixes the SyntaxError**\n", + "destination_counts = destination_counts.sort_values(by='Number of Trips', ascending=False)\n", + "\n", + "# --- 4. Display the top 10 destinations ---\n", + "print(\"\\n--- Most Frequent Travel Destinations (Top 10) ---\")\n", + "print(destination_counts.head(10))\n", + "\n", + "# --- 5. Generate Plot (Optional) ---\n", + "top_10_destinations = destination_counts.head(10).copy()\n", + "top_10_destinations['Destination'] = top_10_destinations['city'] + ', ' + top_10_destinations['country']\n", + "\n", + "plt.figure(figsize=(12, 7))\n", + "plt.bar(top_10_destinations['Destination'], top_10_destinations['Number of Trips'], color='indigo')\n", + "plt.title('Top 10 Most Frequent Travel Destinations (City, Country)')\n", + "plt.xlabel('Destination')\n", + "plt.ylabel('Number of Trips')\n", + "plt.xticks(rotation=45, ha='right')\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "a485c7ea-8895-48c9-8dce-c536a7e3c409", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "File loaded successfully.\n", + "\n", + "--- Top Travel Destinations (City, Country) for September ---\n", + " country city Number of Trips\n", + "12 Tokyo Tokyo 3\n", + "0 Bangkok Bangkok 2\n", + "2 Greece Athens 1\n", + "3 Japan Tokyo 1\n", + "4 Paris Paris 1\n", + "1 Brazil Brazil 1\n", + "5 Phnom Penh Phnom Penh 1\n", + "6 Phuket Phuket 1\n", + "8 Scotland Edinburgh 1\n", + "7 SA Cape Town 1\n", + "9 Spain Barcelona 1\n", + "10 Sydney Sydney 1\n", + "11 Thailand Bangkok 1\n", + "13 USA New York City 1\n" + ] + }, + { + "data": { + "image/png": "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QGbOnCnR0dEu7pn7cSxT+/btk//973+yfv16uXXrlqu75RYWL14sM2bMEBGRAQMGyBNPPCEnT56UkSNHEkwl4Ag1bTabGIYhZ8+elfDwcDl27Bjr8DssW7ZMnnrqKXnppZekbt26Ur9+fQkODnZ1t9xKXFyciIiEhITIkCFDpHz58vLwww/L33//7eKeuZfNmzdLjRo1pHv37vLcc8/Jzp075ebNm+bnnwhfBEVuzwPHPFm8eLHMnj1bFi5cKCLC+ikJN2/elMOHD8vvv/8ucXFxLEMJONZNzZs3l0GDBsnx48flo48+km3btrm4Z+5lzpw5UrduXVm+fLns3LlTRP59r/G917UIpTxYwg/DsWPHSseOHaV27drSunVr2bBhg9PGgyeKiYmRL7/8UsLCwmTt2rXmIQ2nT59mxZUERyDVsGFDKVKkiLz44otSs2ZNad26tfz222+u7p7LJVxmZs2aJWFhYdKzZ08pVqyYzJw5U95++205deqUC3voence9unt7S1//fWXNG3aVIKCgiRXrlySNWtWF/bQPcTExMi2bdukVKlSZlu/fv2kW7duBFMJfPXVVzJ16lS5fPmyuSxVr15dunbtKmXLlpUPP/yQQ7ETePLJJ2Xo0KHy/vvvS/PmzWXcuHEiQniQUJYsWUREZMyYMTJhwgS5ceOGREZGssfUHa5evSqVK1eWTz75RE6fPi0jR46Uli1byo4dO8wfYBxfBD11+Ur4Y+fLL78szzzzjEydOlX69esn3bt3N7c58a/s2bNLu3bt5Pvvv5cdO3aIYRgeu/wkpKrmumn06NGydu1aOX/+vHzzzTfy1ltvyebNm13cQ9dTVVFV+fTTT2Xv3r2yZs0a6dWrl7zxxhuyZ88eERGP/97rcgqP9+abb2pAQIAuXLhQp0yZor169VIfHx/94osvVFXVZrO5uIfWc9R85swZbdCggTZp0kS///57VVVt3769vvPOO67snluy2Wz69NNPa+/evVVV1W63a/PmzbVVq1Z67do1p+k82a+//qovvviiLlu2zGybOHGi1qtXT/v3768nT550Ye9c6/Tp0063//nnH61WrZoOHjzYqf3gwYN68eJFK7vmdq5cuaKqqocPH9Y5c+aY7dOnT9fGjRvrE088oZGRkS7qnXsYNWqUGoahU6dO1VOnTmmTJk305Zdf1t27d+t7772n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RGirVq00NDRUly5d6vSY48ePm+cq8QTXr1/Xr7/+WkuUKKGdO3dW1dvLValSpZLck3XHjh26d+9ePXnypKp6xrKUcP174cIFcw8WhwULFqi3t7eOGjUq2RMFe9I6PCkJg6iEbS1btvSoKzjf6e+//9b27dubexwuX75c8+bNqz179lTDMHTEiBF6+vRpVb29p6enLEcJ3z/z58/X4cOH68KFC82rE0+ZMkVLly6tPXv21IiICF29erW2adNGq1atar4HPWFeJazx3Llzeu3aNXPb6Ny5czpx4kTz/IkJOQ7pu/M5Mqtbt27pyy+/7BRk3rx5Uzds2KCrVq1KFITv3btXq1ev7vGnGXFHhFKZxJ49e9QwDO3du7deu3bNXBFVq1ZNV65cqaqJf6HasGGDDh06VAMCAvStt96yvM+u8uSTT2revHl16dKlGh8fr6dOndLSpUvruXPnnA4b+vzzz/XFF1/UDh066JAhQzzyxO/nz5/X4OBgHTJkiKre/rArVKiQduzY0VzGrl27pqtXr9YtW7bo/v37VdUzvswkrG/48OGaO3dubdGihRYtWlTLli2rH374oV69elU3b96sDzzwgJYuXVorVKjgcVdBcXC8b/bu3auhoaFar149rVatmtNlxHfv3q2VKlXSunXrevThn4cPH9aSJUvqq6++qqq3T8jp5+enNWvW1KlTp5obnZ06dXI6CawnvO9UnZelRx55RJs3b641a9Y0f4BJGEx56iFojuXgxo0b+tVXX2mJEiW0W7duGhERoe3bt9cff/xRT5w4odHR0XrgwAE9cOCAeZiap0j4hW3cuHFat25dLVOmjLZr104PHTpkLmcLFixQHx8fff311z0yKE+NW7du6enTp7Vt27Zaq1Ytj55f586d0wULFuj169d169atWrRoUfO8ds8++6xmz55dX3jhBadzk2X2EOHOwxrz5MmjzZo103z58un//vc//e233zQuLk4/++wzLVeunObNm1dr1KihHTp0MLfPPWEbPOFy8O6772qzZs20Ro0a2qNHD3PPsDNnzuh7772nVatW1cGDB7uqq27hwoULOnr0aDUMw9xjSjXx++nKlSv68MMPa6tWrTL9e+1+RCiViWzcuFH9/f21V69e5q/GVapUMUMp1aTfoGPGjNFHHnnE/MU5s0q4cdStWzf18/PTr7/+Wn/55RetU6dOijaePG0D69ChQ9qoUSONi4vT+Ph4rVWrlrZp08b8ZdRTjuO/m3PnzmloaKhu377dfH89//zzWqNGDZ07d66qqn7//fc6Y8YMnTBhgkeGmw579+7V/Pnz64ABA3TJkiU6cOBAzZ49u86fP9+c5q+//tLixYtrSEiIR200JNxzbubMmea5WG7evKmNGzfWJk2a6COPPKIlSpTQGTNmaHx8vG7dulV/++038/GZef19p3379mnevHn1hRde0BUrVuigQYPUMAxdu3atqt5e1tq0aaMNGzZMdOGKzM6xHDiC3evXr5vBlJ+fn+bLl08rVKigBQsW1CJFimhgYKAWKFBAf/75Z1d221IJ3yuvvfaaFipUSD/55BMNDw/XwoUL64MPPqhbt24119MLFy5UwzD0k08+cVWX3d6VK1d02LBh2rx5c23QoIHHhggJOc45NmTIEO3WrZt52Oyrr76qTZs21YYNG3rM51zC7ecdO3Zoly5ddNu2baqqumbNGm3evLk+9NBDZpvq7Qt6REdHm+9XT9gGT7huGjlypAYGBuq8efN0zpw5+sADD2hwcLB5AYozZ87opEmTtECBAvrhhx+6qMeuk3DdcuHCBX3ttdfUMAydM2eO03T//POPrly5Ulu3bq0hISHmuslT3nv3C0KpTGbDhg3q5+en3bp107Nnz2rdunV106ZN5v2OX9gTnsR75cqVWrhwYT116pTl/bVKUiuebt26acGCBfWNN97QgIAAbdWqlT7++OPav39/ffLJJ7Vt27a6bNkyF/TWffzxxx9arFgx3blzpzZo0EBDQ0PNQ64iIiK0a9euum/fPhf30nU++OADDQ4O1mbNmjldBU319h55FStWTPJxmX0jPalwxHH5Xceu5jabTRs1aqSFCxdWHx8fnTVrljntrl27nNZbmZ1j/XTo0CHdt2+fHjhwQH///XdVVX3sscc0NDRUVW/vlRgYGKgVK1bUqVOnOj1HZg2kkjpUymazab9+/bRXr15mW/PmzbVly5ZOe9iFh4dr8+bNzeDOk5w5c0aLFCli7il27do1XbJkidauXVurVKmi//zzj0ZHR+u+ffv0+PHjevDgQdd22CJ3/pCyYcMGrVq1qnnOn59++klz5cqlQUFBWqFCBd26dav5RXjNmjUe8aU4rf7++2+dPHmyvvvuux51CfqE25crV67URYsW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jh075nQo9rlz57RLly66bt26TD9/7uSo98yZM9q5c2dt1KiRUzCV8D3VokWLRFcmhHsjlLoPLVq0yDyh3csvv6wBAQE6fPhwbdeundaoUUNbtWpl/vLw008/qb+/vz700EPml2hPM2nSJPX399fNmzfrjh07dNGiRZonTx598sknnX6hadOmjXnuFk9z9uxZrVKlir7yyitmW548ebRXr17mxuiJEyd0/fr1un37dj18+LCqesbJlRN+6L/11lsaEhJiXkVv79695n0//vijlihRQg3D0MGDB2v//v31xo0bqpp5g987Xb9+XYODg7VFixZO7fPmzdOcOXOa5/aZOHGiZs+eXT/++GMdPXq05syZ0+kwx8y4TCW38Xj16lWdPHmyBgQEmCc3V/134+rMmTP6/vvv6zvvvGOGCJlx/tzp8uXLWqpUKe3SpYtTe8WKFfWhhx7SGzdu6MCBA7V69erauXNnff/993XgwIHq6+urS5YscVGvXSc+Pl579OihhmHonj17VPXf5eTy5cvavn17LVCggBlMOZZHT1iWEtZot9t18+bNGhoaqm3btjUP5YuPj9eqVatqo0aNdOrUqfrggw9q9erVzfnkCevwhPPp008/1WHDhumHH35o/piQ3LzI7OHKnY4cOWJeqfLq1avat29fLVKkiFarVs2cxjFPPvvsM61QoUKmPmdrUhIuS19//bU+++yzGhgYqEWKFHEKpubNm6e1a9fWp59+OtGhfJndm2++qR06dFCbzWbOr+3bt5vBlONHulu3bmmrVq20Xr16+uWXX+qDDz6oTZs2TTLo9ASOeqOjo/Wxxx4zgynHeslut+s///yjLVq0MA/Nxv2BUOo+M2PGDDUMQ9etW6d//fWXli1bVjdv3mze/+233+ojjzyiHTp0MHcZdhyj7WkrLocOHTpo//79ndq+++47zZYtm3bv3l137NhhtnvChqfDnYc2VqtWTWNiYvTGjRtar149bdmypXmOlr///tsMWDzVa6+9pkFBQbpkyRL966+/tE6dOlqyZEldt26dqt7+IPzpp5+0ZMmSTnsBedKed999952WLl1au3fv7rTX0759+zRfvny6ZcsWVb0dXg0YMECLFSum1atXN/e6y6wc65WrV6/q8OHDtV+/fjpkyBDz/itXruj06dPV29tb3377bbM9qS97nhAEq94+rNow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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "# 1. DEFINE THE ABSOLUTE FILE PATH\n", + "# *** IMPORTANT *** Please ensure this path is correct for your local machine.\n", + "travel_trip_data = r\"D:\\Ironhack\\Week4\\first_project\\data\\raw\\Travel details dataset.csv\"\n", + "\n", + "# --- Column Cleaning Function ---\n", + "def clean_column(name):\n", + " \"\"\"Cleans column names.\"\"\"\n", + " return name.lower().strip().replace(\" \", \"_\").replace('', '') \n", + "\n", + "# --- Load Data and Clean Columns ---\n", + "try:\n", + " # Use the absolute path variable to load the file\n", + " travel_trip_safina_df = pd.read_csv(travel_trip_data, encoding='ISO-8859-1')\n", + " print(\"File loaded successfully.\")\n", + "\n", + "except FileNotFoundError:\n", + " print(f\"ERROR: File not found. Please check and correct the path variable: {travel_trip_data}\")\n", + " raise\n", + "\n", + "travel_trip_safina_df.columns = [clean_column(col) for col in travel_trip_safina_df.columns] \n", + "\n", + "# --- 2. Prepare Date Columns and Filter for September ---\n", + "# Convert 'start_date' to datetime\n", + "travel_trip_safina_df['start_date'] = pd.to_datetime(travel_trip_safina_df['start_date'], errors='coerce')\n", + "\n", + "# Extract 'start_month'\n", + "travel_trip_safina_df['start_month'] = travel_trip_safina_df['start_date'].dt.month.astype('Int64')\n", + "\n", + "# Filter for trips starting in September (Month 9)\n", + "september_trips_df = travel_trip_safina_df[travel_trip_safina_df['start_month'] == 9].copy()\n", + "\n", + "# --- 3. Clean and Split Destination ---\n", + "september_trips_df['destination'] = september_trips_df['destination'].str.strip()\n", + "destination_split = september_trips_df['destination'].str.split(',\\s*', expand=True)\n", + "\n", + "# Assign the split parts to new city and country columns\n", + "september_trips_df['city'] = destination_split[0].str.strip()\n", + "september_trips_df['country'] = destination_split[1].fillna(destination_split[0]).str.strip()\n", + "\n", + "# --- 4. Analyze Destination Frequencies for September (CREATES THE VARIABLE) ---\n", + "# Group by both country and city to count the number of trips\n", + "september_destination_counts = september_trips_df.groupby(['country', 'city']).size().reset_index(name='Number of Trips')\n", + "\n", + "# Sort the results in descending order\n", + "september_destination_counts = september_destination_counts.sort_values(by='Number of Trips', ascending=False)\n", + "\n", + "# --- 5. Display the results ---\n", + "print(\"\\n--- Top Travel Destinations (City, Country) for September ---\")\n", + "print(september_destination_counts)\n", + "\n", + "# --- 6. Generate Plot ---\n", + "# Preparing data for plotting\n", + "september_destination_counts['Destination'] = september_destination_counts['city'] + ', ' + september_destination_counts['country']\n", + "\n", + "plt.figure(figsize=(12, 7))\n", + "plt.bar(september_destination_counts['Destination'], september_destination_counts['Number of Trips'], color='forestgreen')\n", + "plt.title('Travel Destinations in September')\n", + "plt.xlabel('Destination')\n", + "plt.ylabel('Number of Trips')\n", + "plt.xticks(rotation=45, ha='right')\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "ab6a8aa1-fa8c-4e1a-8705-2c1fa2534860", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "File loaded successfully.\n", + "\n", + "Full details, including nationality, have been saved to 'seven_day_trip_details_with_nationality.csv'.\n", + "\n", + "--- Nationality Breakdown for 7-Day Trips ---\n", + "Traveler Nationality\n", + "American 8\n", + "Canadian 6\n", + "Korean 5\n", + "British 4\n", + "Spanish 4\n", + "Australian 3\n", + "Mexican 2\n", + "Brazilian 2\n", + "Vietnamese 2\n", + "Chinese 2\n", + "South Korean 2\n", + "Dutch 1\n", + "Emirati 1\n", + "Moroccan 1\n", + "Scottish 1\n", + "Italian 1\n", + "Japanese 1\n", + "Taiwanese 1\n", + "Taiwan 1\n", + "Brazil 1\n", + "Germany 1\n", + "Singapore 1\n", + "Italy 1\n", + "Greece 1\n", + "New Zealander 1\n", + "Name: Number of 7-Day Trips, dtype: int64\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "# 1. DEFINE THE ABSOLUTE FILE PATH\n", + "# *** IMPORTANT *** Please ensure this path is correct for your local machine.\n", + "travel_trip_data = r\"D:\\Ironhack\\Week4\\first_project\\data\\raw\\Travel details dataset.csv\"\n", + "\n", + "# --- Column Cleaning Function ---\n", + "def clean_column(name):\n", + " \"\"\"Cleans column names.\"\"\"\n", + " return name.lower().strip().replace(\" \", \"_\").replace('', '') \n", + "\n", + "# --- Load Data and Clean Columns ---\n", + "try:\n", + " # Use the absolute path variable to load the file\n", + " travel_trip_safina_df = pd.read_csv(travel_trip_data, encoding='ISO-8859-1')\n", + " print(\"File loaded successfully.\")\n", + "\n", + "except FileNotFoundError:\n", + " print(f\"ERROR: File not found. Please check and correct the path variable: {travel_trip_data}\")\n", + " raise\n", + "\n", + "travel_trip_safina_df.columns = [clean_column(col) for col in travel_trip_safina_df.columns] \n", + "\n", + "# --- 2. Prepare 'duration_(days)' Column and Filter ---\n", + "# Convert duration to a nullable integer type\n", + "travel_trip_safina_df['duration_(days)'] = pd.to_numeric(\n", + " travel_trip_safina_df['duration_(days)'], \n", + " errors='coerce'\n", + ").astype('Int64')\n", + "\n", + "# Filter for all trips that lasted exactly 7 days\n", + "seven_day_trips = travel_trip_safina_df[\n", + " travel_trip_safina_df['duration_(days)'] == 7\n", + "].copy()\n", + "\n", + "# --- 3. Analyze Nationality Frequency ---\n", + "# Count the number of trips for each nationality\n", + "nationality_counts = seven_day_trips['traveler_nationality'].value_counts().sort_values(ascending=False)\n", + "\n", + "# Rename the series for clear display\n", + "nationality_counts = nationality_counts.rename_axis('Traveler Nationality').rename('Number of 7-Day Trips')\n", + "\n", + "# --- 4. Prepare and Save Full Details to CSV ---\n", + "details_df = seven_day_trips[['traveler_name', 'traveler_nationality', 'destination', 'duration_(days)']]\n", + "\n", + "output_file_full = 'seven_day_trip_details_with_nationality.csv'\n", + "details_df.to_csv(output_file_full, index=False)\n", + "print(f\"\\nFull details, including nationality, have been saved to '{output_file_full}'.\")\n", + "\n", + "# --- 5. Display the Breakdown ---\n", + "print(\"\\n--- Nationality Breakdown for 7-Day Trips ---\")\n", + "print(nationality_counts)" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "ae1ff22c-540b-4e8e-b0b0-403f3599501a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "File loaded successfully.\n", + "\n", + "--- 1. Most Frequent Traveling Nationality ---\n", + "The nationality that takes the most trips is: American (Total Trips: 24)\n", + "\n", + "--- 2. Top Destinations for American Travelers (Top 5) ---\n", + " country city Number of Trips\n", + " France Paris 4\n", + "New York New York 3\n", + " Paris Paris 3\n", + " Japan Tokyo 3\n", + " Mexico Cancun 2\n" + ] + }, + { + "data": { + "image/png": "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w4aqXbu2+fytt96qMmXK6Pfff9fTTz9dqLZczLr5ueaaa/TCCy9o/vz52rhxY5G8JgAUNYpuACgBunbtqvHjx6tbt27at2+frrvuOv3www96/fXX1a5dO912220uy1eoUEEtW7bU8OHDVapUKb3//vvasWPHeW8b9vHHH+vzzz9X+/btVbVqVR07dkzz5s3TJ598oscee0yxsbEFau+BAwf0888/KysrSzabTQkJCeap4W+//bZat25tLvvyyy9r2bJlatSokfr27atatWrp9OnT2rdvn5YuXaqJEycqIiJCTzzxhAICAnTrrbeqUqVKSkpK0qhRoxQSEmIWrXXr1pUkTZ48WUFBQfL391f16tUv6Oh+dnfeeaemT5+u2rVrKyYmRr/++qtGjx6d6weMqKgoBQQEaPbs2YqOjlbp0qVVuXJll4LVqVatWnryySf17rvvysvLS23bttW+ffs0fPhwRUZGqn///oVu51133aW6deuqQYMGCg0N1f79+xUfH6+qVauqZs2ahX69ESNGmNfcv/jiiypXrpxmz56tJUuW6K233lJISEihX9Nut2vGjBmKjo5Wz549881j4cKFSk5ONo8oX4x33nlHjRs3VpMmTfR///d/qlatmo4fP67du3dr0aJFWrFixQW97vjx43XXXXfplltuUf/+/VWlShUdOHBA33zzjWbPni2p4GPHUxo1aqSyZcuqV69eGjFihHx8fDR79mz99ttveS5fu3ZtNWzYUKNGjdJff/2lyZMnuzxfunRpvfvuu+rWrZtSU1PVqVMnhYWFKTk5Wb/99puSk5M1YcKEPF/7YtZ12rx5s55++mndf//9qlmzpnx9fbVixQpt3rxZzz///IV9SADgbp6cxQ0ArlR5zT589OhRo1evXkalSpUMb29vo2rVqsaQIUOM06dPuyynf2ehfv/9942oqCjDx8fHqF27tjF79uzzvu/atWuNVq1aGeHh4YaPj48RGBho3Hjjjcb777/vMmNxfpyzlzv/Wa1Wo2zZskb9+vWNZ5991pyJPKfk5GSjb9++RvXq1Q0fHx+jXLlyRv369Y1hw4YZJ06cMAzDMD766COjRYsWRsWKFQ1fX1+jcuXKxgMPPGBs3rzZ5bXi4+ON6tWrG1ar1WUm8fxmL885Y7dhnL1tWrdu3czH//zzj/H4448bYWFhRmBgoNG4cWPj+++/N5o1a2Y0a9bMZd05c+YYtWvXNnx8fAxJxogRIwzDyPuWYQ6Hw3jzzTeNa665xvDx8TEqVKhgPProo+ZtxpyaNWtm1KlTJ1c7c+b09ttvG40aNTIqVKhg+Pr6GlWqVDEef/xxY9++fbnWzSm/z2LLli3GXXfdZYSEhBi+vr5GbGxsrtnZnTNvF+SWdF988cV5Z5f++uuvDUnG22+/bRhG/vlXrVrVaN++fYFy2bt3r9GjRw/jqquuMnx8fIzQ0FCjUaNGxquvvlqgPPKavdwwzn5n2rZta4SEhBh+fn5GVFSUy6zkBR07+b238zuV14z4+clv9vK8PkPDMIyffvrJaNiwoREYGGiEhoYaPXv2NDZu3Jjv+06ePNm8S0LOGeGdVq9ebbRv394oV66c4ePjY1x11VVG+/btXfLL65ZhBV3X+X3Kfms9wzCMv//+23jssceM2rVrG6VKlTJKly5txMTEGP/73/8Kdds1AChOFsPIMc0sAKBEs1gs6tOnj9577z1PNwUAAADnwezlAAAAAAC4CUU3AAAAAABuwkRqAHCJ4aogAACASwdHugEAAAAAcBOKbgAAAAAA3ISiGwAAAAAAN7nirunOysrS4cOHFRQUJIvF4unmAAAAAAAuQYZh6Pjx46pcubK8vPI/nn3FFd2HDx9WZGSkp5sBAAAAALgM/PXXX4qIiMj3+Suu6A4KCpJ09oMJDg72cGsAAAAAAJeitLQ0RUZGmjVmfq64ott5SnlwcDBFNwAAAADgopzvsmUmUgMAAAAAwE0ougEAAAAAcBOKbgAAAAAA3ISiGwAAAAAAN6HoBgAAAADATSi6AQAAAABwE4puAAAAAADchKIbAAAAAAA3oegGAAAAAMBNKLoBAAAAAHATim4AAAAAANyEohsAAAAAADeh6AYAAAAAwE1KTNE9atQoWSwWPfvss+dcbvXq1apfv778/f1Vo0YNTZw4sXgaCAAAAABAIZWIonv9+vWaPHmyYmJizrnc3r171a5dOzVp0kQJCQkaOnSo+vbtq/nz5xdTSwEAAAAAKDiPF90nTpzQI488og8++EBly5Y957ITJ05UlSpVFB8fr+joaPXs2VM9evTQmDFjiqm1AAAAAAAUnLenG9CnTx+1b99et912m1599dVzLrt27Vq1bt3aJdamTRtNmTJFZ86ckY+PT651MjIylJGRYT5OS0uTJNntdtntdkmSl5eXvLy8lJWVpaysLHNZZ9zhcMgwjPPGrVarLBaL+brZ45LkcDgKFPf29pZhGC5xi8Uiq9Waq435xcmJnMiJnMiJnMiJnMiJnMiJnMjJfTkVlEeL7k8++UQbN27U+vXrC7R8UlKSKlas6BKrWLGi7Ha7UlJSVKlSpVzrjBo1SiNHjswVT0hIUKlSpSRJoaGhioqK0t69e5WcnGwuExERoYiICO3atUs2m82M16hRQ2FhYdq6datOnTplxmvXrq0yZcooISHBpcNjYmLk6+urDRs2uLShQYMGyszM1ObNm82Y1WrVjTfeKJvNpjFLlpjxFLtdk5KTVS8wUO1DQsz4nowMzUlNVdOgIDUpXdqMbzp5UktsNrUPCVG9wEAz/v2JE1pz/LgeKldONfz8zPgSm02bTp7UU6GhquD937CYk5qqPRkZei48XL4WixmflJysNIdDz4WHu+Q0OilJwVarngoNNWOZhqHRSUmq4eenh8qVIyc35DSwffsiHXs7duww4wEBAYqNjVVKSor27NljxkNCQhQdHa3Dhw/r4MGDZrykfp/IiZzIiZzIiZzIiZzIiZyKMid/f38VhMXIXq4Xo7/++ksNGjTQt99+q9jYWElS8+bNVa9ePcXHx+e5zjXXXKPu3btryJAhZuzHH39U48aNlZiYqPAcxZKU95HuyMhIHT16VMHBwZJK7i81/mPHmjFD0hnDkJck72yFojNulWTNFs8yDNl19lcVr2xxh2HIIcnHYtF/UcluGMo6Rzx7cap/39PII55pGLL8+zo54/m1nZwuPqfTcXGX9K+El+Mvn+RETuRETuRETuRETuR0eed04sQJhYSEyGazmbVlXjxWdH/xxRe69957zQ9OOvvhWSwWeXl5KSMjw+U5SWratKmuv/56vfPOO2ZswYIFeuCBB3Ty5Mk8Ty/PKS0trUAfTElg4Vp1FJAxcKCnmwAAAABcUQpaW3rs9PJWrVppy5YtLrHu3burdu3aGjx4cK6CW5IaNmyoRYsWucS+/fZbNWjQoEAFNwAAAAAAxcljRXdQUJDq1q3rEitVqpTKly9vxocMGaJDhw5pxowZkqRevXrpvffeU1xcnJ544gmtXbtWU6ZM0Zw5c4q9/QAAAAAAnI/Hbxl2LomJiTpw4ID5uHr16lq6dKlWrVqlevXq6ZVXXtG4cePUsWNHD7YSAAAAAIC8eeyabk/hmm5cjrimGwAAACheBa0tS/SRbgAAAAAALmUU3QAAAAAAuAlFNwAAAAAAbkLRDQAAAACAm1B0AwAAAADgJhTdAAAAAAC4CUU3AAAAAABuQtENAAAAAICbUHQDAAAAAOAmFN0AAAAAALgJRTcAAAAAAG5C0Q0AAAAAgJtQdAMAAAAA4CYU3QAAAAAAuAlFNwAAAAAAbkLRDQAAAACAm1B0AwAAAADgJhTdAAAAAAC4CUU3AAAAAABuQtENAAAAAICbUHQDAAAAAOAmFN0AAAAAALgJRTcAAAAAAG5C0Q0AAAAAgJtQdAMAAAAA4CYU3QAAAAAAuAlFNwAAAAAAbkLRDQAAAACAm1B0AwAAAADgJhTdAAAAAAC4CUU3AAAAAABuQtENAAAAAICbUHQDAAAAAOAmFN0AAAAAALgJRTcAAAAAAG5C0Q0AAAAAgJtQdAMAAAAA4CYU3QAAAAAAuIlHi+4JEyYoJiZGwcHBCg4OVsOGDfXVV1/lu/yqVatksVhy/duxY0cxthoAAAAAgILx9uSbR0RE6I033tDVV18tSfroo490zz33KCEhQXXq1Ml3vZ07dyo4ONh8HBoa6va2AgAAAABQWB4tuu+66y6Xx6+99pomTJign3/++ZxFd1hYmMqUKePm1gEAAAAAcHE8WnRn53A4NG/ePKWnp6thw4bnXPb666/X6dOnde211+qFF15QixYt8l02IyNDGRkZ5uO0tDRJkt1ul91ulyR5eXnJy8tLWVlZysrKMpd1xh0OhwzDOG/carXKYrGYr5s97syxIHFvb28ZhiFfi8WMGZLOGIa8JHnnEbdKsmaLZxmG7DrbwV7Z4g7DkEOSj8Wi/6KS3TCUdY549rbo3/c08ohnGoYs/75Oznh+bSeni8/JMIwiHXvZ4xaLRVarNdf3I794Sf0+kRM5kRM5kRM5kRM5kRM5FWVOBeXxonvLli1q2LChTp8+rdKlS2vBggW69tpr81y2UqVKmjx5surXr6+MjAzNnDlTrVq10qpVq9S0adM81xk1apRGjhyZK56QkKBSpUpJOnt6elRUlPbu3avk5GRzmYiICEVERGjXrl2y2WxmvEaNGgoLC9PWrVt16tQpM167dm2VKVNGCQkJLh0eExMjX19fbdiwwaUNDRo0UGZmpjZv3mzGrFarbrzxRtlsNj0XHm7GU+x2TUpOVkxgoNqHhJjxPRkZmpOaqluDgtSkdGkzvunkSS2x2dQmJET1AgPN+PcnTmjN8ePqVLasavj5mfElNps2nTypHhUqqIL3f8NiTmqq9mRkqF/Fii7F6KTkZKU5HC5tlKTRSUkKtlr1VLZT/jMNQ6OTklTNz08PlStHTm7IyWazFenYyz5PQkBAgGJjY5WSkqI9e/aY8ZCQEEVHR+vw4cM6ePCgGS+p3ydyIidyIidyIidyIidyIqeizMnf318FYTGyl+sekJmZqQMHDujYsWOaP3++PvzwQ61evTrfwjunu+66SxaLRQsXLszz+byOdEdGRuro0aPmdeEl9Zca/7FjzRhHhcnpXDmdjou7pH8lvBx/+SQnciInciInciInciKnyzunEydOKCQkRDabzWXOsZw8XnTndNtttykqKkqTJk0q0PKvvfaaZs2ape3btxdo+bS0tAJ9MCWBZcwYTzcBlwhj4EBPNwEAAAC4ohS0tixx9+k2DMPlyPT5JCQkqFKlSm5sEQAAAAAAF8aj13QPHTpUbdu2VWRkpI4fP65PPvlEq1at0tdffy1JGjJkiA4dOqQZM2ZIkuLj41WtWjXVqVNHmZmZmjVrlubPn6/58+d7Mg0AAAAAAPLk0aL777//VpcuXZSYmKiQkBDFxMTo66+/1u233y5JSkxM1IEDB8zlMzMzNXDgQB06dEgBAQGqU6eOlixZonbt2nkqBQAAAAAA8lXirul2N67pxuWIa7oBAACA4nXJXtMNAAAAAMDlgqIbAAAAAAA3oegGAAAAAMBNKLoBAAAAAHATim4AAAAAANyEohsAAAAAADeh6AYAAAAAwE0ougEAAAAAcBOKbgAAAAAA3ISiGwAAAAAAN6HoBgAAAADATSi6AQAAAABwE4puAAAAAADchKIbAAAAAAA3oegGAAAAAMBNKLoBAAAAAHATim4AAAAAANyEohsAAAAAADeh6AYAAAAAwE0ougEAAAAAcBOKbgAAAAAA3ISiGwAAAAAAN6HoBgAAAADATSi6AQAAAABwE4puAAAAAADchKIbAAAAAAA3oegGAAAAAMBNKLoBAAAAAHATim4AAAAAANyEohsAAAAAADeh6AYAAAAAwE0ougEAAAAAcBOKbgAAAAAA3ISiGwAAAAAAN6HoBgAAAADATSi6AQAAAABwE4puAAAAAADchKIbAAAAAAA38WjRPWHCBMXExCg4OFjBwcFq2LChvvrqq3Ous3r1atWvX1/+/v6qUaOGJk6cWEytBQAAAACgcDxadEdEROiNN97Qhg0btGHDBrVs2VL33HOPtm3blufye/fuVbt27dSkSRMlJCRo6NCh6tu3r+bPn1/MLQcAAAAA4Py8Pfnmd911l8vj1157TRMmTNDPP/+sOnXq5Fp+4sSJqlKliuLj4yVJ0dHR2rBhg8aMGaOOHTsWR5MBAAAAACiwEnNNt8Ph0CeffKL09HQ1bNgwz2XWrl2r1q1bu8TatGmjDRs26MyZM8XRTAAAAAAACsyjR7olacuWLWrYsKFOnz6t0qVLa8GCBbr22mvzXDYpKUkVK1Z0iVWsWFF2u10pKSmqVKlSrnUyMjKUkZFhPk5LS5Mk2e122e12SZKXl5e8vLyUlZWlrKwsc1ln3OFwyDCM88atVqssFov5utnj0tkfFgoS9/b2lmEY8rVYzJgh6YxhyEuSdx5xqyRrtniWYciusx3slS3uMAw5JPlYLPovKtkNQ1nniGdvi/59TyOPeKZhyPLv6+SM59d2crr4nAzDKNKxlz1usVhktVpzfT/yi5fU7xM5kRM5kRM5kRM5kRM5kVNR5lRQHi+6a9WqpU2bNunYsWOaP3++unXrptWrV+dbeFtyFD7OxHPGnUaNGqWRI0fmiickJKhUqVKSpNDQUEVFRWnv3r1KTk42l4mIiFBERIR27dolm81mxmvUqKGwsDBt3bpVp06dMuO1a9dWmTJllJCQ4NLhMTEx8vX11YYNG1za0KBBA2VmZmrz5s1mzGq16sYbb5TNZtNz4eFmPMVu16TkZMUEBqp9SIgZ35ORoTmpqbo1KEhNSpc245tOntQSm01tQkJULzDQjH9/4oTWHD+uTmXLqoafnxlfYrNp08mT6lGhgip4/zcs5qSmak9GhvpVrOhSjE5KTlaaw+HSRkkanZSkYKtVT4WGmrFMw9DopCRV8/PTQ+XKkZMbcrLZbEU69nbs2GHGAwICFBsbq5SUFO3Zs8eMh4SEKDo6WocPH9bBgwfN+KtbtmiJzab2+eT0ULlyeeb0VGhonv30XHj4RfdTjXz6qV4+/dQ0n34ip6LN6c6oKElFN/YuZls+b+vWIsnJ6XLqJ3JyzenjHj2KdOxdzH5Esx9/pJ/IqUA5Obe3xbUP66ltOTmRU3Hn5O/vr4KwGNnL9RLgtttuU1RUlCZNmpTruaZNm+r666/XO++8Y8YWLFigBx54QCdPnpSPj0+udfI60h0ZGamjR48qODhYUsn9pcZ/7FgzxlFhcjpXTqfj4krMr4QB8fH0EzkVKKf0fv3MuKd/dQ/8d66Qi80pZ/xy6Cdyco1nDhhQYo74+MTH00/kVKCcnNvby/VoIzmRk6dyOnHihEJCQmSz2czaMi8eP9Kdk2EYLkVydg0bNtSiRYtcYt9++60aNGiQZ8EtSX5+fvLL9qulk7e3t7y9XdN3fqA5OTu3oPGcr3shcYvFosw8fg/JkvKMO3R2A5uTXZLyiJ/J57eW/OJ5vWd+cSOfeH5tJ6eLz8l5pkdRjb284vl9P3LG7dn/Sz/lGSens/Gc4+xix9754ufalufVTvqJnPKLF+XYy0thttn0EzlJ588p59hx9z6sp7blBW1jYePkRE5S/m0vCI9OpDZ06FB9//332rdvn7Zs2aJhw4Zp1apVeuSRRyRJQ4YMUdeuXc3le/Xqpf379ysuLk7bt2/X1KlTNWXKFA0cONBTKQAAAAAAkC+PHun++++/1aVLFyUmJiokJEQxMTH6+uuvdfvtt0uSEhMTdeDAAXP56tWra+nSperfv7/Gjx+vypUra9y4cdwuDAAAAABQInm06J4yZco5n58+fXquWLNmzbRx40Y3tQgAAAAAgKJTYu7TDQAAAADA5YaiGwAAAAAAN6HoBgAAAADATSi6AQAAAABwE4puAAAAAADchKIbAAAAAAA3oegGAAAAAMBNKLoBAAAAAHATim4AAAAAANyEohsAAAAAADeh6AYAAAAAwE0ougEAAAAAcBOKbgAAAAAA3ISiGwAAAAAAN6HoBgAAAADATSi6AQAAAABwE4puAAAAAADchKIbAAAAAAA3oegGAAAAAMBNKLoBAAAAAHATim4AAAAAANyEohsAAAAAADeh6AYAAAAAwE0ougEAAAAAcBOKbgAAAAAA3ISiGwAAAAAAN6HoBgAAAADATSi6AQAAAABwE4puAAAAAADcpNBF919//aWDBw+aj3/55Rc9++yzmjx5cpE2DAAAAACAS12hi+6HH35YK1eulCQlJSXp9ttv1y+//KKhQ4fq5ZdfLvIGAgAAAABwqSp00b1161bddNNNkqRPP/1UdevW1U8//aSPP/5Y06dPL+r2AQAAAABwySp00X3mzBn5+flJkr777jvdfffdkqTatWsrMTGxaFsHAAAAAMAlrNBFd506dTRx4kR9//33WrZsme644w5J0uHDh1W+fPkibyAAAAAAAJeqQhfdb775piZNmqTmzZvroYceUmxsrCRp4cKF5mnnAAAAAABA8i7sCs2bN1dKSorS0tJUtmxZM/7kk08qMDCwSBsHAAAAAMClrNBFtyRZrVadOXNG33//vSwWi6655hpVq1atiJsGAAAAAMClrdCnl6elpalLly666qqr1KxZMzVt2lRXXXWVHn30UdlsNne0EQAAAACAS1Khi+6ePXtq3bp1Wrx4sY4dOyabzabFixdrw4YNeuKJJ9zRRgAAAAAALkmFLrqXLFmiqVOnqk2bNgoODlZQUJDatGmjDz74QEuWLCnUa40aNUo33nijgoKCFBYWpg4dOmjnzp3nXGfVqlWyWCy5/u3YsaOwqQAAAAAA4FaFLrrLly+vkJCQXPGQkBCXidUKYvXq1erTp49+/vlnLVu2THa7Xa1bt1Z6evp51925c6cSExPNfzVr1izUewMAAAAA4G6FnkjthRdeUFxcnGbMmKFKlSpJkpKSkvTcc89p+PDhhXqtr7/+2uXxtGnTFBYWpl9//VVNmzY957phYWEqU6ZMod4PAAAAAIDiVOiie8KECdq9e7eqVq2qKlWqSJIOHDggPz8/JScna9KkSeayGzduLNRrOydiK1eu3HmXvf7663X69Glde+21euGFF9SiRYs8l8vIyFBGRob5OC0tTZJkt9tlt9slSV5eXvLy8lJWVpaysrLMZZ1xh8MhwzDOG7darbJYLObrZo9LksPhKFDc29tbhmHI12IxY4akM4YhL0neecStkqzZ4lmGIbvOdrBXtrjDMOSQ5GOx6L+oZDcMZZ0jnr0t+vc9jTzimYYhy7+vkzOeX9vJ6eJzMgyjSMde9rjFYpHVas31/cgv7i3RT+RUoJyyj9eiGHsXsy3P3k76iZzOlZOkIh17F7MfIYl+IqcC5ZRzn9fd+7Ce2paTEzkVd04FVeiiu0OHDoVdpUAMw1BcXJwaN26sunXr5rtcpUqVNHnyZNWvX18ZGRmaOXOmWrVqpVWrVuV5dHzUqFEaOXJkrnhCQoJKlSolSQoNDVVUVJT27t2r5ORkc5mIiAhFRERo165dLjOz16hRQ2FhYdq6datOnTplxmvXrq0yZcooISHBpcNjYmLk6+urDRs2uLShQYMGyszM1ObNm82Y1WrVjTfeKJvNpufCw814it2uScnJigkMVPtsp/fvycjQnNRU3RoUpCalS5vxTSdPaonNpjYhIaqX7f7p3584oTXHj6tT2bKq4ednxpfYbNp08qR6VKigCt7/DYs5qanak5GhfhUruvwRmZScrDSHw6WNkjQ6KUnBVqueCg01Y5mGodFJSarm56eHsv2gQk5Fl5PNZivSsZd9joSAgADFxsYqJSVFe/bsMeMhISGKjo7W4cOHdfDgQTPeJiSEfiKnAuXkHJdFNfYuZluevZ30EzmdKydJRTr2LmY/wtdioZ/IqUA5OcdOce3DempbTk7kVNw5+fv7qyAsRvZy3YP69OmjJUuW6IcfflBERESh1r3rrrtksVi0cOHCXM/ldaQ7MjJSR48eVXBwsKSS+0uN/9ixZoxfc8npXDmdjosrMb8SBsTH00/kVKCc0vv1M+Oe/tU9MD6+SHLKGb8c+omcXOOZAwaUmCM+PvHx9BM5FSgn5/b2cj3aSE7k5KmcTpw4oZCQENlsNrO2zEuhj3S7wzPPPKOFCxdqzZo1hS64JemWW27RrFmz8nzOz89Pftl+tXTy9vaWt7dr+s4PNCdn5xY0nvN1LyRusViUmcfvIVlSnnGHzm5gc7JLUh7xM/n81pJfPK/3zC9u5BPPr+3kdPE5Wf79Q1tUYy+veH7fj5xxe/b/0k95xsnpbDznOLvYsXe++Lm25Xm1k34ip/ziRTn28lKYbTb9RE7S+XPKOXbcvQ/rqW15QdtY2Dg5kZOUf9sLokBFd7ly5bRr1y5VqFBBZcuWNXfw85KamlrgNzcMQ88884wWLFigVatWqXr16gVeN7uEhARzUjcAAAAAAEqKAhXd//vf/xQUFCRJis92Ct7F6tOnjz7++GN9+eWXCgoKUlJSkqSz59kHBARIkoYMGaJDhw5pxowZ5vtXq1ZNderUUWZmpmbNmqX58+dr/vz5RdYuAAAAAACKQoGK7m7dukn6b+bDNm3aKDzHJBEXYsKECZKk5s2bu8SnTZumxx57TJKUmJioAwcOmM9lZmZq4MCBOnTokAICAlSnTh0tWbJE7dq1u+j2AAAAAABQlAp1Tbe3t7f+7//+T9u3by+SNy/IHG7Tp093eTxo0CANGjSoSN4fAAAAAAB3KvjNxf518803KyEhwR1tAQAAAADgslLo2ct79+6tAQMG6ODBg6pfv755r2unmJiYImscAAAAAACXsgIX3T169FB8fLwefPBBSVLfvn3N5ywWiwzDkMViyXXPNAAAAAAArlQFLro/+ugjvfHGG9q7d6872wMAAAAAwGWjwEW3c9KzqlWruq0xAAAAAABcTgo1kZrFYnFXOwAAAAAAuOwUaiK1a6655ryFd2pq6kU1CAAAAACAy0Whiu6RI0cqJCTEXW0BAAAAAOCyUqiiu3PnzgoLC3NXWwAAAAAAuKwU+JpurucGAAAAAKBwClx0O2cvBwAAAAAABVPg08uzsrLc2Q4AAAAAAC47hbplGAAAAAAAKDiKbgAAAAAA3ISiGwAAAAAANylQ0X3DDTfon3/+kSS9/PLLOnnypFsbBQAAAADA5aBARff27duVnp4uSRo5cqROnDjh1kYBAAAAAHA5KNDs5fXq1VP37t3VuHFjGYahMWPGqHTp0nku++KLLxZpAwEAAAAAuFQVqOiePn26RowYocWLF8tiseirr76St3fuVS0WC0U3AAAAAAD/KlDRXatWLX3yySeSJC8vLy1fvlxhYWFubRgAAAAAAJe6AhXd2WVlZbmjHQAAAAAAXHYKXXRL0p9//qn4+Hht375dFotF0dHR6tevn6Kiooq6fQAAAAAAXLIKfZ/ub775Rtdee61++eUXxcTEqG7dulq3bp3q1KmjZcuWuaONAAAAAABckgp9pPv5559X//799cYbb+SKDx48WLfffnuRNQ4AAAAAgEtZoY90b9++XY8//niueI8ePfT7778XSaMAAAAAALgcFLroDg0N1aZNm3LFN23axIzmAAAAAABkU+jTy5944gk9+eST2rNnjxo1aiSLxaIffvhBb775pgYMGOCONgIAAAAAcEkqdNE9fPhwBQUF6e2339aQIUMkSZUrV9ZLL72kvn37FnkDAQAAAAC4VBW66LZYLOrfv7/69++v48ePS5KCgoKKvGEAAAAAAFzqLug+3U4U2wAAAAAA5K/QE6kBAAAAAICCoegGAAAAAMBNKLoBAAAAAHCTQhXdZ86cUYsWLbRr1y53tQcAAAAAgMtGoYpuHx8fbd26VRaLxV3tAQAAAADgslHo08u7du2qKVOmuKMtAAAAAABcVgp9y7DMzEx9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srKylJ6ergYNGujVV1/V/fffL8MwtGrVKnXu3Nml8JbO3irMOX7Zv4UTf31RZE6ePKkuXbqocePGSkxMlCRZrVbFxMTogw8+UFhYmG6++Wb9888/CgwMlJeXl/z9/SWd3RixQUJxcl7j2q5dO504cUKGYahly5Y6ceKEee2gJPn6+qpatWravXu3uY4TYxbFIa/fxv/55x8NHjxYDz/8sN577z117NhRGzduVLly5dSjRw9NmTJFklS3bl0tWrSI29nBo5zbypSUFG3evFkrVqzQt99+q7/++ku33367ZsyYoXnz5qlJkyZ66aWXNGjQIPXo0cMsuJ2TXALFzTkTeVBQkCpUqKC9e/dKOjumW7RooU8++US//PKLOnbsaK7j5+dnbm/Zv4UTf4FRZHx9fdW/f3/deuutWrt2rTlJlcViUUxMjD788EP5+voqNjbWnGwNKC7O8egsYLy9z05pERkZqT179mjbtm2qX7++pLMz5K5bt85c98iRI4qIiDBvBwIUF2exkZGRoZUrV+rbb7/VH3/8obJly6pBgwbq27evsrKy1KpVK/n7++v3339Xt27dNGDAAE2dOlWSFBMTo6ZNmzLbMzzqf//7n5o2barMzExdddVVZlHy/vvvq27dunrzzTclSXfccYeeeuopDRo0yCy42faiuDn3GbJPuFqxYkX9/vvvLss1b95cn376qZYuXaq77767WNuISwsTqeGC5by2ytvbW23atJGfn5/69eunpk2batWqVWZxc91112n27NlKT0/nDyiKnXPStL59+8rPz0+tWrVSrVq1ZLfbVb9+ff3zzz9q0qSJXn75ZQ0bNkzbt29XaGioKleurKlTp2rWrFkKCwvzdBq4gjiLjbS0NLVr107Jycnat2+fwsPDNXfuXA0bNkze3t569913lZGRoVmzZikkJETVq1dXZmamevbsqdtvv12RkZGSODMDnlW7dm3Z7XZt3rxZGRkZks5evuPr66vXX39d11xzjZYvX65WrVq5rMf+AjzBy8tLf/zxh4YMGaJrrrlGNWvW1NVXX639+/crKSlJ4eHhks5uV5s1a6YlS5ZwQAnnRNGNC+LcGTx48KB+/PFHWSwW1alTR3Xq1FGLFi30zjvv6LnnnlOLFi20atUq849mbGysh1uOK9n27dslSdu2bdP69eu1e/duRUVFaePGjfrggw908803q3379ipXrpzWr1+vhQsXyjAMLViwgMlQUKyysrLMgvu6667TjTfeqIkTJ2rr1q368MMP1blzZ3333Xe6+uqr9ccff6hSpUq66qqrJJ0tUj744AM1btzYLLiB4pTXtrJly5aaOHGiHnnkET399NP64osvzLs/2Gw2hYaGMtkfSpQff/xRFSpU0I8//qiFCxcqPT1d+/fv17Fjx1S6dGldd911uu666xQZGWlOrMp+AvLDRGooNOcR7i1btqhDhw4qXbq0/Pz8tG/fPs2ePVu33367MjMztXLlSg0ZMkSS9Msvv5hHvIGSICsrS1u2bNHp06c1depU7dq1S9dff71ef/11c64BwzDM4ofJUFDcTp06pfr166ty5cr67rvvzPhHH32kPn36aMWKFbrppps0ZswYDR8+XGPHjlVSUpLefvttffnll+YRQ3YCUZyynwX3119/yWq1qkyZMgoMDJTdbtfq1avVuXNn3XDDDerVq5fKli2r0aNHKykpSb/88gtHtuEx+c2Of+rUKVmtVs2ZM0dPPPGEJk2apBUrVigxMVF79uzRtGnT1KxZMw+0GJcSrulGoXl5eWnv3r1q3769OnbsqN9++02ffvqpTp8+rXbt2mnevHny9fVVixYt9Oqrr+r06dNav369p5sNSPrvmm4vLy/Fxsbq5ptv1jvvvKPGjRvrp59+0ogRI8xTHy0Wi7kDyGQoKG7Lly9XRkaGwsPDtX//fjN+0003mXd/kKQ+ffro8ccf16hRo7Rw4UJNnz7d5RRdxi2KS/ai5dVXX9Wdd96pli1bqkGDBvr999/l7e2tVq1a6ZNPPtHOnTvVsWNHffnll6pWrZp+/PFHWa1WTtGFRzgcDnl5eenPP//U+++/r7i4OC1evFhJSUkKCAiQr6+vOnTooCpVqqh27dqaOXOmvvvuO61fv56CGwXCkW4UWPajJf/73/+0Y8cOTZo0SZJ0yy23KDg4WFWrVtW0adP05Zdfqn379srMzFRaWpoqVKjgyaYD+XLuJJ48eVKjR4/WZ599pttvv11vv/02xQo8btq0afroo48UFhamiRMnqly5crruuutUq1YtffbZZy7LJiYmytfXV+XLl+fMDHjU8OHD9eGHH2rcuHGKjo5Wjx49lJycrA8++EC33XabDMPQypUr9fjjj+uGG27Q/PnzJZ291ZKfn5+HW48rjXP/dsuWLWrZsqVatmyp5ORkSWeL8S+//FJlypRRWlqaYmNjNWzYMPXs2VNS/kfHgZwYJSiQrKwsWSwW/f7779q6davuvfdec5bG++67T2XLltXnn3+uAQMGKCAgQHfddZfmzp0rX19fCm54TPZZR/N6LJ094p2VlaXAwEANHDhQ99xzjzp16kSxAo9yjtXu3burS5cuOnLkiP7v//5PderUUY0aNTR79mxJcjkqWKlSJZUvX14SZ2bAc9auXatly5Zp9uzZuv/++7V371798ccfKlOmjDp16qTly5fLYrGoefPm+vDDD7VmzRo9+OCDkkTBDY+wWCz6559/1LNnTz322GOaO3euli9frt27dys8PNwcl8HBwbrhhhu0e/dul7PmgIJgpOC8nPco3Ldvnxo3bqzFixerWrVqat++vQ4cOKBDhw7p+eefV+nSpRUcHKzWrVurV69eCgoK8nTTcYXz8vLS/v37zbkF8vvj6Cy8S5UqpZdfflmNGjUqzmYCuTjHpCQ9/vjj6tKli/bs2aPU1FS9/PLL8vPz41ZKKBG+//57ffnll+bjgIAAPfjgg2rZsqWWL1+unj176rXXXtNPP/2kqlWr6sknn9SSJUvk5eWlli1b6tNPP9W8efPUrVs3D2aBK4Xzh8qcJ/rabDadPHlSzz77rOx2u2655RbVrl1bH374oQICArRx40adPn1aNWrUUNOmTflRE4VG0Y1ccm6QLBaLjh07pk8//VTdunXT888/by6bnJys9evXmxufb775RkeOHNHIkSPVrl077gsLjzEMwzyF8euvv9aaNWvOubyzIOdXa5QUOQvvp59+WjVr1tQbb7yhPXv2uEzwBxQ3wzB07NgxDR48WO+8846WLFkiSapXr54eeughSWfvwf3II4+od+/eslqtqlq1qtLS0hQfH2+e0tu8eXOtWrVKw4YN82Q6uAIYhiGr1ar09HQNGjRIGzZsMJ87efKkAgICZLfb1aRJE4WEhOizzz5TUFCQ/vzzT82ePVs7duzQ6NGj2b/FBWHvEi6cR06OHTumDh066O+//9aRI0fUtWtXTZs2TaGhoeZyklS/fn09/PDDat68uVq2bKknn3xS/fr1M5fjl0AUt+w/GlksFrVq1UpBQUGaPn26uQx/LHGpyF54d+vWTd26ddORI0fUv39//fnnn2xj4TEWi0VlypTR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xS77bekGDRqkFi1a6Pfff9fw4cPVo0cPTZo0SR9//LHef/99tWzZ0rych4Ib7kLRDRc57wfbtWtXJScnq3///vrzzz8pVOBxXl5eOnz4sO677z498sgjWrdunbZv367Dhw9r165d5tkYVatW1UcffaSPP/5YCxYsUPny5T3ddFyBqlWrpnnz5unmm2/W4cOHZbfbFRgYqFatWumdd97RNddco6+//lrNmzfXkSNH1LJlS/3444/y8/OTJNWvX1/NmjVTaGiohzPBlST7mW87d+7U3r17tX///lzLOed6yUt6err+/PNPvfnmmwoMDHRbW4H8OPdpLRaLBg4cqE6dOmn9+vXq37+/kpOT1bx5cz311FOebiauEJxejjxl/4M7ceJEzZw5U++99x7XuKBY5Xcpw88//6xBgwZpzZo1Sk9P1+23365SpUrp888/V1BQkGw2W773kQeKS/bt6LFjx3T//ffL29tbCxculI+Pj7766iulpKSoQ4cO8vX1lZ+fn95880399NNPmjlzpnk67smTJylaUGyybyuHDRum+fPnKz09XQ6HQ3FxcerVq5dKly7tso7zvvHOMe98DW4PhpIg+7b47bff1vz58xUTE6NXX31VFSpU8HDrcKXgSDfylP2Id69evTR37lwKbhQ75+0+PvvsM2VmZprxP/74Q6mpqZKk22+/XUFBQWbB/f333+v111/XiRMnXF6LghuesmfPHu3evVvt27fXsWPH1KVLF505c0Zt27ZVly5dFBQUpGPHjmnq1Kl66aWX1LNnTwUHB5unO1Jwozg5t5VvvfWWJk2apHfffVdTpkzR888/r+eff14vvfSSy/ITJkxQVFSU/vnnH7Owcb4Gl6OhJMi+TztgwADdf//9Wrt2rQYPHqwzZ854uHW4UlB0X0EKe1JD9o1URESEO5oEnNfHH3+sBx54QNOnTzcL7zZt2sjHx0cVKlRQ6dKl9dVXXykoKEiStHHjRv3888/6559/PNlsXOEMw5CXl5d2796tq6++Wtu3b9djjz2mHj16aPfu3WbhLUm//fab+vXrp5EjR2rmzJm66667ODMDHmW32/X999+rb9++uv3229W6dWv17dtXn3/+uTkRlVOrVq106623mvfkzo4xjJIi+z5t//799eijj+rxxx+Xj4+Ph1uGKwVF9xXC4XDIYrHo77//VlJSUoHXy3lLJqC4PfHEE3r11VfVp08fTZ06VZmZmQoODtbdd9+t4OBgxcbGysvLS4mJiZo6daqGDRum5557TpGRkZ5uOq5gFotFx44d04EDB9SvXz916dJFZcqUUdeuXfXUU09p9+7d6tq1q86cOaPY2Fg99NBDmjdvnjp16sT9uVHsco659PR07dy504xnZWXJbrfr7rvv1pNPPqnZs2ebk1NeffXVql+/PsULSrzshfdzzz2nRo0aebhFuJJwoc0VwHld7NatW9WpUyc9/PDD6tOnT66JpTiyAk/LeQ33mTNn5OPjo6FDh8rhcOjpp59WVlaWevfurd69e+v06dP65JNPNHPmTFWuXFkpKSmaOnWq7rzzTsYzPMpms6l27doyDEPdu3eXdLZw8fPzU5cuXSRJU6ZM0f3336958+bpnnvuMddl3KK4OcfcO++8o3vvvVdVqlTRPffco9mzZ6tTp06qU6eOuWxQUJAsFov8/f0lnS1kXnnlFfMx4CkF+bvPwSR4CiPvMuacVdRqtWr79u1q1qyZ7r77bnXu3Dnfgnvnzp3mkXCOtqA4OW9Hl56errFjx2rnzp2y2Wzm88OHD9ewYcP0zDPP6L333lPFihX14osvasWKFRo6dKjeeOMNLVmyRA888ABjFx4XEBCg4cOHKysrS/v27ZMkc2Z9f39/denSRV27dtW+ffu0detWzzYWkHTixAl99NFHevvttyVJd999t6KiojR06FBt375dXl5eOnXqlH777TddddVV5nqGYZgFN9teFBfnPm5mZqY57py3CQNKImYvvwwtX75czZo1M2cMdTgc6tGjhxwOh3kdls1m01dffaXw8HDVrl1b4eHhSktLU/Xq1XXPPfdo6tSpnkwBVyi73a727dtr2bJlqlatmq666ipdf/31atmypdq3by8fHx9NmDBBffr00YQJE9S1a1cFBAR4utmAy+y4TsePH9ecOXPUp08fvfDCCxoxYoSk/87oOH36tJKTk7kUAiWCYRh66aWXtHLlSq1cuVJWq1Vz587VRx99pB9++EGxsbFKS0tTVlaWNm7cKB8fH84ogkc4t7fbtm3ToEGD5Ovrqxo1apg/GOVcjln0URJwpPsys2PHDg0ePFi//vqrGcvIyNCRI0cUFhamU6dO6bXXXtOjjz6qHj16qE+fPho3bpwyMjIUHBysDz74QNu2bdMf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4sCBA5w/f55vv/2WuLg4nnjiCeDeLOU5OTl8+eWXpKenk5ub+x/V2bBhQ44ePcrevXs5c+YMc+bMIS4ursh76tatS0JCAqdPnyY9PZ38/PwH9jNx4kQuXrzI5MmTOXXqFNHR0cybN4+pU6dax3OLiIiUFbqyiYiI2Nif//xnatSoQd26dfHz82P//v2sXLmS6Oho7O3tMZlM7Nmzh6eeeoqxY8fi5eXF8OHDSU5Opnr16tjb25ORkUFwcDBeXl4EBgbSp08f66RnnTp1YsKECQwbNoxHH32UJUuW/Ed1TpgwgSFDhjBs2DB8fHzIyMgo0uoNMH78eBo3bmwd9/3tt98+sJ9atWqxZ88ejhw5QosWLZgwYQIhISGEh4f/R3WJiIiUZCbDMohKRERERERERH5XaukWEREREREReUgUukVEREREREQeEoVuERERERERkYdEoVtERERERETkIVHoFhEREREREXlIFLpFREREREREHhKFbhEREREREZGHRKFbRERERERE5CFR6BYRERERERF5SBS6RURERERERB4ShW4RERERERGRh0ShW0REREREROQh+X+YlFsrK9HYqAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# 1. DEFINE THE ABSOLUTE FILE PATH\n", + "# *** IMPORTANT *** Please ensure this path is correct for your local machine.\n", + "travel_trip_data = r\"D:\\Ironhack\\Week4\\first_project\\data\\raw\\Travel details dataset.csv\"\n", + "\n", + "# --- Column Cleaning Function ---\n", + "def clean_column(name):\n", + " \"\"\"Cleans column names.\"\"\"\n", + " return name.lower().strip().replace(\" \", \"_\").replace('', '') \n", + "\n", + "# --- Load Data and Clean Columns ---\n", + "try:\n", + " # Use the absolute path variable to load the file\n", + " travel_trip_safina_df = pd.read_csv(travel_trip_data, encoding='ISO-8859-1')\n", + " print(\"File loaded successfully.\")\n", + "\n", + "except FileNotFoundError:\n", + " print(f\"ERROR: File not found. Please check and correct the path variable: {travel_trip_data}\")\n", + " raise\n", + "\n", + "travel_trip_safina_df.columns = [clean_column(col) for col in travel_trip_safina_df.columns] \n", + "\n", + "# --- PART 1: Find the Most Frequent Traveling Nationality ---\n", + "# Calculate total trip counts by nationality\n", + "nationality_counts = travel_trip_safina_df['traveler_nationality'].value_counts()\n", + "top_nationality_name = nationality_counts.index[0]\n", + "top_nationality_trips = nationality_counts.iloc[0]\n", + "\n", + "# --- PART 2: Find Favorite Destinations for the Top Nationality ---\n", + "\n", + "# 1. Filter the DataFrame for the top nationality\n", + "top_nationality_df = travel_trip_safina_df[\n", + " travel_trip_safina_df['traveler_nationality'] == top_nationality_name\n", + "].copy()\n", + "\n", + "# 2. Clean and Split Destination for the filtered data\n", + "top_nationality_df['destination'] = top_nationality_df['destination'].str.strip()\n", + "destination_split = top_nationality_df['destination'].str.split(',\\s*', expand=True)\n", + "\n", + "top_nationality_df['city'] = destination_split[0].str.strip()\n", + "top_nationality_df['country'] = destination_split[1].fillna(destination_split[0]).str.strip() \n", + "\n", + "# 3. Analyze Destination Frequencies\n", + "destination_counts = top_nationality_df.groupby(['country', 'city']).size().reset_index(name='Number of Trips')\n", + "destination_counts = destination_counts.sort_values(by='Number of Trips', ascending=False)\n", + "\n", + "# --- 4. Display Results ---\n", + "print(f\"\\n--- 1. Most Frequent Traveling Nationality ---\")\n", + "print(f\"The nationality that takes the most trips is: {top_nationality_name} (Total Trips: {top_nationality_trips})\")\n", + "\n", + "print(f\"\\n--- 2. Top Destinations for {top_nationality_name} Travelers (Top 5) ---\")\n", + "print(destination_counts.head(5).to_string(index=False))\n", + "\n", + "# --- 5. Generate Plot (Optional) ---\n", + "top_5_destinations = destination_counts.head(5).copy()\n", + "top_5_destinations['Destination'] = top_5_destinations['city'] + ', ' + top_5_destinations['country']\n", + "\n", + "plt.figure(figsize=(10, 6))\n", + "plt.bar(top_5_destinations['Destination'], top_5_destinations['Number of Trips'], color='darkcyan')\n", + "plt.title(f'Top 5 Destinations for {top_nationality_name} Travelers')\n", + "plt.xlabel('Destination')\n", + "plt.ylabel('Number of Trips')\n", + "plt.xticks(rotation=45, ha='right')\n", + "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "6f7b9a3e-f748-4b98-a18a-b27d9fb7fd37", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'travel_trip_safina_df' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[3], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m travel_trip_safina_df\u001b[38;5;241m.\u001b[39mloc[:, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124maccommodation_cost\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m----> 2\u001b[0m travel_trip_safina_df[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124maccommodation_cost\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[0;32m 3\u001b[0m \u001b[38;5;241m.\u001b[39mastype(\u001b[38;5;28mstr\u001b[39m) \u001b[38;5;66;03m# in case there are numbers/NaN in there\u001b[39;00m\n\u001b[0;32m 4\u001b[0m \u001b[38;5;241m.\u001b[39mstr\u001b[38;5;241m.\u001b[39mstrip()\n\u001b[0;32m 5\u001b[0m \u001b[38;5;241m.\u001b[39mstr\u001b[38;5;241m.\u001b[39mstrip(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m$\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 6\u001b[0m \u001b[38;5;241m.\u001b[39mstr\u001b[38;5;241m.\u001b[39mreplace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m,\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m, regex\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[0;32m 7\u001b[0m \u001b[38;5;241m.\u001b[39mstr\u001b[38;5;241m.\u001b[39mreplace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m USD\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m, regex\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[0;32m 8\u001b[0m \u001b[38;5;241m.\u001b[39mstr\u001b[38;5;241m.\u001b[39mstrip()\n\u001b[0;32m 9\u001b[0m )\n\u001b[0;32m 11\u001b[0m travel_trip_safina_df\u001b[38;5;241m.\u001b[39mloc[:, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124maccommodation_cost\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mto_numeric(\n\u001b[0;32m 12\u001b[0m travel_trip_safina_df[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124maccommodation_cost\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[0;32m 13\u001b[0m errors\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcoerce\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 14\u001b[0m )\n\u001b[0;32m 16\u001b[0m travel_trip_safina_df\u001b[38;5;241m.\u001b[39mtransportation_cost\u001b[38;5;241m.\u001b[39munique()\n", + "\u001b[1;31mNameError\u001b[0m: name 'travel_trip_safina_df' is not defined" + ] + } + ], + "source": [ + "travel_trip_safina_df.loc[:, \"accommodation_cost\"] = (\n", + " travel_trip_safina_df[\"accommodation_cost\"]\n", + " .astype(str) # in case there are numbers/NaN in there\n", + " .str.strip()\n", + " .str.strip(\"$\")\n", + " .str.replace(\",\", \"\", regex=False)\n", + " .str.replace(\" USD\", \"\", regex=False)\n", + " .str.strip()\n", + ")\n", + "\n", + "travel_trip_safina_df.loc[:, \"accommodation_cost\"] = pd.to_numeric(\n", + " travel_trip_safina_df[\"accommodation_cost\"],\n", + " errors=\"coerce\"\n", + ")\n", + "\n", + "travel_trip_safina_df.transportation_cost.unique()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f5910f17-ac6a-404a-8444-6e48e0eeef94", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python [conda env:base] *", + "language": "python", + "name": "conda-base-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 758590431bc8af2d16f48e97bff34a5d786bd676 Mon Sep 17 00:00:00 2001 From: Safina E Jahan Date: Mon, 8 Dec 2025 17:30:30 +0100 Subject: [PATCH 4/5] safina branch monday --- data/raw/Travel details dataset.csv | 140 +++++++++++++++++ notebooks/Untitled.ipynb | 6 + notebooks/Untitled1.ipynb | 6 + .../db/project_filebrowser.db | Bin 0 -> 32768 bytes ...even_day_trip_details_with_nationality.csv | 55 +++++++ notebooks/travel_frequency_by_month_final.png | Bin 0 -> 42618 bytes notebooks/travel_trip_data_safina.ipynb | 148 ++++++++++++++++-- 7 files changed, 342 insertions(+), 13 deletions(-) create mode 100644 data/raw/Travel details dataset.csv create mode 100644 notebooks/Untitled.ipynb create mode 100644 notebooks/Untitled1.ipynb create mode 100644 notebooks/anaconda_projects/db/project_filebrowser.db create mode 100644 notebooks/seven_day_trip_details_with_nationality.csv create mode 100644 notebooks/travel_frequency_by_month_final.png diff --git a/data/raw/Travel details dataset.csv b/data/raw/Travel details dataset.csv new file mode 100644 index 00000000..9b359d58 --- /dev/null +++ b/data/raw/Travel details dataset.csv @@ -0,0 +1,140 @@ +Trip ID,Destination,Start date,End date,Duration (days),Traveler name,Traveler age,Traveler gender,Traveler nationality,Accommodation type,Accommodation cost,Transportation type,Transportation cost +1,"London, UK",5/1/2023,5/8/2023,7,John Smith,35,Male,American,Hotel,1200,Flight,600 +2,"Phuket, Thailand",6/15/2023,6/20/2023,5,Jane Doe,28,Female,Canadian,Resort,800,Flight,500 +3,"Bali, Indonesia",7/1/2023,7/8/2023,7,David Lee,45,Male,Korean,Villa,1000,Flight,700 +4,"New York, USA",8/15/2023,8/29/2023,14,Sarah Johnson,29,Female,British,Hotel,2000,Flight,1000 +5,"Tokyo, Japan",9/10/2023,9/17/2023,7,Kim Nguyen,26,Female,Vietnamese,Airbnb,700,Train,200 +6,"Paris, France",10/5/2023,10/10/2023,5,Michael Brown,42,Male,American,Hotel,1500,Flight,800 +7,"Sydney, Australia",11/20/2023,11/30/2023,10,Emily Davis,33,Female,Australian,Hostel,500,Flight,1200 +8,"Rio de Janeiro, Brazil",1/5/2024,1/12/2024,7,Lucas Santos,25,Male,Brazilian,Airbnb,900,Flight,600 +9,"Amsterdam, Netherlands",2/14/2024,2/21/2024,7,Laura Janssen,31,Female,Dutch,Hotel,1200,Train,200 +10,"Dubai, United Arab Emirates",3/10/2024,3/17/2024,7,Mohammed Ali,39,Male,Emirati,Resort,2500,Flight,800 +11,"Cancun, Mexico",4/1/2024,4/8/2024,7,Ana Hernandez,27,Female,Mexican,Hotel,1000,Flight,500 +12,"Barcelona, Spain",5/15/2024,5/22/2024,7,Carlos Garcia,36,Male,Spanish,Airbnb,800,Train,100 +13,"Honolulu, Hawaii",6/10/2024,6/18/2024,8,Lily Wong,29,Female,Chinese,Resort,3000,Flight,1200 +14,"Berlin, Germany",7/1/2024,7/10/2024,9,Hans Mueller,48,Male,German,Hotel,1400,Flight,700 +15,"Marrakech, Morocco",8/20/2024,8/27/2024,7,Fatima Khouri,26,Female,Moroccan,Riad,600,Flight,400 +16,"Edinburgh, Scotland",9/5/2024,9/12/2024,7,James MacKenzie,32,Male,Scottish,Hotel,900,Train,150 +17,Paris,9/1/2023,9/10/2023,9,Sarah Johnson,30,Female,American,Hotel,$900 ,Plane,$400 +18,Bali,8/15/2023,8/25/2023,10,Michael Chang,28,Male,Chinese,Resort,"$1,500 ",Plane,$700 +19,London,7/22/2023,7/28/2023,6,Olivia Rodriguez,35,Female,British,Hotel,"$1,200 ",Train,$150 +20,Tokyo,10/5/2023,10/15/2023,10,Kenji Nakamura,45,Male,Japanese,Hotel,"$1,200 ",Plane,$800 +21,New York,11/20/2023,11/25/2023,5,Emily Lee,27,Female,American,Airbnb,$600 ,Bus,$100 +22,Sydney,12/5/2023,12/12/2023,7,James Wilson,32,Male,Australian,Hotel,"$1,000 ",Plane,$600 +23,Rome,11/1/2023,11/8/2023,7,Sofia Russo,29,Female,Italian,Airbnb,$700 ,Train,$80 +24,Bangkok,9/15/2023,9/23/2023,8,Raj Patel,40,Male,Indian,Hostel,$400 ,Plane,$500 +25,Paris,12/22/2023,12/28/2023,6,Lily Nguyen,24,Female,Vietnamese,Hotel,"$1,400 ",Train,$100 +26,Hawaii,8/1/2023,8/10/2023,9,David Kim,34,Male,Korean,Resort,"$2,000 ",Plane,$800 +27,Barcelona,10/20/2023,10/28/2023,8,Maria Garcia,31,Female,Spanish,Hotel,"$1,100 ",Train,$150 +28,Japan,5/10/2022,5/18/2022,8,Alice Smith,30,Female,American,Hotel,$800 ,Plane,$500 +29,Thailand,6/15/2022,6/22/2022,7,Bob Johnson,45,Male,Canadian,Hostel,$200 ,Train,$150 +30,France,7/2/2022,7/11/2022,9,Charlie Lee,25,Male,Korean,Airbnb,$600 ,Car rental,$300 +31,Australia,8/20/2022,9/2/2022,13,Emma Davis,28,Female,British,Hotel,"$1,000 ",Car rental,$500 +32,Brazil,9/5/2022,9/14/2022,9,Olivia Martin,33,Female,Australian,Hostel,$150 ,Bus,$50 +33,Greece,10/12/2022,10/20/2022,8,Harry Wilson,20,Male,American,Airbnb,$400 ,Plane,$600 +34,Egypt,11/8/2022,11/15/2022,7,Sophia Lee,37,Female,Canadian,Hotel,$700 ,Train,$100 +35,Mexico,1/5/2023,1/15/2023,10,James Brown,42,Male,British,Airbnb,$500 ,Plane,$800 +36,Italy,2/14/2023,2/20/2023,6,Mia Johnson,31,Female,American,Hostel,$180 ,Train,$120 +37,Spain,3/23/2023,3/31/2023,8,William Davis,27,Male,Korean,Hotel,$900 ,Car rental,$400 +38,Canada,4/19/2023,4/26/2023,7,Amelia Brown,38,Female,Australian,Airbnb,$350 ,Bus,$75 +39,"Paris, France",6/12/2022,6/19/2022,7,Mia Johnson,25,Female,American,Hotel,1400,Plane,600 +40,"Sydney, Australia",1/2/2023,1/9/2023,7,Adam Lee,33,Male,Canadian,Airbnb,800,Train,150 +41,"Tokyo, Japan",12/10/2022,12/18/2022,8,Sarah Wong,28,Female,Chinese,Hostel,500,Plane,900 +42,"Cancun, Mexico",7/1/2023,7/8/2023,7,John Smith,45,Male,American,Resort,2200,Plane,800 +43,"Rio de Janeiro, Brazil",11/20/2022,11/27/2022,7,Maria Silva,30,Female,Brazilian,Hotel,1200,Plane,700 +44,"London, UK",3/5/2023,3/12/2023,7,Peter Brown,55,Male,British,Airbnb,900,Train,100 +45,"Barcelona, Spain",8/18/2023,8/25/2023,7,Emma Garcia,27,Female,Spanish,Hostel,600,Plane,600 +46,"New York City, USA",9/15/2022,9/22/2022,7,Michael Davis,41,Male,American,Hotel,1500,Plane,500 +47,"Bangkok, Thailand",5/1/2023,5/7/2023,6,Nina Patel,29,Female,Indian,Airbnb,500,Bus,50 +48,"Vancouver, Canada",7/10/2022,7/17/2022,7,Kevin Kim,24,Male,Korean,Hostel,400,Train,150 +49,"Amsterdam, Netherlands",6/20/2023,6/28/2023,8,Laura van den Berg,31,Female,Dutch,Hotel,1100,Plane,700 +50,"Paris, France",8/15/2023,8/22/2023,7,Jennifer Nguyen,31,Female,Canadian,Hotel,"$1,200 ",Train,$300 +51,"Tokyo, Japan",10/10/2023,10/20/2023,10,David Kim,25,Male,American,Hostel,$500 ,Bus,$100 +52,"Sydney, AUS",11/5/2023,11/12/2023,7,Rachel Lee,27,Female,South Korean,Airbnb,$900 ,Car rental,$200 +53,"New York, USA",12/24/2023,12/31/2023,7,Jessica Wong,28,Female,Canadian,Hotel,"$1,400 ",Flight,$800 +54,"Rio de Janeiro, Brazil",1/15/2024,1/24/2024,9,Felipe Almeida,30,Male,Brazilian,Airbnb,$800 ,Train,$150 +55,"Bangkok, Thailand",2/1/2024,2/9/2024,8,Nisa Patel,23,Female,Indian,Hostel,$400 ,Bus,$50 +56,"London, UK",3/15/2024,3/23/2024,8,Ben Smith,35,Male,British,Hotel,"$1,000 ",Train,$200 +57,"Barcelona, Spain",4/5/2024,4/13/2024,8,Laura Gomez,29,Female,Spanish,Airbnb,$700 ,Car rental,$250 +58,"Seoul, South Korea",5/10/2024,5/18/2024,8,Park Min Woo,27,Male,South Korean,Hostel,$500 ,Subway,$20 +59,"Los Angeles, USA",6/20/2024,6/27/2024,7,Michael Chen,26,Male,Chinese,Hotel,"$1,200 ",Car rental,$300 +60,"Rome, Italy",7/15/2024,7/23/2024,8,Sofia Rossi,33,Female,Italian,Airbnb,$800 ,Train,$100 +61,Paris,7/12/2022,7/18/2022,6,Rachel Sanders,35,Female,American,Hotel,1200,Plane,800 +62,Tokyo,9/3/2022,9/10/2022,7,Kenji Nakamura,28,Male,Japanese,Hostel,400,Train,300 +63,Cape Town,1/7/2023,1/16/2023,9,Emily Watson,29,Female,British,Vacation rental,800,Car rental,200 +64,Sydney,6/23/2023,6/29/2023,6,David Lee,43,Male,Australian,Hotel,1500,Plane,1200 +65,Barcelona,8/18/2023,8/25/2023,7,Ana Rodriguez,31,Female,Spanish,Vacation rental,900,Plane,700 +66,Bali,2/1/2024,2/8/2024,7,Tom Wilson,27,Male,American,Resort,2200,Plane,1000 +67,Paris,5/6/2024,5/12/2024,6,Olivia Green,39,Female,French,Hotel,1100,Train,200 +68,New York,7/20/2024,7/26/2024,6,James Chen,25,Male,American,Vacation rental,1000,Plane,800 +69,Bangkok,9/8/2024,9/16/2024,8,Lila Patel,33,Female,Indian,Hostel,300,Plane,700 +70,Rome,2/14/2025,2/20/2025,6,Marco Rossi,41,Male,Italian,Hotel,1300,Train,100 +71,Bali,5/21/2025,5/29/2025,8,Sarah Brown,37,Female,British,Resort,1800,Plane,1000 +72,,,,,,,,,,,, +73,"Bali, Indonesia",8/5/2022,8/12/2022,7,Sarah Lee,35,Female,South Korean,Resort,500 USD,Plane,800 USD +74,"Tokyo, Japan",1/1/2023,1/9/2023,8,Alex Kim,29,Male,American,Hotel,1000 USD,Train,200 USD +75,"Cancun, Mexico",4/15/2023,4/22/2023,7,Maria Hernandez,42,Female,Mexican,Resort,800 USD,Plane,500 USD +76,"Paris, France",6/7/2023,6/14/2023,7,John Smith,46,Male,British,Hotel,1200 USD,Plane,700 USD +77,"Cape Town, SA",9/1/2023,9/10/2023,9,Mark Johnson,31,Male,South African,Guesthouse,400 USD,Car,300 USD +78,"Bali, Indonesia",11/12/2023,11/19/2023,7,Amanda Chen,25,Female,Taiwanese,Resort,600 USD,Plane,700 USD +79,"Sydney, Aus",2/5/2024,2/12/2024,7,David Lee,38,Male,Australian,Hotel,900 USD,Plane,600 USD +80,"Bangkok, Thai",5/15/2024,5/22/2024,7,Nana Kwon,27,Female,Korean,Hotel,400 USD,Plane,400 USD +81,"New York, USA",8/20/2024,8/27/2024,7,Tom Hanks,60,Male,American,Hotel,1500 USD,Plane,1000 USD +82,"Phuket, Thai",1/1/2025,1/8/2025,7,Emma Watson,32,Female,British,Resort,700 USD,Plane,800 USD +83,"Rome, Italy",4/15/2025,4/22/2025,7,James Kim,41,Male,American,Hotel,100,, +84,Paris,6/15/2021,6/20/2021,6,John Smith,35,Male,American,Hotel,800 USD,Plane,500 USD +85,Tokyo,7/1/2021,7/10/2021,10,Sarah Lee,28,Female,Korean,Airbnb,500 USD,Train,300 USD +86,Bali,8/10/2021,8/20/2021,11,Maria Garcia,42,Female,Spanish,Resort,1200 USD,Plane,700 USD +87,Sydney,9/1/2021,9/10/2021,9,David Lee,45,Male,Australian,Hotel,900 USD,Plane,600 USD +88,New York,10/15/2021,10/20/2021,6,Emily Davis,31,Female,American,Airbnb,700 USD,Car rental,200 USD +89,London,11/20/2021,11/30/2021,11,James Wilson,29,Male,British,Hostel,300 USD,Plane,400 USD +90,Dubai,1/1/2022,1/8/2022,8,Fatima Ahmed,24,Female,Emirati,Hotel,1000 USD,Plane,800 USD +91,Bangkok,2/14/2022,2/20/2022,7,Liam Nguyen,26,Male,Vietnamese,Airbnb,400 USD,Train,100 USD +92,Rome,3/10/2022,3/20/2022,11,Giulia Rossi,30,Female,Italian,Hostel,200 USD,Plane,350 USD +93,Bali,4/15/2022,4/25/2022,11,Putra Wijaya,33,Male,Indonesian,Villa,1500 USD,Car rental,300 USD +94,Seoul,5/1/2022,5/10/2022,10,Kim Min-ji,27,Female,Korean,Hotel,800 USD,Train,150 USD +95,Paris,6/15/2022,6/20/2022,5,John Smith,35,Male,USA,Hotel,$500 ,Plane,$800 +96,Tokyo,9/1/2022,9/10/2022,9,Emily Johnson,28,Female,Canada,Airbnb,$400 ,Train,$200 +97,Sydney,11/23/2022,12/2/2022,9,David Lee,45,Male,South Korea,Hostel,$200 ,Plane,"$1,200 " +98,London,2/14/2023,2/19/2023,5,Sarah Brown,37,Female,UK,Hotel,$600 ,Plane,$700 +99,New York,5/8/2023,5/14/2023,6,Michael Wong,50,Male,China,Airbnb,$800 ,Car rental,$300 +100,Rome,8/20/2023,8/27/2023,7,Jessica Chen,31,Female,Taiwan,Hotel,$700 ,Plane,$900 +101,Bangkok,11/12/2023,11/20/2023,8,Ken Tanaka,42,Male,Japan,Hostel,$300 ,Train,$100 +102,Cape Town,1/6/2024,1/14/2024,8,Maria Garcia,27,Female,Spain,Airbnb,$500 ,Plane,"$1,500 " +103,Rio de Janeiro,4/3/2024,4/10/2024,7,Rodrigo Oliveira,33,Male,Brazil,Hotel,$900 ,Car rental,$400 +104,Bali,7/22/2024,7/28/2024,6,Olivia Kim,29,Female,South Korea,Villa,"$1,200 ",Plane,"$1,000 " +105,Amsterdam,10/10/2024,10/17/2024,7,Robert Mueller,41,Male,Germany,Hotel,$600 ,Train,$150 +106,Paris,5/15/2022,5/20/2022,5,John Smith,35,Male,USA,Hotel,1000,Plane,800 +107,Tokyo,9/1/2022,9/10/2022,9,Sarah Lee,28,Female,South Korea,Airbnb,800,Train,500 +108,New York,6/20/2022,6/25/2022,5,Michael Wong,42,Male,Hong Kong,Hotel,1200,Car rental,200 +109,Bali,8/12/2022,8/20/2022,8,Lisa Chen,30,Female,Taiwan,Resort,1500,Plane,1200 +110,Sydney,7/1/2022,7/10/2022,9,David Kim,26,Male,Canada,Hostel,300,Plane,900 +111,London,6/10/2022,6/15/2022,5,Emily Wong,38,Female,United Kingdom,Hotel,900,Train,150 +112,Phuket,9/5/2022,9/12/2022,7,Mark Tan,45,Male,Singapore,Villa,2000,Plane,700 +113,Rome,5/1/2022,5/8/2022,7,Emma Lee,31,Female,Italy,Hotel,1100,Train,250 +114,Santorini,7/15/2022,7/22/2022,7,George Chen,27,Male,Greece,Airbnb,1000,Ferry,150 +115,Dubai,8/25/2022,8/30/2022,5,Sophia Kim,29,Female,United Arab Emirates,Hotel,1500,Car rental,300 +116,Phnom Penh,9/10/2022,9/15/2022,5,Alex Ng,33,Male,Cambodia,Hostel,200,Plane,500 +117,"Tokyo, Japan",2/5/2022,2/14/2022,9,Alice Smith,32,Female,American,Hotel,1000,Plane,700 +118,"Paris, France",3/15/2022,3/22/2022,7,Bob Johnson,47,Male,Canadian,Hotel,1200,Train,500 +119,"Sydney, Aus",5/1/2022,5/12/2022,11,Cindy Chen,26,Female,Chinese,Airbnb,800,Plane,1000 +120,"Rome, Italy",6/10/2022,6/17/2022,7,David Lee,38,Male,Korean,Hotel,900,Train,400 +121,"Bali, Indonesia",7/20/2022,7/30/2022,10,Emily Kim,29,Female,Korean,Hostel,500,Plane,800 +122,"Cancun, Mexico",8/8/2022,8/16/2022,8,Frank Li,41,Male,American,Hotel,1300,Plane,600 +123,"Athens, Greece",9/20/2022,9/30/2022,10,Gina Lee,35,Female,Korean,Airbnb,700,Plane,900 +124,"Tokyo, Japan",10/5/2022,10/13/2022,8,Henry Kim,24,Male,Korean,Hotel,1200,Plane,700 +125,"Sydney, Aus",11/11/2022,11/21/2022,10,Isabella Chen,30,Female,Chinese,Airbnb,900,Plane,1000 +126,"Paris, France",12/24/2022,1/1/2023,8,Jack Smith,28,Male,American,Hostel,400,Plane,700 +127,"Bali, Indonesia",2/10/2023,2/18/2023,8,Katie Johnson,33,Female,Canadian,Hotel,800,Plane,800 +128,,,,,,,,,,,, +129,"Paris, France",5/1/2023,5/7/2023,6,John Doe,35,Male,American,Hotel,5000,Airplane,2500 +130,"Tokyo, Japan",5/15/2023,5/22/2023,7,Jane Smith,28,Female,British,Airbnb,7000,Train,1500 +131,"Cape Town, South Africa",6/1/2023,6/10/2023,9,Michael Johnson,45,Male,South African,Hostel,3000,Car,2000 +132,"Sydney, Australia",6/15/2023,6/21/2023,6,Sarah Lee,31,Female,Australian,Hotel,6000,Airplane,3000 +133,"Rome, Italy",7/1/2023,7/8/2023,7,David Kim,42,Male,Korean,Airbnb,4000,Train,1500 +134,"New York City, USA",7/15/2023,7/22/2023,7,Emily Davis,27,Female,American,Hotel,8000,Airplane,2500 +135,"Rio de Janeiro, Brazil",8/1/2023,8/10/2023,9,Jose Perez,37,Male,Brazilian,Hostel,2500,Car,2000 +136,"Vancouver, Canada",8/15/2023,8/21/2023,6,Emma Wilson,29,Female,Canadian,Hotel,5000,Airplane,3000 +137,"Bangkok, Thailand",9/1/2023,9/8/2023,7,Ryan Chen,34,Male,Chinese,Hostel,2000,Train,1000 +138,"Barcelona, Spain",9/15/2023,9/22/2023,7,Sofia Rodriguez,25,Female,Spanish,Airbnb,6000,Airplane,2500 +139,"Auckland, New Zealand",10/1/2023,10/8/2023,7,William Brown,39,Male,New Zealander,Hotel,7000,Train,2500 diff --git a/notebooks/Untitled.ipynb b/notebooks/Untitled.ipynb new file mode 100644 index 00000000..363fcab7 --- /dev/null +++ b/notebooks/Untitled.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/Untitled1.ipynb b/notebooks/Untitled1.ipynb new file mode 100644 index 00000000..363fcab7 --- /dev/null +++ b/notebooks/Untitled1.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/anaconda_projects/db/project_filebrowser.db b/notebooks/anaconda_projects/db/project_filebrowser.db new file mode 100644 index 0000000000000000000000000000000000000000..3fa3a4a02c0753b66dd6cf65930b505be899ade0 GIT binary patch literal 32768 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 z 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%0DVD?nYoB7xzKub{T#y1;Gd6`Zr#`mPN7C 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 2\u001b[0m travel_trip_safina_df[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124maccommodation_cost\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[0;32m 3\u001b[0m \u001b[38;5;241m.\u001b[39mastype(\u001b[38;5;28mstr\u001b[39m) \u001b[38;5;66;03m# in case there are numbers/NaN in there\u001b[39;00m\n\u001b[0;32m 4\u001b[0m \u001b[38;5;241m.\u001b[39mstr\u001b[38;5;241m.\u001b[39mstrip()\n\u001b[0;32m 5\u001b[0m \u001b[38;5;241m.\u001b[39mstr\u001b[38;5;241m.\u001b[39mstrip(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m$\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 6\u001b[0m \u001b[38;5;241m.\u001b[39mstr\u001b[38;5;241m.\u001b[39mreplace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m,\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m, regex\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[0;32m 7\u001b[0m \u001b[38;5;241m.\u001b[39mstr\u001b[38;5;241m.\u001b[39mreplace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m USD\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m, regex\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[0;32m 8\u001b[0m \u001b[38;5;241m.\u001b[39mstr\u001b[38;5;241m.\u001b[39mstrip()\n\u001b[0;32m 9\u001b[0m )\n\u001b[0;32m 11\u001b[0m travel_trip_safina_df\u001b[38;5;241m.\u001b[39mloc[:, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124maccommodation_cost\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mto_numeric(\n\u001b[0;32m 12\u001b[0m travel_trip_safina_df[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124maccommodation_cost\u001b[39m\u001b[38;5;124m\"\u001b[39m],\n\u001b[0;32m 13\u001b[0m errors\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcoerce\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 14\u001b[0m )\n\u001b[0;32m 16\u001b[0m travel_trip_safina_df\u001b[38;5;241m.\u001b[39mtransportation_cost\u001b[38;5;241m.\u001b[39munique()\n", - "\u001b[1;31mNameError\u001b[0m: name 'travel_trip_safina_df' is not defined" + "name": "stdout", + "output_type": "stream", + "text": [ + "File loaded successfully.\n", + "\n", + "Unique transportation costs after cleaning:\n", + "['600' '500' '700' '1000' '200' '800' '1200' '100' '400' '150' '$400 '\n", + " '$700 ' '$150 ' '$800 ' '$100 ' '$600 ' '$80 ' '$500 ' '$300 ' '$50 '\n", + " '$120 ' '$75 ' '900' '50' '$200 ' '$250 ' '$20 ' '300' nan '800 USD'\n", + " '200 USD' '500 USD' '700 USD' '300 USD' '600 USD' '400 USD' '1000 USD'\n", + " '100 USD' '350 USD' '150 USD' '$1,200 ' '$900 ' '$1,500 ' '$1,000 ' '250'\n", + " '2500' '1500' '2000' '3000']\n" ] } ], "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "# 1. DEFINE THE ABSOLUTE FILE PATH\n", + "# *** IMPORTANT *** Ensure this path is correct for your local machine.\n", + "travel_trip_data = r\"D:\\Ironhack\\Week4\\first_project\\data\\raw\\Travel details dataset.csv\"\n", + "\n", + "# --- Column Cleaning Function (Re-defined for completeness) ---\n", + "def clean_column(name):\n", + " \"\"\"Cleans column names.\"\"\"\n", + " return name.lower().strip().replace(\" \", \"_\").replace('', '') \n", + "\n", + "# --- 2. Load Data and Define DataFrame (FIXES THE NAMEERROR) ---\n", + "try:\n", + " # This line defines the DataFrame and resolves the 'NameError'\n", + " travel_trip_safina_df = pd.read_csv(travel_trip_data, encoding='ISO-8859-1')\n", + " print(\"File loaded successfully.\")\n", + "\n", + "except FileNotFoundError:\n", + " print(f\"ERROR: File not found. Please check and correct the path variable: {travel_trip_data}\")\n", + " raise\n", + "\n", + "travel_trip_safina_df.columns = [clean_column(col) for col in travel_trip_safina_df.columns] \n", + "\n", + "# -------------------------------------------------------------------\n", + "# --- 3. Accommodation Cost Cleaning (Your requested code) ---\n", + "# -------------------------------------------------------------------\n", + "\n", "travel_trip_safina_df.loc[:, \"accommodation_cost\"] = (\n", " travel_trip_safina_df[\"accommodation_cost\"]\n", - " .astype(str) # in case there are numbers/NaN in there\n", + " .astype(str)\n", " .str.strip()\n", " .str.strip(\"$\")\n", " .str.replace(\",\", \"\", regex=False)\n", " .str.replace(\" USD\", \"\", regex=False)\n", " .str.strip()\n", ")\n", - "\n", + " \n", "travel_trip_safina_df.loc[:, \"accommodation_cost\"] = pd.to_numeric(\n", " travel_trip_safina_df[\"accommodation_cost\"],\n", " errors=\"coerce\"\n", ")\n", "\n", - "travel_trip_safina_df.transportation_cost.unique()" + "# Display unique transportation costs (which were previously cleaned)\n", + "print(\"\\nUnique transportation costs after cleaning:\")\n", + "print(travel_trip_safina_df[\"transportation_cost\"].unique())" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "f5910f17-ac6a-404a-8444-6e48e0eeef94", "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "File loaded successfully.\n", + "\n", + "First 5 rows of cleaned columns (Dollar sign removed and converted to integer):\n", + " transportation_cost accommodation_cost\n", + "0 600 1200\n", + "1 500 800\n", + "2 700 1000\n", + "3 1000 2000\n", + "4 200 700\n", + "\n", + "Data Types after Integer Conversion:\n", + "\n", + "RangeIndex: 139 entries, 0 to 138\n", + "Data columns (total 2 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 transportation_cost 115 non-null object\n", + " 1 accommodation_cost 116 non-null object\n", + "dtypes: object(2)\n", + "memory usage: 2.3+ KB\n", + "None\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "# 1. DEFINE THE ABSOLUTE FILE PATH\n", + "# *** IMPORTANT *** Please ensure this path is correct for your local machine.\n", + "travel_trip_data = r\"D:\\Ironhack\\Week4\\first_project\\data\\raw\\Travel details dataset.csv\"\n", + "\n", + "# --- Column Cleaning Function ---\n", + "def clean_column(name):\n", + " \"\"\"Cleans column names.\"\"\"\n", + " return name.lower().strip().replace(\" \", \"_\").replace('', '') \n", + "\n", + "# --- 2. Load Data and Clean Columns ---\n", + "try:\n", + " travel_trip_safina_df = pd.read_csv(travel_trip_data, encoding='ISO-8859-1')\n", + " print(\"File loaded successfully.\")\n", + "\n", + "except FileNotFoundError:\n", + " print(f\"ERROR: File not found. Please check and correct the path variable: {travel_trip_data}\")\n", + " raise\n", + "\n", + "travel_trip_safina_df.columns = [clean_column(col) for col in travel_trip_safina_df.columns] \n", + "\n", + "# --- 3. Cleaning Currency Columns (Removing $ and Converting to Int64) ---\n", + "\n", + "columns_to_clean = [\"transportation_cost\", \"accommodation_cost\"]\n", + "\n", + "for col in columns_to_clean:\n", + " # 3a. Clean currency symbols ($, comma, USD) and convert to numeric (float)\n", + " travel_trip_safina_df.loc[:, col] = (\n", + " travel_trip_safina_df[col]\n", + " .astype(str)\n", + " .str.strip()\n", + " .str.strip(\"$\") # <-- REMOVES THE DOLLAR SIGN\n", + " .str.replace(\",\", \"\", regex=False)\n", + " .str.replace(\" usd\", \"\", regex=False)\n", + " .str.strip()\n", + " )\n", + " travel_trip_safina_df.loc[:, col] = pd.to_numeric(\n", + " travel_trip_safina_df[col],\n", + " errors=\"coerce\"\n", + " )\n", + " \n", + " # 3b. Convert to Nullable Integer (Int64)\n", + " travel_trip_safina_df.loc[:, col] = travel_trip_safina_df[col].astype('Int64')\n", + "\n", + "# --- 4. Verify the Result ---\n", + "print(\"\\nFirst 5 rows of cleaned columns (Dollar sign removed and converted to integer):\")\n", + "print(travel_trip_safina_df[columns_to_clean].head())\n", + "print(\"\\nData Types after Integer Conversion:\")\n", + "print(travel_trip_safina_df[columns_to_clean].info())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a5eb7f52-14ba-4944-bf74-f9e24b7373b4", + "metadata": {}, "outputs": [], "source": [] } From 98dcca8af009d340a1f1c1af2db750802d8771f1 Mon Sep 17 00:00:00 2001 From: Hoai Thuong TRAN Date: Mon, 8 Dec 2025 21:40:47 +0100 Subject: [PATCH 5/5] HoaiThuong Branch Monday commit --- .../traveler_trip_dataset_hoaithuong.ipynb | 1982 +++++++++++++++++ 1 file changed, 1982 insertions(+) create mode 100644 notebooks/traveler_trip_dataset_hoaithuong.ipynb diff --git a/notebooks/traveler_trip_dataset_hoaithuong.ipynb b/notebooks/traveler_trip_dataset_hoaithuong.ipynb new file mode 100644 index 00000000..a76fee8a --- /dev/null +++ b/notebooks/traveler_trip_dataset_hoaithuong.ipynb @@ -0,0 +1,1982 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 98, + "id": "eaa9e1ba-9051-4a18-8857-97b56f4b8140", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Trip IDDestinationStart dateEnd dateDuration (days)Traveler nameTraveler ageTraveler genderTraveler nationalityAccommodation typeAccommodation costTransportation typeTransportation cost
01London, UK5/1/20235/8/20237.0John Smith35.0MaleAmericanHotel1200Flight600
12Phuket, Thailand6/15/20236/20/20235.0Jane Doe28.0FemaleCanadianResort800Flight500
23Bali, Indonesia7/1/20237/8/20237.0David Lee45.0MaleKoreanVilla1000Flight700
34New York, USA8/15/20238/29/202314.0Sarah Johnson29.0FemaleBritishHotel2000Flight1000
45Tokyo, Japan9/10/20239/17/20237.0Kim Nguyen26.0FemaleVietnameseAirbnb700Train200
56Paris, France10/5/202310/10/20235.0Michael Brown42.0MaleAmericanHotel1500Flight800
67Sydney, Australia11/20/202311/30/202310.0Emily Davis33.0FemaleAustralianHostel500Flight1200
78Rio de Janeiro, Brazil1/5/20241/12/20247.0Lucas Santos25.0MaleBrazilianAirbnb900Flight600
89Amsterdam, Netherlands2/14/20242/21/20247.0Laura Janssen31.0FemaleDutchHotel1200Train200
910Dubai, United Arab Emirates3/10/20243/17/20247.0Mohammed Ali39.0MaleEmiratiResort2500Flight800
\n", + "
" + ], + "text/plain": [ + " Trip ID Destination Start date End date \\\n", + "0 1 London, UK 5/1/2023 5/8/2023 \n", + "1 2 Phuket, Thailand 6/15/2023 6/20/2023 \n", + "2 3 Bali, Indonesia 7/1/2023 7/8/2023 \n", + "3 4 New York, USA 8/15/2023 8/29/2023 \n", + "4 5 Tokyo, Japan 9/10/2023 9/17/2023 \n", + "5 6 Paris, France 10/5/2023 10/10/2023 \n", + "6 7 Sydney, Australia 11/20/2023 11/30/2023 \n", + "7 8 Rio de Janeiro, Brazil 1/5/2024 1/12/2024 \n", + "8 9 Amsterdam, Netherlands 2/14/2024 2/21/2024 \n", + "9 10 Dubai, United Arab Emirates 3/10/2024 3/17/2024 \n", + "\n", + " Duration (days) Traveler name Traveler age Traveler gender \\\n", + "0 7.0 John Smith 35.0 Male \n", + "1 5.0 Jane Doe 28.0 Female \n", + "2 7.0 David Lee 45.0 Male \n", + "3 14.0 Sarah Johnson 29.0 Female \n", + "4 7.0 Kim Nguyen 26.0 Female \n", + "5 5.0 Michael Brown 42.0 Male \n", + "6 10.0 Emily Davis 33.0 Female \n", + "7 7.0 Lucas Santos 25.0 Male \n", + "8 7.0 Laura Janssen 31.0 Female \n", + "9 7.0 Mohammed Ali 39.0 Male \n", + "\n", + " Traveler nationality Accommodation type Accommodation cost \\\n", + "0 American Hotel 1200 \n", + "1 Canadian Resort 800 \n", + "2 Korean Villa 1000 \n", + "3 British Hotel 2000 \n", + "4 Vietnamese Airbnb 700 \n", + "5 American Hotel 1500 \n", + "6 Australian Hostel 500 \n", + "7 Brazilian Airbnb 900 \n", + "8 Dutch Hotel 1200 \n", + "9 Emirati Resort 2500 \n", + "\n", + " Transportation type Transportation cost \n", + "0 Flight 600 \n", + "1 Flight 500 \n", + "2 Flight 700 \n", + "3 Flight 1000 \n", + "4 Train 200 \n", + "5 Flight 800 \n", + "6 Flight 1200 \n", + "7 Flight 600 \n", + "8 Train 200 \n", + "9 Flight 800 " + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "travel_trip_data = \"../data/raw/Travel details dataset.csv\"\n", + "travel_trip_hoaithuong_df = pd.read_csv(travel_trip_data, encoding='ISO-8859-1')\n", + "travel_trip_hoaithuong_df.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "id": "5215913a-b54e-4a6d-a07e-5e702c75ede4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(139, 13)" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "id": "d0ae93e3-d769-4e0b-b4b1-9a8f7dee6b9b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Trip ID', 'Destination', 'Start date', 'End date',\n", + " 'Duration (days)', 'Traveler name', 'Traveler age', 'Traveler gender',\n", + " 'Traveler nationality', 'Accommodation type', 'Accommodation cost',\n", + " 'Transportation type', 'Transportation cost'],\n", + " dtype='object')" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "id": "f6b0a039-7cdc-461c-958f-4ee1634601be", + "metadata": {}, + "outputs": [], + "source": [ + "travel_trip_hoaithuong_df.columns = travel_trip_hoaithuong_df.columns.str.replace(\"\", \"\", regex=False).str.replace(r\"[()]\", \"\", regex=True).str.strip(\")\").str.replace(\" \",\"_\").str.lower()" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "id": "6785b96f-411c-4f9e-82a6-d00dbc033aaf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['trip_id', 'destination', 'start_date', 'end_date', 'duration_days',\n", + " 'traveler_name', 'traveler_age', 'traveler_gender',\n", + " 'traveler_nationality', 'accommodation_type', 'accommodation_cost',\n", + " 'transportation_type', 'transportation_cost'],\n", + " dtype='object')" + ] + }, + "execution_count": 102, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "id": "4835cbff-9092-476f-bd78-1ba752ecec33", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
trip_iddestinationstart_dateend_dateduration_daystraveler_nametraveler_agetraveler_gendertraveler_nationalityaccommodation_typeaccommodation_costtransportation_typetransportation_cost
01London, UK5/1/20235/8/20237.0John Smith35.0MaleAmericanHotel1200Flight600
12Phuket, Thailand6/15/20236/20/20235.0Jane Doe28.0FemaleCanadianResort800Flight500
23Bali, Indonesia7/1/20237/8/20237.0David Lee45.0MaleKoreanVilla1000Flight700
34New York, USA8/15/20238/29/202314.0Sarah Johnson29.0FemaleBritishHotel2000Flight1000
45Tokyo, Japan9/10/20239/17/20237.0Kim Nguyen26.0FemaleVietnameseAirbnb700Train200
\n", + "
" + ], + "text/plain": [ + " trip_id destination start_date end_date duration_days \\\n", + "0 1 London, UK 5/1/2023 5/8/2023 7.0 \n", + "1 2 Phuket, Thailand 6/15/2023 6/20/2023 5.0 \n", + "2 3 Bali, Indonesia 7/1/2023 7/8/2023 7.0 \n", + "3 4 New York, USA 8/15/2023 8/29/2023 14.0 \n", + "4 5 Tokyo, Japan 9/10/2023 9/17/2023 7.0 \n", + "\n", + " traveler_name traveler_age traveler_gender traveler_nationality \\\n", + "0 John Smith 35.0 Male American \n", + "1 Jane Doe 28.0 Female Canadian \n", + "2 David Lee 45.0 Male Korean \n", + "3 Sarah Johnson 29.0 Female British \n", + "4 Kim Nguyen 26.0 Female Vietnamese \n", + "\n", + " accommodation_type accommodation_cost transportation_type \\\n", + "0 Hotel 1200 Flight \n", + "1 Resort 800 Flight \n", + "2 Villa 1000 Flight \n", + "3 Hotel 2000 Flight \n", + "4 Airbnb 700 Train \n", + "\n", + " transportation_cost \n", + "0 600 \n", + "1 500 \n", + "2 700 \n", + "3 1000 \n", + "4 200 " + ] + }, + "execution_count": 103, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "id": "eacb80fb-b3a0-49a8-81b9-259bcb54911b", + "metadata": {}, + "outputs": [], + "source": [ + "# Clean columns start_date" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "id": "d02c1da1-0f38-4260-92be-bb53a6a8791a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['5/1/2023', '6/15/2023', '7/1/2023', '8/15/2023', '9/10/2023',\n", + " '10/5/2023', '11/20/2023', '1/5/2024', '2/14/2024', '3/10/2024',\n", + " '4/1/2024', '5/15/2024', '6/10/2024', '7/1/2024', '8/20/2024',\n", + " '9/5/2024', '9/1/2023', '7/22/2023', '12/5/2023', '11/1/2023',\n", + " '9/15/2023', '12/22/2023', '8/1/2023', '10/20/2023', '5/10/2022',\n", + " '6/15/2022', '7/2/2022', '8/20/2022', '9/5/2022', '10/12/2022',\n", + " '11/8/2022', '1/5/2023', '2/14/2023', '3/23/2023', '4/19/2023',\n", + " '6/12/2022', '1/2/2023', '12/10/2022', '11/20/2022', '3/5/2023',\n", + " '8/18/2023', '9/15/2022', '7/10/2022', '6/20/2023', '10/10/2023',\n", + " '11/5/2023', '12/24/2023', '1/15/2024', '2/1/2024', '3/15/2024',\n", + " '4/5/2024', '5/10/2024', '6/20/2024', '7/15/2024', '7/12/2022',\n", + " '9/3/2022', '1/7/2023', '6/23/2023', '5/6/2024', '7/20/2024',\n", + " '9/8/2024', '2/14/2025', '5/21/2025', nan, '8/5/2022', '1/1/2023',\n", + " '4/15/2023', '6/7/2023', '11/12/2023', '2/5/2024', '1/1/2025',\n", + " '4/15/2025', '6/15/2021', '7/1/2021', '8/10/2021', '9/1/2021',\n", + " '10/15/2021', '11/20/2021', '1/1/2022', '2/14/2022', '3/10/2022',\n", + " '4/15/2022', '5/1/2022', '9/1/2022', '11/23/2022', '5/8/2023',\n", + " '8/20/2023', '1/6/2024', '4/3/2024', '7/22/2024', '10/10/2024',\n", + " '5/15/2022', '6/20/2022', '8/12/2022', '7/1/2022', '6/10/2022',\n", + " '7/15/2022', '8/25/2022', '9/10/2022', '2/5/2022', '3/15/2022',\n", + " '7/20/2022', '8/8/2022', '9/20/2022', '10/5/2022', '11/11/2022',\n", + " '12/24/2022', '2/10/2023', '5/15/2023', '6/1/2023', '7/15/2023',\n", + " '10/1/2023'], dtype=object)" + ] + }, + "execution_count": 105, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df['start_date'].unique()\n", + "#extract the list of unique values" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "id": "ce61b023-32f0-4052-b222-3e0dce231312", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('O')" + ] + }, + "execution_count": 106, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df['start_date'].dtype" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "id": "146c5905-e3ef-435a-a341-603a057d1b58", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
trip_iddestinationstart_dateend_dateduration_daystraveler_nametraveler_agetraveler_gendertraveler_nationalityaccommodation_typeaccommodation_costtransportation_typetransportation_cost
7172NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
127128NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " trip_id destination start_date end_date duration_days traveler_name \\\n", + "71 72 NaN NaN NaN NaN NaN \n", + "127 128 NaN NaN NaN NaN NaN \n", + "\n", + " traveler_age traveler_gender traveler_nationality accommodation_type \\\n", + "71 NaN NaN NaN NaN \n", + "127 NaN NaN NaN NaN \n", + "\n", + " accommodation_cost transportation_type transportation_cost \n", + "71 NaN NaN NaN \n", + "127 NaN NaN NaN " + ] + }, + "execution_count": 107, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df[travel_trip_hoaithuong_df['start_date'].isna()]" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "id": "caf55e0d-37c1-4211-8978-43f323f88eb7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "np.int64(2)" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df[\"start_date\"].isna().sum()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "id": "14139d28-be33-449f-9b2b-6c1266dad526", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "111" + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df[\"start_date\"].nunique()" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "id": "622ecee8-8cc1-495e-a9d2-4e3c2fb6b05d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 2023-05-01\n", + "1 2023-06-15\n", + "2 2023-07-01\n", + "3 2023-08-15\n", + "4 2023-09-10\n", + " ... \n", + "134 2023-08-01\n", + "135 2023-08-15\n", + "136 2023-09-01\n", + "137 2023-09-15\n", + "138 2023-10-01\n", + "Name: start_date, Length: 139, dtype: datetime64[ns]\n" + ] + } + ], + "source": [ + "travel_trip_hoaithuong_df['start_date'] = pd.to_datetime(travel_trip_hoaithuong_df['start_date'], format='%m/%d/%Y')\n", + "print(travel_trip_hoaithuong_df['start_date'])" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "id": "9517424f-c607-4eca-a11b-18de715df887", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " start_date\n", + "0 2023-05\n", + "1 2023-06\n", + "2 2023-07\n", + "3 2023-08\n", + "4 2023-09\n" + ] + } + ], + "source": [ + "# Convert the 'end_date' column to datetime first (if not already done)\n", + "travel_trip_hoaithuong_df['start_date'] = pd.to_datetime(\n", + " travel_trip_hoaithuong_df['start_date'], \n", + " errors='coerce'\n", + ")\n", + "\n", + "# Use .dt.strftime('%Y-%m') to format the date to Year and Month only.\n", + "travel_trip_hoaithuong_df['start_date'] = travel_trip_hoaithuong_df['start_date'].dt.strftime('%Y-%m')\n", + "\n", + "# Optional: Display the new data type and values\n", + "print(travel_trip_hoaithuong_df[['start_date']].head())" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "id": "6c20800d-1a44-4695-a500-70bbaf5f1399", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
trip_iddestinationstart_dateend_dateduration_daystraveler_nametraveler_agetraveler_gendertraveler_nationalityaccommodation_typeaccommodation_costtransportation_typetransportation_cost
01London, UK2023-055/8/20237.0John Smith35.0MaleAmericanHotel1200Flight600
12Phuket, Thailand2023-066/20/20235.0Jane Doe28.0FemaleCanadianResort800Flight500
23Bali, Indonesia2023-077/8/20237.0David Lee45.0MaleKoreanVilla1000Flight700
34New York, USA2023-088/29/202314.0Sarah Johnson29.0FemaleBritishHotel2000Flight1000
45Tokyo, Japan2023-099/17/20237.0Kim Nguyen26.0FemaleVietnameseAirbnb700Train200
..........................................
134135Rio de Janeiro, Brazil2023-088/10/20239.0Jose Perez37.0MaleBrazilianHostel2500Car2000
135136Vancouver, Canada2023-088/21/20236.0Emma Wilson29.0FemaleCanadianHotel5000Airplane3000
136137Bangkok, Thailand2023-099/8/20237.0Ryan Chen34.0MaleChineseHostel2000Train1000
137138Barcelona, Spain2023-099/22/20237.0Sofia Rodriguez25.0FemaleSpanishAirbnb6000Airplane2500
138139Auckland, New Zealand2023-1010/8/20237.0William Brown39.0MaleNew ZealanderHotel7000Train2500
\n", + "

139 rows × 13 columns

\n", + "
" + ], + "text/plain": [ + " trip_id destination start_date end_date duration_days \\\n", + "0 1 London, UK 2023-05 5/8/2023 7.0 \n", + "1 2 Phuket, Thailand 2023-06 6/20/2023 5.0 \n", + "2 3 Bali, Indonesia 2023-07 7/8/2023 7.0 \n", + "3 4 New York, USA 2023-08 8/29/2023 14.0 \n", + "4 5 Tokyo, Japan 2023-09 9/17/2023 7.0 \n", + ".. ... ... ... ... ... \n", + "134 135 Rio de Janeiro, Brazil 2023-08 8/10/2023 9.0 \n", + "135 136 Vancouver, Canada 2023-08 8/21/2023 6.0 \n", + "136 137 Bangkok, Thailand 2023-09 9/8/2023 7.0 \n", + "137 138 Barcelona, Spain 2023-09 9/22/2023 7.0 \n", + "138 139 Auckland, New Zealand 2023-10 10/8/2023 7.0 \n", + "\n", + " traveler_name traveler_age traveler_gender traveler_nationality \\\n", + "0 John Smith 35.0 Male American \n", + "1 Jane Doe 28.0 Female Canadian \n", + "2 David Lee 45.0 Male Korean \n", + "3 Sarah Johnson 29.0 Female British \n", + "4 Kim Nguyen 26.0 Female Vietnamese \n", + ".. ... ... ... ... \n", + "134 Jose Perez 37.0 Male Brazilian \n", + "135 Emma Wilson 29.0 Female Canadian \n", + "136 Ryan Chen 34.0 Male Chinese \n", + "137 Sofia Rodriguez 25.0 Female Spanish \n", + "138 William Brown 39.0 Male New Zealander \n", + "\n", + " accommodation_type accommodation_cost transportation_type \\\n", + "0 Hotel 1200 Flight \n", + "1 Resort 800 Flight \n", + "2 Villa 1000 Flight \n", + "3 Hotel 2000 Flight \n", + "4 Airbnb 700 Train \n", + ".. ... ... ... \n", + "134 Hostel 2500 Car \n", + "135 Hotel 5000 Airplane \n", + "136 Hostel 2000 Train \n", + "137 Airbnb 6000 Airplane \n", + "138 Hotel 7000 Train \n", + "\n", + " transportation_cost \n", + "0 600 \n", + "1 500 \n", + "2 700 \n", + "3 1000 \n", + "4 200 \n", + ".. ... \n", + "134 2000 \n", + "135 3000 \n", + "136 1000 \n", + "137 2500 \n", + "138 2500 \n", + "\n", + "[139 rows x 13 columns]" + ] + }, + "execution_count": 112, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + " travel_trip_hoaithuong_df" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "id": "9b426ca7-b105-4e6c-a965-a3d2f9e1794d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 2023-05-01\n", + "1 2023-06-01\n", + "2 2023-07-01\n", + "3 2023-08-01\n", + "4 2023-09-01\n", + " ... \n", + "134 2023-08-01\n", + "135 2023-08-01\n", + "136 2023-09-01\n", + "137 2023-09-01\n", + "138 2023-10-01\n", + "Name: start_date, Length: 139, dtype: datetime64[ns]" + ] + }, + "execution_count": 119, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df['start_date'] = pd.to_datetime(travel_trip_hoaithuong_df['start_date'], errors='coerce')\n", + "travel_trip_hoaithuong_df['start_date']" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "id": "8ed625ad-7d44-4c07-a604-8d2e7f84843c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 May\n", + "1 June\n", + "2 July\n", + "3 August\n", + "4 September\n", + " ... \n", + "134 August\n", + "135 August\n", + "136 September\n", + "137 September\n", + "138 October\n", + "Name: start_month, Length: 139, dtype: object" + ] + }, + "execution_count": 120, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df['start_month'] = travel_trip_hoaithuong_df['start_date'].dt.strftime('%B')\n", + "travel_trip_hoaithuong_df['start_month']" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "id": "f450c9cf-f145-4683-be6d-966e7b034201", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
trip_iddestinationstart_dateend_dateduration_daystraveler_nametraveler_agetraveler_gendertraveler_nationalityaccommodation_typeaccommodation_costtransportation_typetransportation_coststart_monthstart_year
01London, UK2023-05-015/8/20237.0John Smith35.0MaleAmericanHotel1200Flight600May2023.0
12Phuket, Thailand2023-06-016/20/20235.0Jane Doe28.0FemaleCanadianResort800Flight500June2023.0
23Bali, Indonesia2023-07-017/8/20237.0David Lee45.0MaleKoreanVilla1000Flight700July2023.0
34New York, USA2023-08-018/29/202314.0Sarah Johnson29.0FemaleBritishHotel2000Flight1000August2023.0
45Tokyo, Japan2023-09-019/17/20237.0Kim Nguyen26.0FemaleVietnameseAirbnb700Train200September2023.0
\n", + "
" + ], + "text/plain": [ + " trip_id destination start_date end_date duration_days \\\n", + "0 1 London, UK 2023-05-01 5/8/2023 7.0 \n", + "1 2 Phuket, Thailand 2023-06-01 6/20/2023 5.0 \n", + "2 3 Bali, Indonesia 2023-07-01 7/8/2023 7.0 \n", + "3 4 New York, USA 2023-08-01 8/29/2023 14.0 \n", + "4 5 Tokyo, Japan 2023-09-01 9/17/2023 7.0 \n", + "\n", + " traveler_name traveler_age traveler_gender traveler_nationality \\\n", + "0 John Smith 35.0 Male American \n", + "1 Jane Doe 28.0 Female Canadian \n", + "2 David Lee 45.0 Male Korean \n", + "3 Sarah Johnson 29.0 Female British \n", + "4 Kim Nguyen 26.0 Female Vietnamese \n", + "\n", + " accommodation_type accommodation_cost transportation_type \\\n", + "0 Hotel 1200 Flight \n", + "1 Resort 800 Flight \n", + "2 Villa 1000 Flight \n", + "3 Hotel 2000 Flight \n", + "4 Airbnb 700 Train \n", + "\n", + " transportation_cost start_month start_year \n", + "0 600 May 2023.0 \n", + "1 500 June 2023.0 \n", + "2 700 July 2023.0 \n", + "3 1000 August 2023.0 \n", + "4 200 September 2023.0 " + ] + }, + "execution_count": 121, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "id": "90974fd4-9cbc-414b-a0c9-790f5685badc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
trip_iddestinationstart_dateend_dateduration_daystraveler_nametraveler_agetraveler_gendertraveler_nationalityaccommodation_typeaccommodation_costtransportation_typetransportation_coststart_monthstart_year
01London, UK2023-05-015/8/20237.0John Smith35.0MaleAmericanHotel1200Flight600May2023
12Phuket, Thailand2023-06-016/20/20235.0Jane Doe28.0FemaleCanadianResort800Flight500June2023
23Bali, Indonesia2023-07-017/8/20237.0David Lee45.0MaleKoreanVilla1000Flight700July2023
34New York, USA2023-08-018/29/202314.0Sarah Johnson29.0FemaleBritishHotel2000Flight1000August2023
45Tokyo, Japan2023-09-019/17/20237.0Kim Nguyen26.0FemaleVietnameseAirbnb700Train200September2023
\n", + "
" + ], + "text/plain": [ + " trip_id destination start_date end_date duration_days \\\n", + "0 1 London, UK 2023-05-01 5/8/2023 7.0 \n", + "1 2 Phuket, Thailand 2023-06-01 6/20/2023 5.0 \n", + "2 3 Bali, Indonesia 2023-07-01 7/8/2023 7.0 \n", + "3 4 New York, USA 2023-08-01 8/29/2023 14.0 \n", + "4 5 Tokyo, Japan 2023-09-01 9/17/2023 7.0 \n", + "\n", + " traveler_name traveler_age traveler_gender traveler_nationality \\\n", + "0 John Smith 35.0 Male American \n", + "1 Jane Doe 28.0 Female Canadian \n", + "2 David Lee 45.0 Male Korean \n", + "3 Sarah Johnson 29.0 Female British \n", + "4 Kim Nguyen 26.0 Female Vietnamese \n", + "\n", + " accommodation_type accommodation_cost transportation_type \\\n", + "0 Hotel 1200 Flight \n", + "1 Resort 800 Flight \n", + "2 Villa 1000 Flight \n", + "3 Hotel 2000 Flight \n", + "4 Airbnb 700 Train \n", + "\n", + " transportation_cost start_month start_year \n", + "0 600 May 2023 \n", + "1 500 June 2023 \n", + "2 700 July 2023 \n", + "3 1000 August 2023 \n", + "4 200 September 2023 " + ] + }, + "execution_count": 124, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df[\"start_date\"] = pd.to_datetime(\n", + " travel_trip_hoaithuong_df[\"start_date\"], errors=\"coerce\"\n", + ")\n", + "\n", + "travel_trip_hoaithuong_df[\"start_year\"] = (\n", + " travel_trip_hoaithuong_df[\"start_date\"].dt.year.astype(\"Int64\")\n", + ")\n", + "travel_trip_hoaithuong_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "id": "2cd814fb-da83-4583-9f34-97372e41ee74", + "metadata": {}, + "outputs": [], + "source": [ + "#Clean columns: traveler_nationality" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "id": "d36774ee-16ad-4b7c-8b92-5b4ac81c589f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['American', 'Canadian', 'Korean', 'British', 'Vietnamese',\n", + " 'Australian', 'Brazilian', 'Dutch', 'Emirati', 'Mexican',\n", + " 'Spanish', 'Chinese', 'German', 'Moroccan', 'Scottish', 'Japanese',\n", + " 'Italian', 'Indian', 'South Korean', 'French', nan,\n", + " 'South African', 'Taiwanese', 'Indonesian', 'USA', 'Canada',\n", + " 'South Korea', 'UK', 'China', 'Taiwan', 'Japan', 'Spain', 'Brazil',\n", + " 'Germany', 'Hong Kong', 'United Kingdom', 'Singapore', 'Italy',\n", + " 'Greece', 'United Arab Emirates', 'Cambodia', 'New Zealander'],\n", + " dtype=object)" + ] + }, + "execution_count": 126, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + " travel_trip_hoaithuong_df['traveler_nationality'].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "id": "2e165506-1ee0-44c9-91a5-907d9e6884bf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 American\n", + "1 Canadian\n", + "2 Korean\n", + "3 British\n", + "4 Vietnamese\n", + " ... \n", + "134 Brazilian\n", + "135 Canadian\n", + "136 Chinese\n", + "137 Spanish\n", + "138 New Zealander\n", + "Name: traveler_nationality, Length: 139, dtype: object" + ] + }, + "execution_count": 127, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df['traveler_nationality'].str.strip().str.lower().str.title()" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "id": "2ea7355a-8df1-4bc6-b29b-e893e1221394", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "traveler_nationality\n", + "American 24\n", + "Korean 13\n", + "British 12\n", + "Canadian 9\n", + "Australian 8\n", + "Spanish 7\n", + "Chinese 7\n", + "Italian 4\n", + "Brazilian 4\n", + "Indian 4\n", + "Vietnamese 3\n", + "South Korea 3\n", + "South Korean 3\n", + "Taiwan 2\n", + "Canada 2\n", + "USA 2\n", + "South African 2\n", + "Japanese 2\n", + "Mexican 2\n", + "Emirati 2\n", + "Dutch 2\n", + "Brazil 1\n", + "Cambodia 1\n", + "United Arab Emirates 1\n", + "Greece 1\n", + "Italy 1\n", + "Singapore 1\n", + "United Kingdom 1\n", + "Hong Kong 1\n", + "Germany 1\n", + "Japan 1\n", + "Spain 1\n", + "Scottish 1\n", + "China 1\n", + "UK 1\n", + "German 1\n", + "Indonesian 1\n", + "Taiwanese 1\n", + "Moroccan 1\n", + "French 1\n", + "New Zealander 1\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 128, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df['traveler_nationality'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "id": "b4b7ab06-6da3-40c9-9bbf-62a0d321cd76", + "metadata": {}, + "outputs": [], + "source": [ + "mapping = {\n", + " 'American': 'United States',\n", + " 'USA': 'United States',\n", + " 'Canada': 'Canada',\n", + " 'Canadian': 'Canada',\n", + " 'UK': 'United Kingdom',\n", + " 'United Kingdom': 'United Kingdom',\n", + " 'British': 'United Kingdom',\n", + " 'Scottish': 'United Kingdom',\n", + " 'Korean': 'South Korea',\n", + " 'South Korea': 'South Korea',\n", + " 'South Korean': 'South Korea',\n", + " 'China': 'China',\n", + " 'Chinese': 'China',\n", + " 'Italy': 'Italy',\n", + " 'Italian': 'Italy',\n", + " 'Brazil': 'Brazil',\n", + " 'Brazilian': 'Brazil',\n", + " 'Emirati': 'United Arab Emirates',\n", + " 'United Arab Emirates': 'United Arab Emirates',\n", + " 'Taiwan': 'Taiwan',\n", + " 'Taiwanese': 'Taiwan',\n", + " 'Germany': 'Germany',\n", + " 'German': 'Germany',\n", + " 'Spain': 'Spain',\n", + " 'Spanish': 'Spain',\n", + " 'Japan': 'Japan',\n", + " 'Japanese': 'Japan'\n", + "}\n", + "\n", + "travel_trip_hoaithuong_df['traveler_nationality_clean'] = travel_trip_hoaithuong_df['traveler_nationality'].replace(mapping)" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "id": "6044065c-4763-4f33-8e14-4d404c9de96c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "traveler_nationality_clean\n", + "United States 26\n", + "South Korea 19\n", + "United Kingdom 15\n", + "Canada 11\n", + "China 8\n", + "Spain 8\n", + "Australian 8\n", + "Brazil 5\n", + "Italy 5\n", + "Indian 4\n", + "United Arab Emirates 3\n", + "Vietnamese 3\n", + "Japan 3\n", + "Taiwan 3\n", + "Dutch 2\n", + "Mexican 2\n", + "Germany 2\n", + "South African 2\n", + "Singapore 1\n", + "Cambodia 1\n", + "Greece 1\n", + "Moroccan 1\n", + "Hong Kong 1\n", + "Indonesian 1\n", + "French 1\n", + "New Zealander 1\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 130, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df['traveler_nationality_clean'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "id": "f473b554-a78f-4431-8c5e-06980976e343", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('O')" + ] + }, + "execution_count": 131, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df['traveler_nationality'].dtype" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "id": "5bfed24f-5b63-4330-9e2d-7d6edfce67a8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 American\n", + "1 Canadian\n", + "2 Korean\n", + "3 British\n", + "4 Vietnamese\n", + " ... \n", + "134 Brazilian\n", + "135 Canadian\n", + "136 Chinese\n", + "137 Spanish\n", + "138 New Zealander\n", + "Name: traveler_nationality, Length: 139, dtype: string" + ] + }, + "execution_count": 132, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df['traveler_nationality'].astype('string')" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "id": "9c363536-ca86-417a-aa9a-59b37db0119c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "np.int64(2)" + ] + }, + "execution_count": 133, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df['traveler_nationality'].isna().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "id": "85f9faa5-c85d-48b3-b0b0-3dcea796fdaf", + "metadata": {}, + "outputs": [], + "source": [ + "# Clean columns traveler_gender" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "id": "68ceab2f-3ae5-425d-ba28-704a44289be7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['Male', 'Female', nan], dtype=object)" + ] + }, + "execution_count": 135, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df['traveler_gender'].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "id": "0e794a05-5879-4857-84f9-1674d4212a1e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "traveler_gender\n", + "Female 70\n", + "Male 67\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 136, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df['traveler_gender'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "id": "e87e63d4-c180-4263-820b-abf80afe31e4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "np.int64(2)" + ] + }, + "execution_count": 137, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df['traveler_gender'].isna().sum() " + ] + }, + { + "cell_type": "code", + "execution_count": 138, + "id": "8a073849-ae87-44aa-bd84-3916171634f4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 Male\n", + "1 Female\n", + "2 Male\n", + "3 Female\n", + "4 Female\n", + " ... \n", + "134 Male\n", + "135 Female\n", + "136 Male\n", + "137 Female\n", + "138 Male\n", + "Name: traveler_gender, Length: 139, dtype: object" + ] + }, + "execution_count": 138, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df['traveler_gender'].str.strip().str.title()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "id": "7a432295-fa6c-474e-b3ad-98835f8dc5db", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "traveler_gender\n", + "Female 70\n", + "Male 67\n", + "Unknown 2\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 140, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "travel_trip_hoaithuong_df[\"traveler_gender\"] = (\n", + " travel_trip_hoaithuong_df[\"traveler_gender\"].fillna(\"Unknown\")\n", + ")\n", + "travel_trip_hoaithuong_df['traveler_gender'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bb6b32cd-c090-4b88-97a6-f9c8d647e7b7", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}