Analýza realitního trhu v ČR

Edita Čížková
13 min readJun 7, 2020

V rámci semestrálního kurzu Digitální akademie jsme dostaly za úkol zpracovat projekt na jakékoliv téma. Musím přiznat, že volba tématu nebyla nijak jednoduchá, protože jsme s mou parťačkou Luckou měly hned několik možností. Od robotického zpracování zákaznických dat v drogistické společnosti, přes pomoc kamarádce s analýzou dat v Avonu, jsme se dostaly až k realitnímu trhu, který nám s Luckou byl nějak nejbližší. Obě jsme si totiž v nedávné době hledáním vhodné nemovitosti prošly.

Původně jsme zamýšlely vytvoření interaktivní mapy, kde by koncový uživatel našel na mapě kompletní nabídku realitních kanceláří. To nám přišlo jako něco, co by bylo opravdu WOW. Nicméně při Meet Your Mentor přišlo rozčarování, kdy jsme se dozvěděly, že něco takového již existuje. Tématu realit jsme se ale nehodlaly vzdát.

ZAČÍNÁME S PROJEKTEM

V průběhu týdne jsme se poprvé spojily s našimi mentory, kteří nám hned ochotně poskytli data a spoustu rad. Vypracovaly jsme Project Charter se všemi důležitými milníky a pustily se do práce.

Jako první jsme se dohodly, jakému tématu bychom se chtěly konkrétně věnovat, protože možností využití realitních dat je opravdu hodně. Vzhledem k tomu, že jsme obě ještě nedávno nemovitost ke koupi hledaly nás nejvíce zajímalo, jak působí různé ekonomické faktory na trh s nemovistostmi a zároveň, jaký vliv budou mít na opatření spojená s Covid-19 na pronájem bytů.

Na základě toho jsme si stanovily hypotézy:

Hypotéza č. 1:

“Úroková sazba a regulace hypoték mají vliv na cenu a prodeje nemovitostí.”

Hypotéza č. 2:

“V návaznosti na opatření spojené s virovou pandemií dochází ke zvýšení nabídky nemovitostí k pronájmu a zároveň snížení jejich nabízené ceny”

Zároveň bylo potřeba vybrat realitní portály, na které budeme analýzu aplikovat. Původně jsme vybraly Sreality.cz, Reality.idnes.cz a Bezrelitky.cz. Nicméně jak jsme později zjistily, Reality.idnes.cz nevyhovovaly jako vhodný portál pro naši analýzu. Proto jsme je nahradily portálem Realitymix.cz. Proč jsme se tak rozhodly se dočtete v části blogu, kde se budu věnovat podrobněji celkovému postupu analýzy.

VÝSTUPY

Abychom byly schopny potvrdit či vyvrátit první z hypotéz, vytvořily jsme si tyto grafy.

ČNB

V prvotní chvíli, když jsem si prohlédla výsledný graf, jsem měla radost z toho, jak je v grafu krásně vidět, že se nákupní chování opravdu mění na základě regulací ČNB.

Raději jsme data ještě zkontrolovaly a zjistily, že velký nárůst prodejů v období srpna 2018 na Sreality je způsoben něčím jiným. Vycházely jsme z logiky, kde ukončený inzerát = prodej. Nicméně v období od dubna 2018 do července 2018 byl na Sreality uzavřen pouze 1 inzerát, což znamená, že v srpnu se pravděpodobně zavřely inzeráty za všechny tyto měsíce.

Tento výkyv v datech připisujeme vývoji nového softwaru pro Sreality. Podrobný článek ohledně tohoto updatu naleznete zde.

I přes tuto chybu v datech je vidět, že regulace ČNB ovlivňují nákupní chování a to zejména při změně výše LTV (Loan to Value) na 80 %. V období před vstupem této vyhlášky v platnost evidujeme nárůst prodejů.

Co se týče ciltivosti ceny na regulace ČNB, nemůžeme hypotézu potvrdit. I když by se mohlo zdát, že nám cena po zvýšení DTI (Debt to Income) a DSTI (Debt Service to Income) v říjnu 2018 opravdu klesá, připisuji důvod spíše rostoucímu úroku, který byl ve sledovaném období na vrcholu a dosahoval pomyslné hranice 3 %.

