Kdo si hraje, nezlobí

aneb hodnocení výkonnosti sítě hračkářství

Autorky: Tereza Froňková a Kamila Vondráčková
Mentoři: Daniel Čentíš a Michala Hyrčová (Accenture)

Naše růžové czechITas umění jsme se rozhodly zúročit na situaci z reálného byznysu. Vytyčily jsme si nelehký úkol konkurovat strategickému rozhodování dvou svéhlavých majitelů hračkárenské sítě. V jakém stavu je jejich pobočková síť? Do kterých měst je ještě možné umístit nové prodejny?

Začátek příběhu se datuje do počátku 90. let. Terky strejda jezdil na pravidelné služební cesty do Německa a Rakouska. Za pracovní diety kupoval modely letadýlek a doma je přeprodával známým.

Rok se s rokem sešel, je rok 2020, a jeho aktivity se postupně přesunuly z babiččiny garáže do vlastního velkoskladu. Je majitelem maloobchodní sítě hračkáren, kterou si Terka s Kamčou vyhlédly jako objekt svého podzimního Czechitas hloubání.

Situace na trhu hraček se za posledních několik let poměrně změnila. Děti si od určitého věku hrají jenom s telefonem, tabletem nebo počítačem. Část trhu se postupně přesouvá výhradně na internet. Kamenné obchody stále fungují, ale skladba klientely a jejich nákupních košíků se postupně mění.

Vzhledem k aktuální nelehké situaci s Covidem bude pravděpodobně potřeba výrazně změnit podobu prodejen. Největší tržby jsou každoročně pouze před Vánoci. Pokud obchody přijdou o tyto tržby v roce 2020, budou některé z nich na hranici udržitelnosti. Pravděpodobně dojde na lámání chleba, kdy bude potřeba některé pobočky zmenšit, přesunout nebo úplně zrušit.

Cílem našeho projektu je vytvoření hodnotícího systému, díky kterému dokážeme kategorizovat vybrané parametry efektivity poboček. Majitelům je předneseme ve srozumitelné grafické podobě s konkrétními doporučeními, jak zacházet s vybranou pobočkou. Jdeme si hrát (s daty)!

Reálná časová osa projektu

První krůčky k datům

Na začátku září se Terka pozvala na pracovní schůzku k bratranci do kanceláře. Vysvětlila mu situaci ohledně svojí studijní náplně v Czechitas a vyjmenovala nekonečný seznam výhod, proč by jí měl poskytnout veškerá data, o která si řekne. Po několika minutové diskuzi ohledně fungování firmy a budoucích plánech bylo předběžně dohodnuto téma projektu.

Druhá dočasná covidová uzavírka obchodů bude pravděpodobně do budoucna znamenat mnoho uzavírek permanentních. Doposud se manažeři rozhodovali na základě finančních porovnání ve spolupráci se selským rozumem.

Nesmírnou přidanou hodnotou, kterou klientovi dokážeme nabídnout, je práce s lokačními daty, které nám poskytly Clever Maps. Jedním z nich je index expozice, který ukazuje, kolik je v okolí bodů zájmu pro případné nakupující. Dalším jsou demografické údaje, díky kterým dokážeme určit nasycenost trhu.

V prvních týdnech jsme pracovali s malým datasetem účtenek z obchodů, díky kterému jsme byly schopné vyrobit ERD model všech vstupních tabulek. Tím jsme si definovaly, jaká data potřebujeme a jaké mezi sebou mají vazby.

ERD Model
  • Transactions-products: údaje o nákupech ze všech prodejen za posledních X měsíců. Na začátku pouze 3 měsíce a postupné rozšíření na necelé dva roky. SQL kód jsme prozíravě psaly tak, aby fungoval univerzálně i do budoucna.
  • Store-employment-wage-rent: Všechny naše pobočky, náklady na jejich provoz.
  • Competitor: Největší konkurenti a jejich lokace.

Web Scraping

Pro lokační analýzu jsme z internetu musely získat polohu poboček největších konkurentů našeho klienta.

Na některých jejich webech bylo potřeba projít stovky odkazů, abychom adresy získaly. Google nám poradil použít knihovnu Beautiful Soup z Pythonu. Napsaly jsme pro každou pobočku script, který z výchozí domény prošel v cyklu všemi definovanými stránkami a z nich uložil potřebná data.

Příklad web scrapingu adres konkurenta:

import requests
from bs4 import BeautifulSoup
import pandas as pd

URL = 'https://www.bambule.cz/prodejny'
URL_BAMBULE = 'https://www.bambule.cz'
page = requests.get(URL)

soup = BeautifulSoup(page.content, 'html.parser')

job_elems = soup.find_all('div', class_='prodejna-list-item')
list_url_shops = [URL_BAMBULE + elem.find('a')['href'] for elem in job_elems]

