Hledáme nejlevnější e-shop v datech z Hlídač shopů

Je tu další Black Friday, den s výjimečnými slevami, který se v českých podmínkách vyznačuje tím, že trvá měsíc a zase tak výjimečné slevy vlastně nepřináší. K tomu, aby se tato situace zlepšila,přispívá i projekt Hlídač shopů, který průběžně monitoruje vývoj cen jednotlivých položek na několika (největších) českých e-shopech a prostřednictvím doplňku do prohlížeče vám poté jednoduše zobrazí, zda uváděná sleva v e-shopu je reálná, nebo jen fiktivní, vytvořená tím, že produkt byl krátce před tím “uměle” zdražen.

Za hlídačem stojí spojené (nemalé) úsilí lidí z Apify, Keboola a TopMonks, kteří nedávno oznámili, že svá data otevírají a veřejně je publikují prostřednictvím Google BigQuery. To mi umožnilo se k datům pohodlně dostat a zkusit se na ně podívat trochu jiným způsobem, než jakým to dělá hlídač – porovnat ceny stejných produktů, které jsou zalistovány ve více e-shopech zároveň a zjistit, které e-shopy (z těch monitorovaných) jsou ve své kategorii nejlevnější.

Pokud vás příliš nezajímá, jak jsem se k výsledku dobral, ale jen to, co z toho vypadlo, tak jsem smutný. Ale můžete se rovnou podívat na závěr, nebo na Tableau dashboard pro porovnání vývoje cen u jednotlivých produktů napříč e-shopy.

WTF je “nejlevnější”?

O co jednodušeji tahle otázka zní, o to těžší je dojít k nějaké jednoznačné odpovědi. Obecně vzato žádná jednoznačná odpověď není, protože “nejlevnější” je daleko relativnější pojem než se zdá (a než jsem si původně myslel), nicméně i tak jsem se pokusil dát dohromady alespoň pár dílčích závěrů a výstupů.

Než bylo možné začít nejlevnější e-shop hledat, bylo potřeba vybrat k tomu správná data a v nich udělat několik úprav. Nejprve bylo potřeba definovat základní dataset, který se v mém případě skládá z denních záznamů o aktuální ceně (currentPrice) jednotlivých produktů v jednotlivých e-shopech, jen pro produkty, které se (za celé období) objevily v nabídce alespoň tří různých e-shopů. To, že je měly nabízet alespoň tři e-shopy a ne jen dva, je čistě můj výmysl, kterým jsem chtěl zajistit, že porovnání bude za něco stát. To, že dva (a více) e-shopů nabízí stejný produkt lze poznat tak, že alespoň dva e-shopy mají v databázi záznam o produktu se stejným jménem (itemName).

Totožný dataset si můžete z výše zmíněného BigQuery úložiště kdykoliv vygenerovat pomocí např. této SQL query:

WITH t0 AS (
  SELECT 
    DISTINCT itemName AS item,
    shop,
    COUNT(DISTINCT shop) OVER(PARTITION BY itemName) AS countShop,
    COUNT(DISTINCT date) AS countDate,
    STRING_AGG(shop, ', ') OVER(PARTITION BY itemName) AS listShop
  FROM `hlidacshopu.hlidacshopu.allshops`
  GROUP BY item, shop
  ORDER BY itemName, countShop
)
  
SELECT
 t1.*,
 t0.countShop AS countDistShop,
 t0.countDate AS daysInShop,
 t0.listShop
FROM `hlidacshopu.hlidacshopu.allshops` AS t1
INNER JOIN t0
  ON t0.item = t1.itemName AND t0.shop = t1.shop
WHERE t0.countShop > 2

Koho porovnávat?

Výsledkem bylo 2171 produktů, které byly alespoň jeden den v nabídce alespoň tří z e-shopů, jejichž ceny monitoruje Hlídač shopů, v období, za které Hlídač publikuje data (od 4. listopadu 2019 do dne, kdy jsem si data exportoval, tedy 1. prosince 2019). V grafu dole můžete vidět, jak se vyvíjel denní počet monitorovaných produktů, které výše popsaným kritériím vyhovují.

Vývoj počtu produktů nabízených alespoň ve třech e-shopech

Nejjednodušší možnost, která se nabízí je vzít zkrátka průměrnou cenu produktů jednotlivých e-shopů, porovnat je a voilá – nejlevnější z nich je na světě. Jenže, tak jednoduché to bohužel není. Jedním důvodem je to, že nemá tak úplně smysl založit porovnání na pěti produktech, které má společně v nabídce Alza a Košík. Jako první je tedy potřeba vybrat e-shopy, které má smysl porovnávat. Na obrázku dole je matice, která popisuje, kolik společných produktů mají v nabídce jednotlivé dvojice e-shopů. Celkem jednoznačně z ní vyplývá, že pokud má smysl něco porovnávat, potom jsou to stejně (z hlediska sortimentu) zaměřené obchody Alza, TS Bohemia, CZC, Mironet, a Mall.