Regulace ČNB vs. cena
Průměrná cena vs. úroková sazba

Při celkovém pohledu na působění jednotlivých faktorů i tak hypotézu č. 1 potvrzujeme.

“Úroková sazba a regulace hypoték mají vliv na cenu a prodeje nemovitostí.”

COVID

Další zajímavou analýzou byl vývoj ceny a počtu inzerátů v období koronaviru.

V grafu níže je krásně vidět, jak krátce po vyhlášení zákazu vstupu cizinců na území ČR výrazně vzrost počet nabídek k pronájmu na všech sledovaných portálech.

Celkový počet nabídek k pronájmu
Počet nabídek bytů k pronájmu v Praze

Co mě ale překvapilo bylo to, že se výrazně zvýšila i nabídka domů k pronájmu v mimopražských oblastech a to zejména na portále Bezrealitky.

Počet nabídek domů k pronájmu mimo Prahu a Brno

Tento trend přikládám za následek tomu, že jsou pronajímány i chaty nebo domy v turistických oblastech, které před vyhlášením zákazu byly pronajímány zejména cizincům.

Zajímavý je i vývoj ceny, který je nejvíce znatelný u nabídky bytů v Praze.

Průměrná cena pronájmu bytů v Praze

Na první pohled člověka nejvíce zaujme značný nárůst ceny v týden vyhlášení zákazu a u Realitymixu týden před. Nicméně jsem zjistila, že v této době bylo přidáno extrémně málo nabídek a zároveň bylo přidáno více velkých bytů v Praze, které se pronajímají za nestandardně vysoké ceny.

Pro srovnání:

Týden od 16.3.2020 — počet inzerátů 273

Týden od 16.3.2020 — počet inzerátů 273 (Sreality)

Týden od 2.3.2020 — počet inzerátů 683

Týden od 2.3.2020 — počet inzerátů 683 (Sreality)

Pokud se tedy odprostíme od tohoto výkyvu, je vidět, že cena pronájmů v Praze opravdu klesá.

Průměrná cena pronájmu bytů v Praze

Hypotézu č. 2 také potvrzujeme.

“V návaznosti na opatření spojené s virovou pandemií dochází ke zvýšení nabídky nemovitostí k pronájmu a zároveň snížení jejich nabízené ceny”

MOJE NEJOBLÍBENĚJŠÍ VIZUALIZACE

Protože nás analýza opravdu bavila, nechtěly jsme se omezovat jen na hypotézy a zkusily jsme analýzu obohatit ještě o něco navíc.

Vytvořily jsme tedy vizualizaci, která vypadá sice jednoduše, ale dala nám opravdu zabrat. Dlouho jsme si lámaly hlavu s tím, jak “nacpat” tolik informací do jedné vizualizace, aby se v tom vyznal i někdo jiný než my. (Děkuji manželovi, že zvládl trpělivě hodnotit všechny verze :) )

Původně jsme zkoušely různé obměny sloupcových grafů, ale vlastně se z grafu nedalo nic vyčíst. Nakonec jsme vymyslely jakýsi hybrid, který je vlastně něco mezi tabulkou a sloupcovým grafem.

V řádcích máme přehledně rozděleny jednotlivé realitní portály a dispozice bytů. Ve sloupcích máme počty dnů, po které byly inzeráty v nabídce. Šířka barevného sloupce znázorňuje, kolik bytů se pronajalo v dané dispozici a v určitém časovém rozmezí včetně průměrné nájemní ceny těchto nemovitostí v tis. Kč.

A k čemu je vlastně tento graf dobrý?

Příklad 1:

Pokud si přestavím, že jsem majitelka bytu 2+kk v Praze. Nájemníci vypověděli nájemní smlouvu, protože si koupili vlastní byt. Vím, že jim za dva měsíce končí smlouva, takže mám dost času a nevadí mi, když byt pronajmu třeba až za 3 měsíce. V tabulce vidím, že nejlépe pronajímá byty protál Sreality, protože má očividně nejvíce pronajatých nemovitostí a zároveň dokáže pronajmout za vyšší cenu danou dispozici jednotky než ostatní portály. Vzhledem k tomu, že na pronájem nepospíchám, nastavím si cenu zatím mezi 18–19 tis. Kč, za kterou bych měla byt pronajmout v požadovaném časovém horizontu. Pokud by se pronájem nedařil, můžu případně cenu později snížit.

