Wycieczki do Grecji

Czytanie zajmie Ci około 13 minut

Ile kosztuje wycieczka do Grecji? Czy last minute jest opłacalne i kiedy cena zaczyna spadać? Jak znaleźć najbardziej atrakcyjne miejsce na wypoczynek (w Grecji)?

Jakiś czas temu analizowałem raporty publikowane przez Polski Związek Organizatorów Turystyki. Z analizy wyszło, że najchętniej jeździmy na wypoczynek do Grecji (tak było w drugiej połowie 2017 roku). Postanowiłem więc sprawdzić ile kosztuje taki wyjazd.

Zebranie danych

Aby cokolwiek analizować trzeba mieć dane. Jeśli nie mamy dostępu do baz oraz nie możemy (albo nie chcemy) ich kupić to można pokusić się o ich zebranie z sieci. Założeniem tego bloga jest to, aby kolejne analizy przygotowywać bez opłat (nie licząc czasu i kosztów typu serwery), zatem dane weźmiemy sobie sami.

Kryteria wyszukiwania

Skoro Grecja najpopularniejsza to niech będzie Grecja. Skoro pomysł pojawił się pod koniec kwietnia to niech będzie trochę czasu na zebranie danych – stąd termin wycieczki. Do tego dodajmy mniej więcej średnią polską rodzinę typu 2+2: dwoje dorosłych oraz dwoje dzieci, w tym jedno potrzebujące własnego łóżka, a drugie mieszczące się w tańszej taryfie (czasem za darmo). Przedszkolak i uczeń podstawówki.

Podsumowując – kryteria są następujące:

  • kraj docelowy: Grecja
  • wyjazd od 1.09, powrót do 30.09
  • samolotem z Warszawy
  • dwoje dorosłych, dwoje dzieci (4 i 7 lat)
  • standard All inclusive

Źródło danych

Wiemy czego potrzebujemy, skąd to teraz zebrać? Najprościej z jakiegoś serwisu internetowego sprzedającego wycieczki (bo będzie tam w miarę ujednolicona forma prezentacji, a przede wszystkim – będą różni tour-operatorzy). Wybór padł na Wakacje.pl.

Nie, Wakacje.pl nie są sponsorem tego wpisu.
Sponsorem nie jest też żaden z organizatorów wycieczek, żaden rejon Grecji ani greckie miasto.
Nie ma sponsora. Po prostu.

Nasz skrypt zbierający dane będzie wchodził na stronę, zadawał odpowiednie pytanie w wyszukiwarce, co wygeneruje odpowiedni link do strony z wynikami. I z tego gotowego linku korzystamy za każdym razem (zamiast wypełniać formularze). Strona z wynikami jest podzielona na ileś tam ofert za każdym razem (tyle, ile dostępnych jest wycieczek) – wystarczy je wszystkie przeczytać. To już było grane przy szukaniu mieszkań na wynajem czy samochodów, tutaj działa dokładnie tak samo.

Miejsce na dane

Dane zebrane można zapisywać w plikach, ale można też zapisywać do bazy danych. To ostatnie rozwiązanie jest o tyle przyjemne, że baza sobie przyrasta, a raz napisany skrypt po prostu bierze aktualny stan i wyrzuca odpowiedni raport. Skrypt pobierający dane zapisywał je do bazy PostgreSQL.

Pobranie danych – skrypt i cron

Nie będę tutaj przytaczał całego skryptu (jest dość nudny i mało rozwojowy), zainteresowani znajdą go na moim GitHubie. Swoją drogą zebrane dane też tam wpadły (jako plik RDS), być może komuś się przydadzą? W analizie wykorzystam plik statyczny a nie bazę – różnica jest żadna (bo plik jest wyeksportowany z bazy odpytanej przez SELECT * FROM tabela;).

Dobrze, ale skrypt pobierający dane działa tak, że w momencie uruchomienia przechodzi przez oferty i zapisuje je sobie w bazie. Ale chcemy sprawdzić czy oferty zmieniają się z upływem czasu! Zatem trzeba wszystkie przechodzić na przykład codziennie. No to dodajemy uruchomienie skryptu do crona (w systemach linuksowych; crontab -e i dopisujemy poniższą linijkę na koniec):

i tyle. Czekamy aż skończy się wrzesień (bo najpóźniejsza wycieczka według naszych kryteriów może się zakończyć z końcem tegoż miesiąca).