Matice překryvů sortimentu
Počty produktů nabízených společně v jednotlivých dvojicích obchodů

Průměr není k ničemu

V tomto podvýběru jsem potom ponechal opět jen záznamy ze dnů, kdy byl daný produkt v nabídce alespoň tří z pěti vybraných e-shopů. Takových produktů bylo nakonec 2103. Jak jsem již zmiňoval, nejjednodušší možnost je podívat se zkrátka na vývoj průměrné ceny produktů v těchto e-shopech. Ten je znázorněn na obrázku dole a dobře ukazuje, jak špatný nápad to je. Jednak je tato metoda silně ovlivněná tím, které produkty (resp. produkty z jaké “cenové kategorie” se zrovna dostanou do nabídky jakých tří obchodů) a jednak je ovlivněna “anomáliemi”, které se vyskytují v datech.

Vývoj průměrných cen
Vývoj průměrných cen produtků v jednotlivých e-shopech

Anomálie, o kterých mluvím, musely být buď dílem chyby Hlídače nebo skutečně dobrodružné cenové politiky některých konkrétních e-shopů. Zatímco většinou jsou si u jednotlivých produktů všechny obchody poměrně blízko, u některých se vyskytují až těžko uvěřitelné cenové skoky. Konkrétně třeba tiskárna “Xerox WorkCentre 3225DNI”, kterou podle dat Hlídače nabízely 10. listopadu všechny obchody za cenu kolem 5 tis. Kč. Všechny kromě Mironetu, který ji údajně nabízel za cenu přes 167 tis. Kč. Podobných případů je v datech víc a logicky velice vychylují průměrnou cenu produktů Mironetu nebo jiných, tímto dotčených obchodů.

Den za dnem

Jako (z mého pohledu) nejférovější postup, jak se dopracovat k “nejlevnějšímu” e-shopu, mi nakonec přišlo podívat se na celou věc z hlediska toho, jak je pravděpodobné, že daný e-shop má zrovna zboží levnější než ostatní e-shopy. Zkrátka jsem si pro každý produkt v každý den, kdy byl tento produkt v nabídce, určil, který e-shop jej nabízí za nejnižší cenu. Potom jsem se podíval na to, který e-shop nabízí daný produkt nejlevněji většinu dní, kdy byl produkt v nabíce (resp. v monitoringu Hlídače). Dny, kdy více než jeden obchod nabízel produkt za stejnou nejnižší cenu jsem nezapočítal žádnému obchodu.

Tímto způsobem jsem u každého produktu určil obchod, kde jste jej měli “nejpravděpodobněji” (v nejvyšším počtu dní) možnost koupit za nejnižší cenu. Graf, který vidíte dole, potom ukazuje u kolika procent produktů (z celkových 2103) vyšla touto metodou nejlevněji Alza, Mironet a další ze srovnávaných obchodů.

Procento produktů, které jsou většinu dní nejlevnější v daném e-shopu

Porovnání na úrovni produktů

Ačkoliv nějaký obecný, a po pravdě nepříliš jednoznačný, závěr směrem k tomu, který z e-shopů je obecně nejlevnější se mi snad podařilo udělat. Stále platí, že nejsmysluplnější porovnání lze provést na úrovni jednoho konkrétního produktu. U něj se můžete podívat na celkový vývoje jeho ceny v jednotlivých obchodech a sami si udělat obrázek.

Za tímto účelem jsem dal dohromady jednoduchý Tableau dashboard, který ve filtru “Product Name” umožňuje vybrat jeden konkrétní produkt a dole si porovnat jeho průměrnou cenu za všechny dny, kdy byl v evidenci Hlídače shopů a zároveň se podívat na porovnání vývoje jeho ceny v jednotlivých obchodech. Tento dashboard obsahuje všechny produkty, které byly alespoň jeden den v nabídce alespoň tří obchodů (jakýchkoliv, ne jen těch, které jsem porovnával výše). Po kliknutí na daný obchod v pohledu “Average Price by Shop of <Product Name>” se prokliknete na aktuální stránku produktu v konkrétním e-shopu.

Na závěr bych ještě jednou chtěl poděkovat lidem z Hlídače shopů za to, že dali tato data dohromady. Zároveň budu jako vždy vděčný za každou připomínku / návrh / názor na to, jak by se toto porovnání dalo zpřesnit / zlepšit / zpracovat úplně jinak a smysluplněji.

Napsat komentář

Vaše emailová adresa nebude zveřejněna.