Příklad 2:

Právě jsem se přestěhovala do Prahy a sestřenice mi nabídla bydlení na pár týdnů než si něco najdu. Nechci sestřenici dlouho obtěžovat, proto bych chtěla bydlení sehnat co nejrychleji, ale zároveň je pro mě důležitá nízká cena. Vidím, že cena 1+kk nebo 1+1 v Praze by se měla pohybovat mezi 11–13 tis. Kč. Proto si nastavím hlídacího psa na limit ceny 13.000 Kč.

Zároveň je ve vizualizaci možné sledovat, jak se vyvíjely ceny po kvratálech od začátku roku 2017.

Co by bylo ještě případně možné doplnit po akademii?

Rozhodně by stálo za to dle PSČ rozdělit celou republiku na konkrétní města a kraje, aby si každý našel oblast, kterou potřebuje.

CESTA K VÝSLEDKŮM

Data jsme nahrávaly pomocí extractorů přímo z databáze Apify a Google Sheets, kam jsme si předem připravily data z internetu o různých ekonomických ukazetelích.

První problém přišel již při nahrávání dat portálu Reality.idnes.cz do Kebooly, kdy nám Keboola vyhodila hlášku, že není schopna pracovat se souborem obsahujícím sloupce se shodnými jmény. Keboola totiž nerozlišuje velká a malá písmena.

Error message

Zkoušely jsme problém vyřešit svépomocí, ale dataset byl tak velký, že v žádném nám doposud známém nástroji se nepodařilo problém vyřešit.

Požádaly jsme o pomoc mentory, kteří nám doporučili program Sublime. Sublime jsme úspěšně stáhly a nainstalovaly a vše se zdálo být na dobré cestě. Názvy sloupců se podařilo v programu opravit a uložit finální soubor jako .csv.

Sublime — Duplicitní sloupce

Jak se nakonec ukázalo, bohužel ani tak jsme ještě neměly vyhráno, protože Keboola nebyla schopna tak velký .csv soubor pojmout (limit 5 GB).

Mentorka Lucka nám ještě poradila dataset “rozstříhat” na malé části a nahrávat postupně. Ani to nás nezachránilo. Naštěstí jsme zkusily nahrát data do AWS databáze, kde se podařilo upravit názvy sloupců a data jsme konečně nahrály do Kebooly. Huráááá.

MÁME DATA V KEBOOLE

Popis atributů jsme měly sice od mentorky Lucky již připravený na samotném začátku (názvy sloupců, popis a datové typy), ale poprvé jsme se mohly na data podívat pořádně a trochu si je “osahat”.

Z celkových 64 sloupců jsme si vybraly 19, které se nám zdály vhodné pro účely naší analýzy. (Ve výsledku jsme jich ale použily cca 10 :) )

SQL

V Keboole jsme si vytvořily Sandbox a začaly připravovat kód pro transormaci našich dat. Největší problém jsme měly jak jinak než s datumy.

První jsme vyřešily pomocí kódu, který SQL připomíná jen vzdáleně. Každopádně jsme zužitkovaly i znalosti pythnu. A k naší spokojenosti kód i tak fungoval. :)

Magic — link

Další boje s daty nám už pomohla vyřešit naše skvělá Snowflaková královna Verča Pešková během Hackathonu a náš kód vypadá již trochu elegantněji.

Datumy — link

Data jsme čistily i na základě dalších parametrů. Jeden z nich se týkal i našeho duplikovaného sloupečku. Oba sloupečky totiž znamenaly to samé, pouze v nějakém období byl sloupec pojmenovaný s malým “t” a v dalším období s velkým “T”. Potřebovaly jsme tedy tyto sloupečky spojit v jeden.

data_SubType — link

Zároveň díky definování datových typů jsme odhalily další chyby v datech.

  1. Cena u některých inzerátů byla v nepoužitelném formátu.

Tento problém jsme se rozhodly řešit tím, že jsme našly společný identifikátor špatně zadané ceny. Potom jsme nesmyslnou nebo nevyplněnou cenu nahradily 0. Neovlivníme tak počet inzerátů v analýze. Pouze v analýzách zahrnujících cenu inzerátů musíme vždy odfiltrovat cenu s nulovou hodnotou.

