Kde domov můj?

Interaktivní průvodce po výběru ideální lokality k bydlení v Praze

Kdedomovmuj
8 min readNov 29, 2020

Autorky projektu: Hana Cimbaláková a Anna Saidlová

Mentoři projektu: Jakub Balada, Matej Hamaš a Lucie Burišin z Apify

O projektu

Podle Talk Business stráví lidé pouhým hledáním inzerátů ideálního bydlení více jak hodinu denně. To je 23 hodin měsíčně a 276 hodin ročně.

Cílem našeho projektu proto bylo vytvořit průvodce, který uživateli pomůže zrychlit hledání nového bydlení v Praze. Při výběru se můžete rozhodovat podle těchto parametrů:

  • ceny bydlení (průměrná cena pronájmu nebo koupě na m2)
  • dostupnost MHD (počet unikátních zastávek na území)
  • podíl veřejně dostupné rekreační zeleně na plochu (v %)
  • dostupnost školek (počet na území)
  • počty dětských hřišť

Po nalezení vhodné čtvrti potom můžete přímo vybírat jednotlivé inzeráty (z Srealit), či si prohlédnout blízká dětská hřiště nebo školky. Zároveň jsou realitní data každý den aktualizována.

Kde domov můj?

Hledáme byt v Praze zn. Spěchá

Jako praktický příklad si můžete představit tuto situaci: Manželé Tyršovi se dvěma malými dětmi se rozhodli, že si najdou větší byt k pronájmu ve čtvrti, kde se ceny pohybují spíše v nižší kategorii. Do práce, kterou mají na Pankráci, by neradi dojížděli déle než 20 minut autem. V docházkové vzdálenosti (max 15 minut) chtějí mít park, školku, zastávku MHD.

Požadavky manželů Tyršových (použity fotky z pixabay.com a ikony z flaticon.com)

Na ceně záleží

Ať chceme, nebo ne, cena je výchozím parametrem při hledání bydlení. Proto jsou cenové mapy prodeje a pronájmů základními vrstvami našeho průvodce. To ocení i naše rodina Tyršových, která hledá pronájem bytu v Praze v nižších cenových kategoriích.

Průměrné ceny jsme vypočítaly pro jednotlivé inzeráty jako podíl ceny prodeje nebo pronájmu a celkové plochy daného bytu. V průvodci proto uvidíte průměrnou cenu za m2. Například na základě aktuálních dat je průměrná cena prodeje bytu v Praze 111 333 Kč/m2 a průměrná cena pronájmu bytu 308 Kč/m2.

Kdo hledá, ten najde

Tyršovi zaujala Písnice a po chvíli rozhodování zvolí tento pronájem. Splňuje totiž všechny jejich požadavky:

  • Písnice je v nižší cenové kategorii (funkce Filters(Filtry) > omezení hledání na nejnižší cenové kategorie pomocí slideru)
Vyfiltrování čtvrtí s nejlevnějším nájmem pomocí Filters (Filtry)
  • do práce na Pankráci jim bude trvat cesta autem 20 minut (Measure(Měření) > zvolte výchozí bod v mapě> vyberte požadovanou dojezdovou vzdálenost autem pomocí slideru)
Dojezdová vzdálenost autem z Pankráce pomocí Measure (Měření)
  • v docházkové vzdálenosti se nacházejí 3 školky, několik autobusových zastávek a několik parků (Measure(Měření) > vyberte výchozí bod v mapě> vyberte požadovanou docházkovou vzdálenost pomocí slideru)
Okolí inzerátu pomocí Measure (Měření)

Extract, Transform, Load, Sleep and Repeat

První věc, na které jsme se i s našimi mentory shodli, bylo, že nejlepším vizualizačním nástrojem pro náš projekt budou CleverMaps, díky svému zaměření na geolokační analýzy a tomu uzpůsobeným funkcím.

Samotná data jsme pak čerpaly z různých zdrojů (Apify web scraping, Golemio API, OpenStreetMap), proto i práce s každým datasetem byla trochu jiná.