Warto co jakiś czas rzucić okiem czy wszystko działa, czy dane dopisują się do bazy, czy nie ma błędów. Ja czasem nie sprawdziłem i powstały dziury w ciągłości danych – są dni, z których brakuje informacji. Przyczyna była dość prosta: niektóre ogłoszenia miały dodatkowe parametry, które powodowały że tabelki z przeczytanymi ze strony danymi się rozsypywały. Wystarczyło dodać precyzyjne wybieranie kolumn, a nie liczyć na to że zawsze będzie tak samo.

Analiza

Mamy dane, przystępujemy więc do dzieła.

Jakie parametry zebraliśmy?

Mamy termin wycieczki, standard (‘wyzywienie’), organizatora, rejon i miejscowość razem z nazwą hotelu. Liczbę gwiazdek będącą oceną hotelu, ocenę wycieczki (nie wiem skąd ona pochodzi, jest niezmienna w czasie dla poszczególnych wycieczek). ID oferty, liczbę rezerwacji danej oferty w każdym z kolejnych dni, cenę za osobę oraz datę aktualizacji.

Liczba dostępnych wycieczek według daty

W pierwszej kolejności zobaczmy ile wycieczek udało się zebrać w kolejnych dniach:

Widać wyraźnie dziury, w których skrypt się wywalał. Szkoda, że przypadło to akurat na drugą połowę sierpnia – tuż przed rozpoczęciem okresu jaki nas interesował. Nie chodzi nawet o ilość ofert zebranych w tych dniach, a o parametry (głównie ceny) tych ofert.

Z grubsza widać że im bliżej terminu wyjazdu tym mniej ofert. To dość oczywiste – po prostu wycieczki się wyprzedają.

Gdzie są miejsca docelowe? (mapka)

Zobaczmy dokąd wiozą tour operatorzy. Do narysowania konturów Grecji wykorzystamy dane zawarte w pakiecie ggmap:

Ale aby na mapie zaznaczyć punkt potrzebujemy jego współrzędnych. Mamy tylko region i nazwę miejscowości, potrzebujemy przetłumaczyć to na współrzędne geograficzne. Z pomocą przychodzi funkcja mutate_geocode() z pakietu ggmap.

Chwilę to trwa, w końcu musimy odpytać API o 231 miejsc. Na koniec możemy to sobie narysować na mapce:

Oceny według regionów

Czy wycieczki do konkretnych miejscowości (miasta) różnią się oceną? Jeśli tak – wskazywałoby to w uproszczeniu, że jedne rejony są bardziej atrakcyjne niż inne. Sprawdźmy na mapie, dodając punktom z mapki powyżej kolor zależny od średniej oceny wycieczki:

Przede wszystkim widać, że najwięcej jest ocen 7 i 8 – na tych panelach mamy najwięcej punktów. To naturalne, wszędzie tak jest (czy to o oceny wycieczek czy np. filmów chodzi). Czy z powyższych map można wyczytać, że jedne rejony są bardziej atrakcyjne niż inne? Według mnie nie…

Możemy to sprawdzić i policzyć ocenę według regionów:

Region n Średnia ocena
Zatoka Koryncka 4 8.38
Kos 54 8.28
Attyka 4 8.22
Evia 3 8.20
Lesbos 2 8.00
Kefalonia 3 7.77
Kreta 316 7.72
Rodos 143 7.71
Skiathos 1 7.70
Peloponez 8 7.69
Zakynthos 73 7.39
Riwiera Olimpijska 13 7.35
Thassos 5 7.30
Chalkidiki 35 7.27
Korfu 76 7.26
Skopelos 3 6.73
Lefkada 1 6.70
Karpathos 1 5.50

Najlepiej wypada Zatoka Koryncka i wyspa Kos. Pytanie czy nie powinniśmy waży ocen liczbą (kolumna n) wycieczek do danego regionu? W końcu im więcej ocen tym bardziej stabilny wynik… Na Filmwebie ocena średnia stabilizuje się po zdaje się około 150-200 oddanych głosów (badałem, możecie zaufać).

Oceny według tour operatorów

Dokładnie taką samą tabelę możemy przygotować dla porównania tour operatorów:

