Analýza trhu IT v České republice - příklad automatizované těžby dat a jejich zpracování
Základním úkolem těchto zadání je posbírat nestrukturovaná data, provést jejich zpracování, vyhodnotit je a prezentovat výsledek jednoduchou formou, ideálně pomocí obrázků.
Úvod
Pro vlastní potřeby HELIsmile jsme se rozhodli provést analýzu trhu IT. Důvod byl celkem prostý, pro naše nabídky jsme potřebovali zjistit popularitu jednotlivých IT technologií a „buzzwordů“, navíc by se nám hodilo i zjištění, jak je na tom trh s poptávkou na „data“. Jak to ale provést?
Dobrý obraz o poptávce na trhu budou určitě představovat inzeráty pracovních nabídek na „vývoj IT systémů“. Poptávané technologie se v nich objeví ve větším množství. Nikdo přece nebude nabírat zaměstnance „do zásoby“ na technologie, pro které nemá zákazníky a poptávku. Technologie zmiňované v inzerátech by tedy měly dobře korelovat s popularitou jednotlivých technologií v praxi.
Provedení
V důsledku naších předchozích bohatých zkušeností z datových analýz máme už vytvořené některé potřebné nástroje v Pythonu, Rku a v C#, tak vzhůru do analýzy.
Jako zdroj dat jsme si vybrali portál Jobs.cz. Měl by být největší a nejznámější pracovní portál v ČR (https://video.aktualne.cz/nejvetsi-karierni-portal-v-cr-jobscz-slavi-20-let/r~f9f923a6f4b111e5b8100025900fea04/ ). Samozřejmě, že portál námi požadované údaje neobsahuje a nedodá nám je (nebo dodá a za drahé peníze). Musíme si tedy pomoci sami.
Web crawler
Prvním úkolem tak bylo stáhnout veškeré inzeráty pro lokální zpracování. V Pythonu by to měla být hračka… Stačí přece jenom projít všechny stránky „nadpisů“ inzerátů z https://www.jobs.cz/prace/is-it-vyvoj-aplikaci-a-systemu/, následovat URL, stáhnout každý inzerát a zanalyzovat je pak na klíčová slova. Těch máme necelých třicet, kromě IT technologií nás zajímají i obecnější slova typu „Programátor“, „Admin“ (a jejich různé varianty), „Data“, „Big data“, „Linux“, „Windows“ a pak jednotlivé programátorské technologie (viz vyhodnocení).
Všechno šlo jak na drátkách, program pro parsování stránek jsem vytvořil, jednotlivé inzeráty stáhl, ale vyskytl se drobný problém. Náš jednoduchý robotek stránky inzerátů sice stahoval, ale některé byly prázdné… Problém je v tom, že dnes už nestačí stáhnout pouze HTML kód, některé „osvícené“ firmy text inzerátu „efektně“ zobrazí až následně pomocí klientského Javascriptu… Takže cvičení v programování navíc, přilinkovat jádro prohlížeče, interpretovat takovou stránku a stáhnout výsledek.
Analýza
Stažené inzeráty (bylo jich kolem dvou tisíc) pak stačilo očistit od všech nepotřebných tagů typu style a skript (jinak budeme mít spoustu falešných pozitivit na C a R, což jsou celkem populární IT technologie), s.r.o. (díky tomu se Rko stalo v první verzi jedním z nejpopulárnějších jazyků) atd. Samozřejmě výsledky je nutné brát s rezervou, jde ve skutečnosti pouze o popularitu „slov“ (štítků) v inzerátech na vývoj v IT, navíc se při strojové analýze textů můžou vyskytnout neočekávané chyby, například Basic může být i v anglicky psaném inzerátu jako „basic knowledge“ (při hledání pro zjednodušení nerozlišujeme velikost písmen).
Druhým, celkem jednoduchým, úkolem bylo dodat kraj podle názvu obce. N/A v krajích znamená, že se to nepodařilo, pod touto značkou jsou poptávky pro zahraničí, nebo obsahují pouze okres atd. Vzhledem k jejich počtu (celkem 18 z 2163, z toho je několik pro zahraničí), jsem neplatné kraje dál nijak neřešil.
Výsledky
Prvním překvapením byla naprostá dominance Prahy, 60% všech pracovních nabídek je pouze z hlavního města (tab „Inzeráty_podle_krajů“). Naše Morava celkem zaostává, Brno má 18% a „proměněná“ Ostrava s IT (https://www.seznamzpravy.cz/clanek/promena-ostravska-it-misto-tezkeho-prumyslu-a-zamestnanci-z-ciziny-36394) pouhých 6%. O zbývajících krajích tak nemá moc cenu mluvit, zbývá na ně pouze 15%. Vzhledem k našemu moravskému patriotismu jsem dál zařazoval dva kraje z Moravy, náš sídelní Olomoucký kraj a sousední Zlínský.
Prakticky používané a poptávané technologie tak velkým překvapením nejsou. Vzhledem k převaze databázových aplikací v zakázkovém vývoji je nejpopulárnější technologický „štítek“ „SQL“ (tab „Štítky_celkově“ a „Štítky_podle_krajů“), který je naprosto nezávislý na použitém programovacím jazyku (SQL může být vyžadováno pro programátory v Javě, C#, PHP nebo i Pythonu).
Zastoupení databázových serverů možná mírně překvapí. Nejvíc komerční Oracle (hledaný i pomocí zkratky PL/SQL), za ním komerční MS SQL a až pak volně dostupné databáze (PostgreSQL, MySQL/MariaDB).
Z programovacích jazyků je nejčastěji zmiňovaná Java, Javascript a C#. Možná všechno souvisí s rozvojem aplikací pro banky, mají poměrně velkou poptávku (viz tab „Firmy podle inzerátů“)
Překvapením (aspoň pro mě) je naopak popularita Pythonu, nečekal jsem, že předstihne zastoupení HTML a PHP. Dokonce bylo v inzerátech i několik zmínek o námi využívaném statistickém programovacím jazyku R, ale podle očekávání je to okrajová záležitost. R je daleko populárnější v akademické sféře.
Pro testování našeho rozhraní nad R jsem vyzkoušel i jednoduché testování hypotéz, zajímalo mě, jestli se signifikantně liší zastoupení jednotlivých technologií v krajích (tab „Hypotézy“). Testoval jsem pomocí standardního χ2 testu a pomocí „exact“ Monte-Carlo metody s 50 000 opakování. V první tabulce je test „rozdílu“ přes všechny kraje, v druhé jsou porovnány dvojice některých krajů, srovnával jsem Moravu s Prahou. Čím tmavší barva, tím je rozdíl více signifikantní. Samozřejmě výsledky jsou nekorigované na mnohonásobné porovnání, takže obsahují plno falešných pozitivit. Celý tab „Hypotézy“ je tak spíše pro zajímavost a pro testování našeho rozhraní nad R.
Pro zajímavost je i tab WordCloud, kde je graficky vidět popularita jednotlivých technologií (bez příliš obecných slov typu SQL, data atd.). Prý je to velmi oblíbené v marketingu…
Závěr
Všechny nástroje pro analýzu jsou vytvořené, není tak problém je spustit za pár měsíců znova a sledovat změny IT trendů. Náznak je vidět na tabu „Štítky_celkově“, první data jsem měl z 31. 10. 2019.