Níže jen nastiňujeme některá úskalí, se kterými jsme se u jednotlivých datasetů potýkaly. Kompletní přehled, jak jsme postupovaly je naznačen v diagramu. Kódy všech transformací, které jsme prováděly v Pythonu(Pandasu) jsou zde.

  • Realitní data vycházejí z full web scrape stránky Sreality, který nám poskytl Apify. Největší výzvou bylo vymyslet jaká data z této masy (321 sloupců a 80.000 řádků) budeme pro projekt potřebovat a jakým způsobem je využijeme. Z původního datasetu vznikly po čištění, transformacích a joinování (vše v Keboole-Jupyter, Pandas) s územními jednotkami Prahy Clever Maps 3 nové datasety (markery s jednotlivými inzeráty prodeje a pronájmu bytů, průměrné ceny prodejů bytů a průměrné ceny pronájmů bytů). Poslední výzvou bylo nastavit správně orchestraci v Keboole na pravidelnou aktualizaci dat v Clever Maps. Při prvním spuštění orchestrace jsme byly napjaté jak kšandy, ale naštěstí vše fungovalo hladce.
  • Data o mateřských školkách jsme získaly pomocí Apify actoru na web scraping (zdrojová data), který jsme uzpůsobily našim potřebám. Tady jsme se poprvé, a naštěstí naposledy, setkali s velkou neznámou: JavaScriptem, RegExem a parsováním. Nejvíce času nám zabralo vymyslet ten správný RegEx, protože vždy se v datech objevila nějaká nepravidelnost, která dokázala celý scrape rozhodit. Získáná data jsme ještě museli očistit (Python, Pandas) a např. vyřadit všechny školky mimo území Prahy, které se v datasetu objevovaly. Nepořádek nám v datech dělaly také přebytečné mezery, nesrovnalosti v názvech kategorií školek a samozřejmě duplikáty. Poslední výzvou bylo získání GPS souřadnic jednotlivých školek, kterou jsme vyřešily přes Google Maps Geocoding Augmentation API (Keboola Geocoding Augmentation).
  • Data o hřištích a o zastávkách vychází z dat Golemio API, které jsme stahovaly přes generický extraktor v Keboole a vypadá takto. Data jsme získaly ve formátu GeoJSON, ale do CleverMaps se dají nahrávat jen data ve formátu csv, bylo tedy třeba je konvertovat. Problém s těmito daty ale byl, že se stáhly ve dvou souborech, v jednom podrobnosti a ve druhém souřadnice, které byly navíc všechny v jednom sloupci, bylo tedy třeba oddělit od sebe zeměpisnou délku a šířku a pak napojit na druhý soubor.
ukázka souboru se souřadnicemi
  • Data týkající se zeleně a markerů zastávek jsou pak získaná z OpenStreetMap pomocí API Overpass turbo, dotazování vypadá takto. Bylo také třeba vybrat, které tagy pro výběr použít, tak aby výsledkem byla jen veřejně přístupná rekreační zeleň. Nakonec jsme tedy zvolily tyto — ‘park’, ‘forest’, ’wood’, ’orchard’, ’village_green’, ’recreation_ground’, ‘grass’ a ’playground’.
  • Cesta k zobrazení polygonů v CleverMaps je dost členitá, je potřeba nejdřív data převést na csv s WKT, na to jsme využily tuto službu, tato data pak přes aplikaci (Mapbox utils) v Keboole nahrát do Mapbox, přes další aplikaci v Keboole (Spatial utils) k datům přiřadit bounding boxy a tento dataset pak v CleverMaps odkázat na data uložená v Mapbox.
  • S vytvořením datasetu s podíly zeleně nám hodně pomohl náš mentor Matěj, protože jeho získání vyžadovalo použití knihoven Shapely a Geopandas, kdy bylo potřeba vypočítat průsečíky polygonů zeleně s administrativními jednotkami.
Postup při získávání a zpracování dat
Postup získávání a transformace dat všech našich datasetů

Ukázka práce s CleverMaps:

Vlevo — jeden z pomocných JSONů pro zobrazení dat v CleverMaps, vpravo: práce v CleverMaps shellu

Ta umí to a ta zas tohle, ale dohromady uděláme moc

Hanka

Hned od okamžiku, kdy jsme se trochu v projektu rozkoukaly, bylo jasné, že nemůžeme každá být u všeho. A tak zatímco Anička začala obstarávat první data, já jsem se vrhla na studium tutoriálů pro práci s CleverMaps. Ty totiž na rozdíl od jiných vizualizačních platforem nepracují systémem drag&drop, ale v shellu ovládaném přes příkazovou řádku. Pro samotné zobrazování je pak nutné vytvářet pomocné JSON soubory, ve kterých se specifikuje, jak co bude na mapě vypadat.