Organizator n Średnia ocena
TUI 118 8.29
Neckermann 59 7.99
Grecos 89 7.91
Net Holiday 22 7.70
Mouzenidis Travel 80 7.53
Itaka 91 7.50
Easy Travel 4 7.47
Wezyr 99 7.47
Ecco Holiday 6 7.35
Orex Travel 26 7.35
Exim Tours 34 7.28
7islands 25 7.24
Rainbow 67 7.19
Prima Holiday 7 7.13
Sun&Fun 9 7.13
Onholidays 7 7.06
Millennium Travel 2 5.80

Najlepiej ocenianymi organizatorami są ci najwięksi gracze: TUI, Neckermann. Będziemy się im jeszcze przyglądać, spokojnie.

Zmiana cen w czasie

Teraz to co najciekawsze chyba – czy im bliżej wycieczki tym niższa jest jej cena?

Zwróć uwagę, że skala na osi Y dla każdego z wykresów jest inna – czasem cena spada o 1500 zł (patrz Peloponez), czasem tylko o 200 zł (Lesbos). Bez względu na różnicę w cenie wniosek jest jeden: im bliżej terminu wyjazdu tym niższa cena. Zatem istnieje coś takiego jak last minute i rzeczywiście z grubsza biorąc są to atrakcyjne cenowo oferty.

W każdym razie: na około 50-60 dni przed wycieczką cena zaczyna spadać.

Innym zagadnieniem jest to, czy pozostają jeszcze miejsca na upatrzonej wycieczce, czy też się wyprzedały…

Jak szybko znikają wycieczki?

Możemy to sprawdzić na podstawie liczby rezerwacji. Zobaczmy na totalu – skumulowana liczba rezerwacji dla wszystkich wycieczek w zależności od liczby dni przed wycieczką przedstawia się następująco:

Skala Y jest logarytmiczna dzięki czemu lepiej widać dynamikę. Co tutaj widać? Ano to, że im bliżej wycieczek tym mniej przybywa rezerwacji. Nie wiemy ile jest wszystkich miejsc (gdzie jest górna granica), ale zakładając, że na koniec wszystkie są sprzedane to będzie to około 10 milionów co jest liczbą zaskakującą. Najwięcej było 3047 rezerwacji dla jednej wycieczki, było to w dniu wyjazdu. Skąd więc 10 mln? Tę samą wycieczkę liczymy kilkadziesiąt razy, z różną liczbą rezerwacji dzień po dniu. I to jest pułapka albo i błąd.

Jeśli weźmiemy rozkład liczby rezerwacji w zależności od czasu przed wyjazdem, to wygląda on następująco:

i to jest bardziej prawdopodobne: na około 50 dni przed wycieczką albo dana impreza jest w całości wyprzedana i znika z ogłoszeń, albo pozostają jakieś spady.

Łączna liczba rezerwacji w dostępnych danego dnia wycieczkach wygląda następująco:

co może potwierdzać powyższą tezę. Ile jest dostępnych miejsc? Stawiałbym na okolice szczytu tego ostatniego wykresu, czyli jakieś 12-13 tysięcy (dla wybranych parametrów wyjazdu oczywiście).

Jak wybrać najlepszą wycieczkę?

Przede wszystkim musimy określić co jest dla nas ważne w wyborze wycieczki? Musimy ograniczyć się do posiadanych danych, a do wyboru mamy właściwie tylko trzy cechy liczbowe (ciągłe) opisujące wycieczki:

  • ocena hotelu
  • ocena wycieczki
  • cena

Dodatkowo możemy na podstawie tych cech wybrać najlepiej ocenianych tour operatorów, regiony, miejscowości czy nawet hotele (kolejne cztery cechy, tym razem kategoryczne). Zbudujmy więc prosty model oceny.

W pierwszej kolejności jednak przyda nam się funkcja normalizująca (dziwi mnie, że nie ma jej w standardowych bibliotekach R) – która cały zbiór liczb sprowadzi do zakresu 0-1.

Teraz policzmy średnie z ocen, ceny i liczby gwiazdek hotelu dla organizatorów i miejscowości (regionów co za tym idzie):

Wyliczone średnie zostały znormalizowane, a dodatkowo wyższą ocenę dostają wycieczki tańsze (stąd 1 – znormalizowana średnia cena). Ostatnie dwie linijki powyższego kodu to:

  • zbudowanie jednej wartości opisującej finalną ocenę – składa się na nią:
    • średnia z gwiazdek (z wagą 3)
    • średnia z ocen (z wagą 6)
    • średnia cena (z wagą 4)
    • oraz zlogarytmowana liczba wycieczek (z wagą 1). To ostatnie dlatego, że być może im więcej wycieczek tym bardziej atrakcyjne miejsce? Jakoś warto to uwzględnić
  • przypisanie oceny finalnej do przedziału co 0.1 punktu (przyda się za chwilę)