Problém s cenou — link

2. Ve sloupci s dispozicemi nemovitostí jsme našly nesprávně uvedené části měst.

Situaci jsme řešily podobně jako u problému s cenou.

Problém s dispozicí — link

Musím podotknout, že všechny tyto chyby se vztahovaly opět k datům z portálu Reality.idnes.cz.

Když data byla v pořádku připravena k dalšímu použití, tak za pomoci transformací jsme začaly pracovat na výstupních tabulkách.

TRANSFORMACE

Vzhledem k tomu, že jsme už před tím zkoušely vytvořit testovací tabulky, dostala jsem se k dalšímu problému.

Error

Trvalo mi poměrně dlouho, než jsem zjistila, že nejprve musím původní tabulky vymazat, aby se mi tabulka nahrála, protože jsem použila jiné sloupce než byly nahrané původně.

Potom už stačilo jen vytvořit writer a připravit data na transfer do Tableau.

TABLEAU — PŘÍPRAVA DAT

Data se nám podařilo napojit na Keboolu přes Snowflake poměrně snadno.

Napojení databáze v Tableau
Přihlašovací údaje z Kebooly
Data v Tableau

Co nám ale vrtalo hlavou bylo, jak napojíme jednotlivé realitní portály na další tabulky.

Napadlo nás zdrojová data duplikovat a z každé kopie připravit kompletní data set pro každý realitní portál.

Řešení by se sice použít dalo, nicméně při analýzách, kde bychom porovnávaly realitní kanceláře by nebylo možné vizualizace propojit.

Rozhodly jsme se proto spojit s Billigence, aby nám s daty pomohli.

Kluci byli skvělí a během 30 minut jsme měly perfektní řešení na míru našemu projektu.

Řešení bylo takové, že se realitní kanceláře napojí pod sebe pomocí union a k nim si přes joiny napojíme další tabulky.

Union

Díky klukům se nám podařilo vytvořit tento krásný a čistý datový model.

Datový model

ANALÝZY V TABLEAU

Hned jak jsme měly data připravená v Tableau, zkusily jsme prvních několik vizualizací. Na základě toho jsme zjistily, že Reality.idnes.cz pro nás nebudou ideálním realitním portálem, protože data byla velmi podobná dění na Sreality. Proto jsme došly k závěru, že tyto dva realitní portály obsahují stejné inzeráty, jen Sreality mají nějaké navíc.

Počty přidaných inzerátů

Mimo to jsme na Reality.idnes.cz zaznamenaly velký výkyv viz. graf výše. Připisujeme ho tomu, že na portále pravděpodobně probíhala nějaká aktualizace v dubnu 2018, kdy nebyl přidaný téměř žádný inzerát, a proto byly v květnu nahrány inzeráty za oba měsíce.

Požádaly jsme mentory o další realitní portály, abychom vybraly ten, který nejlépe poslouží naší analýze. Výsledkem je tedy analýza 3 realitních portálů, čímž jsou Sreality.cz, Realitymix.cz a Bezrealitky.cz, které se nám zdály nejvíce rozdílené.

Sreality reprezentují jeden z největších realitních portálů v ČR. Zároveň Sreality a Realitymix jsou spravovány převážně realitními makléři, čemuž odpovídá přidávání inzerátů převážně v pracovních dnech. Opakem jsou potom Bezrealitky, kde inzeráty přidávají zejména běžní uživatelé a jedná se o spíše menší realitní portál.

Po provedení prvních vizualizací jsem si uvědomila, že nejsem úplně spokojená s barvami a zároveň jsem chtěla barvy sjednotit pro jednodušší orientaci v grafech. Požádala jsem tedy mentory o jejich firmení barvy. Po nějaké době neúspěšného hledání konkrétních barev v Tableau jsem se rozhodla najít odpovědi na Googlu. Na základě toho jsem byla schopna přidat přímo Apify barevnou paletu do nastavení Tableau pomocí kódu. (Přesný návod naleznete zde.)

Nastavení barev v Tableau