list_shops = []
for url_shop in list_url_shops:
page = requests.get(url_shop)
soup = BeautifulSoup(page.content, 'html.parser')
shop = soup.find('p', class_='prodejna-adresa')
adresa_name = shop.find('span', class_='prodejna-adresa-name').text
adresa_ulice = shop.find('span', class_='prodejna-adresa-ulice').text
adresa_mesto = shop.find('span', class_='prodejna-adresa-mesto').text
adresa_psc = shop.find('span', class_='prodejna-adresa-psc').text
list_shop = [adresa_name, adresa_ulice, adresa_mesto, adresa_psc]
print(list_shop)
list_shops.append(list_shop)

df = pd.DataFrame(data=list_shops, columns=['Name', 'Street', 'City', 'ZIP'])

df.to_csv('out/tables/bambule_clean.csv', index=False)

Získané tabulky konkurentů jsme poté v Keboole pomocí SQL spojily a mohly jsme se pustit do jejich obohacování. Pro další práci jsme k nim potřebovaly připojit geolokační údaje — zeměpisnou šířku, délku a označení základních sídelních jednotek. K tomu jsme použily nástroje z Kebooly — Geocoding Augmentation a CleverMaps AreaMapper.

Vytváření Metrik

Money, money, money!

S vytvářením finančních metrik jsme začaly na hackatonu už s východem slunce, okolo 10:30. Během dopoledne jsme diskutovaly s mentory, jaké různé hodnotící ukazatele se dají z našich dat vytvořit. Na konci dne jsme skončily celkem se 14. Z nich jsme musely dále vybrat, které jsou pro náš projekt vhodné. V prvé řadě jsme vyřadily všechny ty (8), které neměly pro hodnocení pobočky žádnou vypovídací hodnotu. Rozptyl mezi hodnotami napříč pobočkami byl například příliš malý.

Korelační analýzou jsme rozhodly o odstranění dalších dvou metrik, aby nedošlo ke zkreslení výsledku.

Korelační analýza — vyřazení fix_cost_vs_revenue, profit_goods

Finální sestava finančních ukazatelů:

  • Výnosy z prodaného zboží (Revenue)
  • Provozní zisk (Profit)
  • Provozní marže (Gross Margin)
  • Nájemné vs. výnosy (Rent to Sales)

Lokace, lokace, lokace!

Druhá skupina metrik, kterou využíváme pro hodnocení poboček, vychází z demografických a lokačních dat získaných díky CleverMaps.

  • Demografie — počet obyvatel na jedno hračkářství (včetně konkurence)
  • Expozice — body zájmu v okolí 200 m od naší pobočky

Standardizace dat a finální rating

Pro porovnání jednotlivých poboček jsme převedly všechny metriky na škálu 0–100 použitím standardizace rozpětím. Tím jsme vytvořily univerzální nástroj, který v rámci různých období umí seřadit výkonnost jednotlivých poboček. Zároveň jsme tím částečně anonymizovaly data zakrytím absolutních čísel.

Standardizace rozpětím

Hlubokým zamyšlením, nad našimi dosavadními výsledky jsme dospěly k závěru, že na pobočky lze jednoduše nahlížet ze dvou rozdílných pohledů — z hlediska financí nebo lokace. S těmito 2 oblastmi jsme se nadále rozhodly pracovat pro výpočet finálního hodnocení i při tvorbě doporučení.

  • Finanční rating — průměr ze 4 finančních ukazatelů za dvouleté období
  • Lokační rating — průměr ze 2 lokačních ukazatelů

Final rating je součtem všech 6 ukazatelů. V CleverMaps jim lze nastavit váhu dle preferencí (viz níže “Rating Overview”).

Tvorba doporučení

K tvorbě závěrečného doporučení jsme použily naše dvě skupiny ratingů. Vložily jsme je do grafu, který nám znázorňuje, jak si pobočky stojí v jednotlivých kategoriích.

Graf nám posloužil jako podklad pro tvorbu matice doporučení.

Cherish — premiant v obou kategoriích
Maintain or Growth — dobré výsledky v obou kategoriích, možnost dalšího rozvoje
Consider Relocation — dobré finanční výsledky, ale špatná lokace, potřeba prozkoumat
High Cost to Sales — dobrá lokace, ale špatné finanční výsledky, potřeba prozkoumat
Relocate or Close — špatné finance a velmi špatná lokace, mohla by je zachránit relokace
Close — velmi špatné výsledky v obou kategoriích.

How to be Clever…in Clever Maps !

Vzhledem k našemu záměru pracovat s údaji o obyvatelích jsme se hned v září rozhodly přijmout osobní výzvu a použít Clever Maps jako hlavní vizualizační nástroj.