Ve chvíli, kdy jsem přestala panikařit při každé chybové hlášce, která se mi objevila, a tím pádem jsme byly schopné začít zobrazovat naše data v CleverMaps, jsem pak začala pracovat na vlastních datasetech od získání dat (přes API overpass turbo nebo Golemio API přes Keboolu), transformace a čištění v Pandasu, potřebné úpravy v aplikacích v Keboole (AreaMapper, Mapbox utils, Spatial utils) až k samotnému zobrazení v CleverMaps.

Anička

Zatímco Hanka objevovala záhady Clever Maps, já jsem se vrhla na náš základní dataset-full scrape Srealit. Po prvotním zděšení jsem se v datech zorientovala a dokázala vymyslet, jak je využít pro náš projekt. Když jsem se někde zasekla, daly jsme s Hankou hlavy dohromody a rozlouskly to. S Keboolou jsme se stali velcí kamarádi a vyřešila jsem v nich vše potřebné pro tuto vrstvu, včetně pravidelné aktualizace dat.

Po vyřešení základního datasetu, jsem se věnovala především získání a vizualizaci dat o mateřských školkách (Apify Web Scraping Actor), seznámila jsem se s JavaScriptem, Regexem a parsováním a to byla teprve pořádná výzva! Třešničkou na dortu už potom bylo vyřešit jak zpřístupnit projekt veřejnosti, vytvoření videa a grafiky.

Tak tedy, kde domov můj?

Jak jsme se snažily přiblížit výše, náš průvodce má především praktické využití, a je tak na preferencích každého, která lokalita pro něj bude ta nejlepší. Pokud bychom ale chtěly udělat z našich dat nějaké závěry, pak to, že nejvyšší ceny nemovitostí jsou nepřekvapivě v centrálních částech Prahy a směrem k okrajům klesají, v těchto oblastech je ale zase obvykle horší dostupnost MHD, i vybavenost školkami a hřišti. Jako ideální čtvrti z pohledu “cena-výkon”, tedy takové, kde jsou ceny bydlení nižší, ale vybavenost sledovanými parametry co nejvyšší pak vychází Stodůlky a Chodov.

Cenová mapa Prahy v CleverMaps
Filtrování v CleverMaps

Index expozice

Jako doplněk k utvoření obrazu o dané lokalitě pak poslouží druhá mapa s tzv. indexem expozice (hamburger menu>Project page > Index expozice), k němuž jsme podklady získaly přímo od CleverMaps. Je zde možné sledovat koncentraci služeb jako celek nebo po kategoriích.

výběr mapy
index expozice

Budoucnost projektu

Vzhledem k časovému omezení, jsme nakonec celé téma pojaly jako pilotní projekt a zacílili především na mladé rodiny s dětmi. Je samozřejmě jasné, že co může být důležité při výběru bydlení pro nastávající rodiče, nemusí hrát žádnou roli pro např. pro manžele před důchodem nebo pro studenty. Celý koncept je tak možné rozšířit, aby dostupné parametry výběru uspokojovaly potřeby všech skupin uživatelů. Parametrů, které by se daly použít je nepřeberné množství od kriminality, dostupnosti kulturních zařízení, barů, restaurací, obchodních řetězců, dostupnosti lékařské péče, kvality ovzduší atp. Také jsme použily jen data z Sreality, pro ještě větší přehled o realitním trhu by bylo možné použít i data dalších realitních webů.

Zároveň jsme se v projektu nezabývaly jiným typem nemovitostí, než byty. Další možností rozvoje projektu je rozšíření na větší území (např. realitní data máme už nyní pro celou ČR).

Ale v této podobě již nyní může sloužit všem rodinám hledajícím bydlení v Praze a je veřejně přístupný na našem webu kdedomovmuj.umaka.cz/

Poděkování

Chtěly bychom moc poděkovat našim mentorům Jakubovi Baladovi, Matejovi Hamašovi a Lucii Burišin z Apify za skvělou podporu, pomoc a spoustu nápadů, jak náš projekt udělat lepším. Velké díky také patří Tomáši Shmidlovi z CleverMaps za neúnavné odpovídání na všechny naše dotazy a tipy na vylepšení.

--

--