Na wykresie pokażmy zależność oceny finalnej od jakości hotelu (liczba jego gwiazdek) i oceny wycieczki:

Gdyby patrzyć tylko na ocenę wycieczki i hotelu interesowałyby nas te najlepsze – z górnej prawej strony. Ale dodatkowym kryterium jest cena, co odbija się w finalnej ocenie zaprezentowanej kolorem i rozmiarem punktu na wykresie. Najbardziej interesujące są więc najbardziej czerwone punkty, a im bardziej ten czerwony w prawo i w górę tym w sumie jeszcze lepiej.

Wykorzystajmy tak wyliczone oceny do wyboru najlepszych organizatorów:

Wykres pokazuje udział procentowy danej oceny (przypisanej do przedziału) dla poszczególnych organizatorów. I tak np. widzimy, że Sun & Fun w 2/3 dostaje oceny (te nasze finalne, według modelu) na poziomie 0.2-0.3 punktu. Interesującym organizatorem jest w moim odczuciu ktoś, kto ma oceny ponad 0.8, a więc:

W analogiczny sposób wybierzmy najlepiej ocenione (wg modelu) regiony:

Tutaj wybieramy trójkę z najlepszymi ocenami – są to:

Zobaczmy jeszcze w tabeli top 10 ocenianych (wg modelu) razem ze składowymi:

Organizator Region Miejscowość Ocena Średnia gwiazdki Średnia ocena wycieczki Średnia cena za osobę
TUI Kreta Hersonissos 1.0000000 4.142857 8.385714 0.6214625
TUI Kos Kardamena 0.9483807 4.583333 8.833333 0.7038263
Rainbow Kreta Chania 0.8339369 3.875000 7.175000 0.7981358
Wezyr Kreta Hersonissos 0.8330704 3.727273 7.236364 0.7267277
Grecos Rodos Faliraki 0.8235885 4.300000 8.020000 0.7792905
TUI Rodos Ixia 0.8171824 4.166667 8.433333 0.6987468
Grecos Kreta Hersonissos 0.7946298 4.100000 8.560000 0.7388209
Grecos Kos Psalidi 0.7924064 4.500000 8.275000 0.7730452
Orex Travel Kreta Hersonissos 0.7674433 3.875000 7.525000 0.7003341
TUI Rodos Faliraki 0.7560857 4.166667 8.133333 0.6703514

Widzimy, że regiony i organizatorzy pokrywają się z tym co wybraliśmy na podstawie wykresów. Dorzućmy jeszcze listę wybranych miast:

Teraz z wybranych regionów, miast i organizatorów wybieramy najlepszą ofertę spośród wszystkich wycieczek:

Organizator Region Miejscowość Nazwa hotelu Ocena Gwiazdki hotelu Ocena wycieczki Cena za osobę
Grecos Rodos Kiotari Princess Andriana 1.0000000 5.5 9.3 3930
Grecos Rodos Kiotari Mitsis Rodos Maris 0.9126209 5.0 8.7 3100
TUI Kreta Hersonissos Aldemar Cretan Village 0.9108498 4.5 9.2 2739
Rainbow Kreta Chania Kiani Beach 0.9074702 5.0 8.7 3127
Grecos Rodos Faliraki Mitsis Alila Resort & Spa 0.8677997 5.5 9.4 4520
TUI Rodos Ixia Atlantica Princess 0.8234121 4.5 9.1 3136
Rainbow Kreta Hersonissos The A Hotels Serita Beach Resort 0.7812270 5.0 8.0 3014
Rainbow Kreta Chania Kalyves Beach 0.7796192 4.5 8.4 2621
Grecos Rodos Faliraki Mitsis Faliraki Beach 0.7733796 5.0 8.8 3920
TUI Rodos Ixia Oceanis Park 0.7702580 4.0 9.7 2949

Wygrywa hotel Princess Andriana odwiedzony z Grecos – na Wakacje.pl była to jedna z ofert.