Po prvotním šoku z uživatelského rozhraní (příkazová řádka) jsme se zdárně prokousaly celým tutoriálem bez ztráty odhodlání. Následně strávily několik příjemných hodin s JSON soubory a vyrobily pět různých zobrazení, která Vám představíme.

5 různých “views” vyrobených pro náš projekt

Ukázky jednotlivých výstupů z Clever Maps

  • Exposure index zobrazuje hodnocení lokality z hlediska různých bodů zájmu ve zvoleném okolí pobočky. Jeho vyšší hodnota znamená vyšší vystavení potenciálním zákazníkům.
    V ukázce — Jindřichův Hradec, 5min docházka, porovnání s konkurentem, výběr zájmových filtrů, konkurent na periferii.
Exposure Index
  • KPI Eposure v okolí 200 m od našich poboček.
    V ukázce — jejich pořadí, histogram a vyfiltrování poboček s nejnižšími hodnotami.
    Tato hodnota je jednou z lokačních metrik.
KPI Exposure
  • Demografie — počet našich poboček v okresech, počet všech hračkářství v okresech, počet obyvatel na naše pobočky, počet obyvatel na všechna hračkářství.
    V ukázce zobrazujeme stěžejní informaci o počtu obyvatel na hračkářství, která je také jednou z lokačních metrik.
Demografie
  • Rating Overview — zobrazení všech finančních i lokačních indikátorů, finální rating pobočky, možnost určit váhy ukazatelů.
    V ukázce je porovnání dvou poboček v Praze a změna vah pro finální rating.
Rating Overview
  • Recommendations — rozdělení poboček do kategorií s doporučeními viz sekce “Tvorba doporučení”.
    V ukázce jsou zobrazeny pobočky, které se umístily na posledních místech nejprve z finančního hlediska, poté z lokačního, a nakonec celkově.
Recommendation view

Závěr

Podzimní večery se ke konci října začaly postupně prodlužovat a s tím se nám krátil čas do odevzdání. V době, kdy už jsme měly v mapách puntíky různých velikostí dle parametrů, nás více a více těšil pocit, že je za naší prací vidět barevný výsledek.

Kritickým okem laika si troufáme říct, že je naše analýza použitelná i v praktickém životě. Díky demografickým údajům, lokaci konkurentů a bodům zájmu lze určit, ve kterých městech je největší potenciál. Můžeme dokonce zjistit, ve kterých konkrétních ulicích vybraného města by bylo nejlepší umístit pobočku podle preferovaných bodů zájmu.

Majitelé budou schopni zkontrolovat, zda v prodejnách se špatnými finančními výsledky existuje potenciál pro zlepšení. Mohou zjistit, zda se v okolí nachází další konkurenti nebo zda je v okrese dostatečné množství případných zákazníků. Při hlubším zkoumání se mohou pokusit pobočku přesunout v rámci stejného města do lepší lokality.

Cílem našeho projektu bylo vytvoření doporučení, jak s pobočkami nakládat do budoucna. Dle porovnání našich dvou kategorií jsme dospěly k závěru, které pobočky doporučujeme úplně zavřít, řádně zkontrolovat, přesunout nebo udržovat. Výsledkem je přehledná mapa, která ukazuje celkovou kondici pobočkové sítě.

Během příštího týdne budeme prezentovat výsledky našemu klientovi a nemůžeme se dočkat, co na to bude říkat.

Pracovní nasazení

Použité nástroje při práci na projektu

Na začátku projektu jsme měly práci rozdělenou :

  • Terka — shánět data, tabulky o našich pobočkách
  • Kamča — konkurenti, tabulky o transakcích

Po vytvoření ucházejícího datového setu jsme došly do fáze, kdy bylo nejpraktičtější pracovat u jednoho stolu, protože jsme potřebovaly dělat společná rozhodnutí. Nejvíce práce jsme udělaly během 5 různých dnů během listopadu, kdy jsme se osobně setkaly.

Kamila ohromovala svými nekonečnými ekonomickými znalostmi a Terka při řešení revenue-profit-margin pouze zúčastněně pokyvovala a ťukala kódy o španělské vesnici. Pro práci v Clever Maps jsme každá z nás prošly tutoriály. Následně jsme pracovaly na stejném projektu (moc děkujeme Clever Maps za sdílení projektu o síti supermarketů) , do kterého jsme postupně přidávaly naše data a zkoumaly, jak se s čím zachází. Většinou to probíhalo tak, že jedna vyrobila zobrazení, kde něco nefungovalo a ta druhá šla rozlousknout, čím to je. Tím jsme si několikrát navzájem vystřídaly práci téměř ve všech fázích projektu. S klidem můžeme prohlásit, že se opravdu jednalo o rovnocennou spolupráci.

Odkaz na repozitář v GitHubu

--

--