Po uložení tohoto nastavení se mi přímo v aplikaci Tableau zobrazily mnou definované palety barev.

Collor Pallettes Apify

Nebudu lhát. Po nastavení barev pomocí kódu jsem se cítila asi takhle. :D

Like a boss

V průběhu vizualizace jsme se každopádně ještě potrápily. Po zkonstruování grafů jsme se mnohokrát setkaly s tím, že jsme objevily nesrovnalosti v datech, které bylo potřeba ještě doladit zpět v SQL.

Při práci s jednotlivými sheety jsme vytvořily několik dalších sloupců, kde jsme využily groupování, calculated columns nebo jsme jen změnily položky ve sloupcích pomocí aliasů. Jednou z těchto úprav bylo například převedení různých měn na CZK.

Bylo potřeba doladit ještě spoustu detailů v každém jednotlivém sheetu a dashboardu tak, aby analýzy na sebe navazovaly a vycházely ze stejné logiky a pro uživatele tak nebylo těžké vizualizace snadno pochopit.

Pro výsledný workbook jsme se rozhodly udělat jeden z dashboardů bez jakýchkoli grafů. Pouze jako jakýsi úvod, odkud se kliknutím na logo Apify uživatel dostane na konkrétní dashboard, který ho zajímá.

Intro

Jak je vidět na Intro Dashboardu (link), vybraly jsme 8 vizualizací, které se nám zdály nejzajímavější a zároveň odpovídaly na naše předem stanovené hypotézy.

Jedním z Dashboardů je i vliv regulací ČNB na prodej nemovitostí. Zde bylo potřeba do grafu zapracovat konkrétní milníky.

ČNB

Původně jsme měly milníky v grafech pouze jako komentáře na osách v grafu, což nebylo ale šťastné řešení, protože jsme plánovaly používat i filtry. Při použití filtru se nám ale komentáře ztrácely. Vzpomněla jsem si na rady Verči z hackathonu, jak se dá tento problém řešit.

V Google Sheets jsem si vytvořila další tabulku s milníky, kterou jsem přes Keboolu nahrála do Tableau a pomocí joinů napojila na ostatní data.

Při samotné vizualizaci jsem tak byla schopna z milníku vytvořit duální osu, kde jsem zvolila sloupcový typ grafu a co nejvíce sloupce zúžila. V tuto chvíli byla data napojena přes datum vytvoření inzerátu.

Když jsem se rozhodla připravit graf s prodeji narazila jsem na problém, že se mi data správně nespárovala a každý milník se mi v grafu zobrazoval několikrát. Musela jsem v SQL připravit další sloupec, který reprezentoval měsíce ukončení inzerátů. Na ten jsem napojila tabulku s milníky znovu, takže v datovém modelu byly joinované dvakrát, ale pokaždé na základě jiných kritérií. (Vytvořeno/ ukončeno)

Datový model

ZÁVĚR

“Malý krok pro lidstvo, velký skok pro člověka.”

Tuhle větu jsem nedávno slyšela a přijde mi, že přesně vystihuje mé působení v DA. Na začátku DA jsem byla ráda, že zvládnu práci s Excelem a ani ve snu by mě nenapadlo, že na konci akademie budu schopná práce se soubory o milionech řádků. Že SQL mi bude připadat jako psaní funkcí v právě v excelu. A že zvládnu napsat program v Pythonu. A to je vlastně celé jenom začátek.

Samozřejmě jsem si prošla svými ups and downs momenty, kdy už jsem nechtěla projekt ani vidět a chtěla jsem jen spát nebo jít do přírody. Místo toho jsem se vzbudila v sobotu v 6 ráno, uvařila kafe a ladila dashboardy.

Každopádně jsem moc vděčná za tuhle příležitost, protože mám pocit, že mě opravdu posunula hodně kupředu. A díky projektu samotnému jsem si měla možnost vše pořádně vyzkoušet v praxi.

Závěrem bych chtěla moc poděkovat mentorům z Apify.cz — Kubovi, Lucce a Kačce, kteří nám neskutečně pomáhali a hlavně nás i motivovali, abychom to dotáhly do konce. MOC DĚKUJEME :)

Finální Tableau Public dashboard k náhlédnutí zde.

Finální SQL kód k nahlédnutí zde.

--

--