Czy ten model jest najlepszy? Może wagi nie są dobrane optymalnie? Warto popróbować zmienić wagi, może sposób ich liczenia (nie mnożyć a dodawać ważone składowe). Zaproponowałem jedno rozwiązanie, możecie wypracować inne.

Największy problem modelowania tego typu to brak informacji zwrotnej od uczestników konkretnych wycieczek. Bo nie do końca wiemy co oznacza ocena wycieczki w serwisie Wakacje.pl (może i oni gdzieś to tłumaczą, ale nie szukałem :P). Nie mamy prawdy, nie możemy uczyć i testować modelu, bo nie mamy punktu odniesienia. Ostatnio robię kilka takich projektów i to jest największy w nich problem: czy te liczby, które wychodzą są prawdziwe?

A gdyby tak nie z tour operatorem?

Abstrahując od tego wszystkiego – coś policzyliśmy, coś wybraliśmy. Średnia cena za osobę dla najlepszej wybranej wyżej wycieczki to prawie 4 tysiące złotych (obecnie cena jest niższa, ale jesteśmy po sezonie). Dla rodziny 2+2 to już robi się 16 tysięcy. Zgodnie z informacją w ofercie jest to 7 dni. W tym mamy przelot, zakwaterowanie, jedzenie i jakieś hotelowe atrakcje.

Jakby trochę przyjanuszyć i zorganizować wszystko na własną rękę mamy (wynik 30 minut szukania, można postarać się o wiele bardziej) – dla tygodniowej wizyty w Kiotari:

  • samolot z Warszawy w obie strony na Rodos dla gromady 2+2 kupiony teraz na 19-26 stycznia (czyli poza sezonem świątecznym i kupując bilety odpowiednio wcześnie) to około 2100 zł (z jedną przesiadką max 2h w Atenach na obu lotach)
  • wynajęcie samochodu typu Compact SUV na ten tydzień razem z dwoma fotelikami to jakieś 400 euro (wg sieci Avis) czyli powiedzmy 1750 zł. Samochód po to, aby dojechać na drugą stronę wyspy (z lotniska do Kiotari) i swobodnie się po niej poruszać
  • całe mieszkanie znalezione na AirBnB to niech będzie 300 zł za dobę (można i taniej) – 2100 zł
  • porównując ceny za pomocą MacIndex (lokalna cena Big Maca) mamy 3.84 euro w Grecji do 2.69 euro w Polsce, zatem możemy przyjąć że ceny są około 1.4 razy wyższe. Obiad dla rodziny 2+2 w Warszawie w przyzwoitej restauracji to powiedzmy 150-200 zł. Śniadanie i kolacja niech będzie drugie tyle (z rzeczy kupionych w sklepie). Daje to 600 zł (już po przeliczeniu na ceny greckie) na posiłki dziennie, 4200 zł na tydzień
  • w sumie mamy około 10 tysięcy zł, jakieś 2/3 ceny wycieczki

To wersja dla wolących wolność, nie lubiących hotelowych basenów zapchanych po brzegi. Osobiście wolę wyprawy na własną rękę niż z biurem podróży.

Szukanie na AirBnB to osobny rozdział. Na ten temat jest masa ciekawych tekstów w idei podobnych do powyższego, z w miarę nowych polecam Exploring & Machine Learning for Airbnb Listings in Toronto z przykładami w Pythonie.

Te wycieczki takie drogie… to ja może już zacznę zbierać na kolejne wakacje ;-). Jak zwykle zapraszam do polubienia fanpage’a Dane i Analizy.

W dodatku wycieczka może się nie udać i urlop zmarnowany. W takim przypadku można spróbować odzyskać pieniądze, pomocna może być na przykład kancelaria Kempa i Wspólnicy, która specjalizuje się w takich sprawach. Śledźcie ich fanpage, tam więcej o wakacjach z biurem podróży, bez stresu.

1 komentarz do wpisu “Wycieczki do Grecji”

  1. A czy nie jest tak, że cena wycieczki w okolicach wrzesnia spada ponieważ konczy sie sezon turystyczny w Grecji i ogolnie w Europie?
    Last minute to z tego co wiem okreslenie na wycieczke kupowana przez samym terminem wylotu, wiec moim zdaniem wnioski o oplacalnosci lastów moznaby wyciagac w szczycie sezonu , obserwujac po prostu cene wraz ze zblizajacym sie terminem.

Dodaj komentarz