{"id":38424,"date":"2019-10-31T22:23:40","date_gmt":"2019-10-31T19:23:40","guid":{"rendered":"https:\/\/prohoster.info\/blog\/retentioneering-kak-my-open-source-instrumenty-dlya-produktovoj-analitiki-na-python-i-pandas-napisali\/"},"modified":"2026-07-06T16:02:25","modified_gmt":"2026-07-06T14:02:25","slug":"retentioneering-kak-my-open-source-instrumenty-dlya-produktovoj-analitiki-na-python-i-pandas-napisali","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/news\/retentioneering-kak-my-open-source-instrumenty-dlya-produktovoj-analitiki-na-python-i-pandas-napisali","title":{"rendered":"Retentioneering: jak jsme napsali open-source n\u00e1stroje pro produktovou analytiku v Pythonu a Pandas","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ahoj, Habr. Tento \u010dl\u00e1nek je v\u011bnov\u00e1n v\u00fdsledk\u016fm \u010dty\u0159let\u00e9ho v\u00fdvoje souboru metod a n\u00e1stroj\u016f pro zpracov\u00e1n\u00ed trajektori\u00ed pohybu u\u017eivatel\u016f v aplikaci nebo na webu. Autorem v\u00fdvoje je <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/mgodzi\/\">Maxim Godzi<\/a><\/noindex>, kter\u00fd stoj\u00ed v \u010dele t\u00fdmu tv\u016frc\u016f produktu, z\u00e1rove\u0148 je autorem tohoto \u010dl\u00e1nku. Samotn\u00fd produkt dostal n\u00e1zev Retentioneering, nyn\u00ed byl p\u0159eveden na open-source knihovnu a um\u00edst\u011bn na Github, aby ho mohl pou\u017e\u00edvat kdokoli. To v\u0161e m\u016f\u017ee b\u00fdt zaj\u00edmav\u00e9 pro ty, kte\u0159\u00ed se zab\u00fdvaj\u00ed produktovou a marketingovou analytikou, propagac\u00ed a rozvojem produktu. Mimochodem, na Hbru <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/binarydistrict\/blog\/437534\/\">ji\u017e byla publikov\u00e1na zm\u00ednka o jednom z p\u0159\u00edpad\u016f pr\u00e1ce s Retentioneeringem<\/a><\/noindex>. V nov\u00e9m materi\u00e1lu se hovo\u0159\u00ed o tom, co produkt dok\u00e1\u017ee a jak ho lze vyu\u017e\u00edt.<\/p>\n<p>P\u0159e\u010dten\u00edm \u010dl\u00e1nku budete moci napsat sv\u016fj vlastn\u00ed Retentioneering, t\u00edm se m\u016f\u017ee st\u00e1t jak\u00e1koliv standardizovan\u00e1 metoda zpracov\u00e1n\u00ed trajektori\u00ed u\u017eivatel\u016f v aplikaci i mimo ni, umo\u017e\u0148uj\u00edc\u00ed podrobn\u011b vid\u011bt zvl\u00e1\u0161tnosti chov\u00e1n\u00ed a extrahovat z toho poznatky pro r\u016fst obchodn\u00edch metrik. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Co je Retentioneering a pro\u010d je to pot\u0159eba?<\/h3>\n<p>\nNa\u0161\u00edm p\u016fvodn\u00edm c\u00edlem bylo p\u0159ev\u00e9st Growth Hacking ze sv\u011bta \u201edigit\u00e1ln\u00edch m\u00e1g\u016f\u201c do sv\u011bta \u010d\u00edsel, anal\u00fdz a progn\u00f3z. V d\u016fsledku toho \u2014 zjednodu\u0161en\u00ed produktov\u00e9 analytiky na \u010distou matematiku a programov\u00e1n\u00ed pro ty, kdo d\u00e1vaj\u00ed p\u0159ednost \u010d\u00edsl\u016fm p\u0159ed fantastick\u00fdmi p\u0159\u00edb\u011bhy, a vzorc\u016fm p\u0159ed chytr\u00fdmi v\u00fdrazy jako \u201erebranding\u201c, \u201erepozicionov\u00e1n\u00ed\u201c apod., kter\u00e9 zn\u011bj\u00ed p\u011bkn\u011b, ale ve skute\u010dnosti p\u0159\u00edli\u0161 nepom\u00e1haj\u00ed. <\/p>\n<p>K \u0159e\u0161en\u00ed uveden\u00fdch \u00faloh byl pot\u0159eba r\u00e1mec pro anal\u00fdzu p\u0159es grafy a trajektorie, a z\u00e1rove\u0148 knihovna, kter\u00e1 zjednodu\u0161uje typick\u00e9 rutiny analytika jako zp\u016fsob popisu pravideln\u00fdch \u00faloh produktov\u00e9 analytiky, kter\u00e1 by byla srozumiteln\u00e1 jak lidem, tak robot\u016fm. Knihovna umo\u017e\u0148uje popisovat chov\u00e1n\u00ed u\u017eivatel\u016f a spojovat ho s obchodn\u00edmi metrikami produktu na tak form\u00e1ln\u00edm a jasn\u00e9m jazyce, aby se zjednodu\u0161ily a automatizovaly rutinn\u00ed \u00falohy v\u00fdvoj\u00e1\u0159\u016f a analytik\u016f a usnadnila se jejich komunikace s byznysem.<\/p>\n<p><b>Retentioneering \u2014 metoda a analytick\u00e9 programov\u00e9 n\u00e1stroje, kter\u00e9 je mo\u017en\u00e9 p\u0159izp\u016fsobit a integrovat do jak\u00e9hokoli digit\u00e1ln\u00edho (a nejen) produktu. <\/b><\/p>\n<p>Na produktu jsme za\u010dali pracovat v roce 2015. Nyn\u00ed je to ji\u017e hotov\u00fd, i kdy\u017e zat\u00edm ne ide\u00e1ln\u00ed soubor n\u00e1stroj\u016f v Pythonu a Pandas pro pr\u00e1ci s daty, modely strojov\u00e9ho u\u010den\u00ed se sklearn-like API, n\u00e1stroji pro interpretaci v\u00fdsledk\u016f model\u016f strojov\u00e9ho u\u010den\u00ed eli5 a shap. <\/p>\n<p>To v\u0161e je zabaleno <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/retentioneering\/retentioneering-tools\">do pohodln\u00e9 open-source knihovny na otev\u0159en\u00e9m repozit\u00e1\u0159i Github \u2014 retentioneering-tools.<\/a><\/noindex>Pou\u017eit\u00ed knihovny nen\u00ed slo\u017eit\u00e9, prakticky ka\u017ed\u00fd, kdo m\u00e1 r\u00e1d produktovou analytiku, ale dosud nepsal k\u00f3d, m\u016f\u017ee na\u0161e analytick\u00e9 metody aplikovat na sv\u00e1 data samostatn\u011b a bez zna\u010dn\u00fdch n\u00e1rok\u016f na \u010das. <\/p>\n<p>No a program\u00e1tor, tv\u016frce aplikace nebo \u010dlen v\u00fdvojov\u00e9ho nebo testovac\u00edho t\u00fdmu, kter\u00fd se nikdy p\u0159edt\u00edm nev\u011bnoval analytice, m\u016f\u017ee za\u010d\u00edt experimentovat s t\u00edmto k\u00f3dem a bez ciz\u00ed pomoci vid\u011bt vzory vyu\u017e\u00edv\u00e1n\u00ed sv\u00e9 aplikace. <\/p>\n<h3>Trajektorie u\u017eivatele jako z\u00e1kladn\u00ed prvek anal\u00fdzy a metody jej\u00edho zpracov\u00e1n\u00ed.<\/h3>\n<p>\n<b>Trajektorie u\u017eivatele \u2014 sekvence stav\u016f u\u017eivatele v ur\u010dit\u00fdch \u010dasov\u00fdch bodech.<\/b> P\u0159itom ud\u00e1losti mohou poch\u00e1zet z r\u016fzn\u00fdch zdroj\u016f dat, jak online, tak offline. Ud\u00e1losti, kter\u00e9 se u\u017eivateli staly \u2014 jsou sou\u010d\u00e1st\u00ed jeho trajektorie. P\u0159\u00edklady:<br \/>\n\u2022 stiskl tla\u010d\u00edtko<br \/>\n\u2022 vid\u011bl obr\u00e1zek<br \/>\n\u2022 dostal se na obrazovku<br \/>\n\u2022 obdr\u017eel e-mail<br \/>\n\u2022 doporu\u010dil produkt p\u0159\u00edteli<br \/>\n\u2022 vyplnil formul\u00e1\u0159<br \/>\n\u2022 \u0165uknul na obrazovku<br \/>\n\u2022 pro\u0161krolil<br \/>\n\u2022 p\u0159istoupil k pokladn\u011b<br \/>\n\u2022 objednal burrito<br \/>\n\u2022 sn\u011bdl burrito<br \/>\n\u2022 otr\u00e1vil se sn\u011bden\u00fdm burritem<br \/>\n\u2022 ve\u0161el do kav\u00e1rny zadn\u00edm vchodem<br \/>\n\u2022 ve\u0161el hlavn\u00edm vchodem<br \/>\n\u2022 zav\u0159el aplikaci<br \/>\n\u2022 obdr\u017eel push notifikaci<br \/>\n\u2022 z\u00edral na obrazovku d\u00e9le ne\u017e X<br \/>\n\u2022 zaplatil objedn\u00e1vku<br \/>\n\u2022 vyzvedl objedn\u00e1vku<br \/>\n\u2022 obdr\u017eel zam\u00edtnut\u00ed \u00fav\u011bru<\/p>\n<p>Pokud vezmeme data trajektori\u00ed skupiny u\u017eivatel\u016f a prozkoum\u00e1me, jak jsou uspo\u0159\u00e1d\u00e1ny p\u0159echody, m\u016f\u017eeme sledovat, jak p\u0159esn\u011b se vyv\u00edj\u00ed jejich chov\u00e1n\u00ed v aplikaci. To se pohodln\u011b prov\u00e1d\u00ed p\u0159es graf, kde jsou stavy \u2014 uzly, a p\u0159echody mezi stavy \u2014 hrany:<\/p>\n<p><img decoding=\"async\" alt=\"Retentioneering: jak jsme napsali open-source n\u00e1stroje pro produktovou analytiku v Pythonu a Pandas\" src=\"\/wp-content\/uploads\/2019\/09\/07d7a7cf4f023f5d42ef9b31ed07a0ff.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n\u201eTrajektorie\u201c je velmi praktick\u00fd pojem \u2013 zahrnuje podrobn\u00e9 informace o v\u0161ech akc\u00edch u\u017eivatele s mo\u017enost\u00ed p\u0159idat jak\u00e1koli dal\u0161\u00ed data do popisu t\u011bchto akc\u00ed. To z n\u00ed \u010din\u00ed univerz\u00e1ln\u00ed objekt. Pokud m\u00e1te kr\u00e1sn\u00e9 a u\u017eivatelsky p\u0159\u00edv\u011btiv\u00e9 n\u00e1stroje, kter\u00e9 umo\u017e\u0148uj\u00ed pracovat s trajektoriemi, m\u016f\u017eete naj\u00edt podobnosti a segmentovat je.<\/p>\n<p>Segmentace trajektori\u00ed se m\u016f\u017ee na prvn\u00ed pohled zd\u00e1t velmi slo\u017eit\u00e1. V b\u011b\u017en\u00e9 situaci to tak je \u2013 je t\u0159eba pou\u017e\u00edt porovn\u00e1n\u00ed matic konektivity nebo vyrovn\u00e1v\u00e1n\u00ed sekvenc\u00ed. N\u00e1m se poda\u0159ilo naj\u00edt jednodu\u0161\u0161\u00ed zp\u016fsob \u2013 analyzovat velk\u00e9 mno\u017estv\u00ed trajektori\u00ed a segmentovat je pomoc\u00ed shlukov\u00e1n\u00ed.<\/p>\n<p>Jak se uk\u00e1zalo, lze trajektorii p\u0159ev\u00e9st na bod pomoc\u00ed nep\u0159etr\u017eit\u00fdch reprezentac\u00ed, nap\u0159\u00edklad <noindex><a rel=\"nofollow\" href=\"http:\/\/datameetsmedia.com\/bag-of-words-tf-idf-explained\/\">TF-IDF<\/a><\/noindex>. Po p\u0159evodu se trajektorie st\u00e1v\u00e1 bodem v prostoru, kde na os\u00e1ch je normovan\u00e1 \u010detnost r\u016fzn\u00fdch ud\u00e1lost\u00ed a p\u0159echod\u016f mezi nimi v trajektorii. Tuto komponentu z obrovsk\u00e9ho prostoru s v\u00edce ne\u017e tis\u00edci rozm\u011bry (dimS = sou\u010det(typy ud\u00e1lost\u00ed) + sou\u010det(typy 2-gram\u016f)) lze obnovit na rovin\u011b pomoc\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/www.quora.com\/How-does-t-SNE-work-in-simple-words\">TSNE<\/a><\/noindex>. TSNE \u2013 transformace, kter\u00e1 sni\u017euje rozm\u011brnost prostoru na 2 osy a sna\u017e\u00ed se zachovat relativn\u00ed vzd\u00e1lenosti mezi body. T\u00edm se na ploch\u00e9 map\u011b, obrazov\u00e9 projek\u010dn\u00ed map\u011b trajektori\u00ed, zkoum\u00e1, jak spolu jednotliv\u00e9 body r\u016fzn\u00fdch trajektori\u00ed souvisej\u00ed. Analyzuje se, jak bl\u00edzko nebo daleko od sebe byly, zda vytv\u00e1\u0159ely shluky nebo se rozpt\u00fdlily po map\u011b atd.:<\/p>\n<p><img decoding=\"async\" alt=\"Retentioneering: jak jsme napsali open-source n\u00e1stroje pro produktovou analytiku v Pythonu a Pandas\" src=\"\/wp-content\/uploads\/2019\/09\/3f0386c33885cb842aec8ec01a5f47ff.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAnalytick\u00e9 n\u00e1stroje Retentioneering umo\u017e\u0148uj\u00ed p\u0159ev\u00e9st hromady slo\u017eit\u00fdch dat a trajektori\u00ed na reprezentaci, kterou lze vz\u00e1jemn\u011b porovnat, a pot\u00e9 prozkoumat a interpretovat v\u00fdsledek transformace.<\/p>\n<p>Pokud mluv\u00edme o standardn\u00edch metod\u00e1ch zpracov\u00e1n\u00ed trajektori\u00ed, m\u00e1me na mysli t\u0159i hlavn\u00ed n\u00e1stroje, kter\u00e9 jsme implementovali v Retentioneering \u2013 grafy, step matice a projek\u010dn\u00ed mapy trajektori\u00ed. <\/p>\n<p>Pr\u00e1ce s Google Analytics, Firebase a podobn\u00fdmi analytick\u00fdmi syst\u00e9my je dost slo\u017eit\u00e1 a nen\u00ed stoprocentn\u011b efektivn\u00ed. Probl\u00e9m spo\u010d\u00edv\u00e1 v \u0159ad\u011b omezen\u00ed pro u\u017eivatele, co\u017e znamen\u00e1, \u017ee pr\u00e1ce analytika se v t\u011bchto syst\u00e9mech redukuje na klik\u00e1n\u00ed my\u0161\u00ed a vyb\u00edr\u00e1n\u00ed segment\u016f. Retentioneering umo\u017e\u0148uje pracovat s trajektoriemi u\u017eivatel\u016f, a ne jen s funnelami, jako v Google Analytics, kde se \u00farove\u0148 podrobnosti \u010dasto omezuje na funnel, i kdy\u017e je postaven\u00fd pro n\u011bjak\u00fd segment. <\/p>\n<h3>Retentioneering a p\u0159\u00edpady pou\u017eit\u00ed<\/h3>\n<p>\nJako p\u0159\u00edklad pou\u017eit\u00ed vyvinut\u00e9ho n\u00e1stroje lze uv\u00e9st p\u0159\u00edpad velk\u00e9ho specializovan\u00e9ho servisu v Rusku. Tato spole\u010dnost m\u00e1 mobiln\u00ed aplikaci pro Android, kter\u00e1 je popul\u00e1rn\u00ed mezi z\u00e1kazn\u00edky. Ro\u010dn\u00ed obrat z mobiln\u00ed aplikace \u010dinil kolem 7 milion\u016f rubl\u016f, sez\u00f3nn\u00ed fluktuace se pohybovaly v rozmez\u00ed 60-130 tis\u00edc. Tato spole\u010dnost m\u00e1 tak\u00e9 aplikaci pro iOS, p\u0159i\u010dem\u017e pr\u016fm\u011brn\u00e1 \u00fatrata u\u017eivatele aplikace pro Apple byla vy\u0161\u0161\u00ed ne\u017e pr\u016fm\u011brn\u00e1 \u00fatrata klienta pou\u017e\u00edvaj\u00edc\u00edho aplikaci pro Android \u2014 1080 rubl\u016f oproti 1300 rubl\u016fm.<\/p>\n<p>Spole\u010dnost se rozhodla zv\u00fd\u0161it efektivitu aplikace pro Android, a proto provedla jej\u00ed podrobnou anal\u00fdzu. Bylo vytvo\u0159eno n\u011bkolik des\u00edtek hypot\u00e9z na zlep\u0161en\u00ed v\u00fdkonnosti aplikace. Po pou\u017eit\u00ed Retentioneering se uk\u00e1zalo, \u017ee probl\u00e9m tkv\u00ed v zpr\u00e1v\u00e1ch, kter\u00e9 byly zobrazeny nov\u00fdm u\u017eivatel\u016fm. Ti dost\u00e1vali informace o zna\u010dce, v\u00fdhod\u00e1ch spole\u010dnosti a cen\u00e1ch. Ale jak se uk\u00e1zalo, zpr\u00e1vy m\u011bly u\u017eivateli pomoci nau\u010dit se pracovat v aplikaci. <\/p>\n<p><img decoding=\"async\" alt=\"Retentioneering: jak jsme napsali open-source n\u00e1stroje pro produktovou analytiku v Pythonu a Pandas\" src=\"\/wp-content\/uploads\/2019\/09\/9e6718eb967ae65d047605e4b8a92b3e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTo bylo realizov\u00e1no, v d\u016fsledku \u010deho\u017e se aplikace za\u010dala m\u00e9n\u011b odinstalov\u00e1vat a r\u016fst konverze v objedn\u00e1vk\u00e1ch \u010dinil 23 %. Zpo\u010d\u00e1tku bylo pro test vy\u010dlen\u011bno 20 procent p\u0159\u00edchoz\u00edho provozu, ale po n\u011bkolika dnech, po anal\u00fdze prvn\u00edch v\u00fdsledk\u016f a zhodnocen\u00ed trendu, se proporce odrazily a naopak bylo 20 procent ponech\u00e1no pro kontroln\u00ed skupinu, zat\u00edmco osmdes\u00e1t procent bylo za\u0159azeno do testu. O t\u00fdden pozd\u011bji bylo rozhodnuto postupn\u011b p\u0159idat testov\u00e1n\u00ed dal\u0161\u00edch dvou hypot\u00e9z. Celkem po sedmi t\u00fddnech obrat z aplikace pro Android vzrostl o 50 % v porovn\u00e1n\u00ed s p\u0159edchoz\u00ed \u00farovn\u00ed.<\/p>\n<h3>Jak pracovat s Retentioneering?<\/h3>\n<p>\nPrvn\u00ed kroky jsou dost jednoduch\u00e9 \u2013 nainstalujeme knihovnu pomoc\u00ed p\u0159\u00edkazu pip install retentioneering. V samotn\u00e9m repozit\u00e1\u0159i jsou p\u0159ipraven\u00e9 p\u0159\u00edklady a p\u0159\u00edpady zpracov\u00e1n\u00ed dat pro n\u011bkter\u00e9 \u00fakoly produktov\u00e9 analytiky. Sada se neust\u00e1le dopl\u0148uje, zat\u00edm je dostate\u010dn\u00e1 pro prvn\u00ed sezn\u00e1men\u00ed. Ka\u017ed\u00fd si m\u016f\u017ee vz\u00edt hotov\u00e9 moduly a ihned je aplikovat na sv\u00e9 \u00fakoly \u2013 to umo\u017e\u0148uje rychl\u00e9 nastaven\u00ed procesu podrobn\u011bj\u0161\u00ed anal\u00fdzy a optimalizace u\u017eivatelsk\u00fdch cest maxim\u00e1ln\u011b efektivn\u011b. To v\u0161e umo\u017e\u0148uje nal\u00e9zt vzorce pou\u017e\u00edv\u00e1n\u00ed aplikace prost\u0159ednictv\u00edm srozumiteln\u00e9ho k\u00f3du a p\u0159edat tuto zku\u0161enost koleg\u016fm.<\/p>\n<p>Retentioneering \u2013 n\u00e1stroj, kter\u00fd je t\u0159eba pou\u017e\u00edvat po celou dobu \u017eivota aplikace, a to z n\u00e1sleduj\u00edc\u00edch d\u016fvod\u016f:<\/p>\n<ul>\n<li>Retentioneering je efektivn\u00ed pro sledov\u00e1n\u00ed a kontinu\u00e1ln\u00ed optimalizaci u\u017eivatelsk\u00fdch cest a zlep\u0161ov\u00e1n\u00ed obchodn\u00edch ukazatel\u016f. Nap\u0159\u00edklad v ecommerce aplikac\u00edch se \u010dasto p\u0159id\u00e1vaj\u00ed nov\u00e9 funkce, jejich\u017e vliv na produkt nen\u00ed v\u017edy mo\u017en\u00e9 spr\u00e1vn\u011b p\u0159edpov\u011bd\u011bt. V n\u011bkter\u00fdch p\u0159\u00edpadech se objevuj\u00ed probl\u00e9my s kompatibilitou nov\u00fdch a star\u00fdch funkc\u00ed \u2013 nap\u0159\u00edklad nov\u00e9 \u201ekanibalizuj\u00ed\u201c ji\u017e existuj\u00edc\u00ed. A v t\u00e9to situaci je pr\u00e1v\u011b pot\u0159eba trval\u00e1 anal\u00fdza cest. <\/li>\n<li>Podobn\u00e1 situace je i v pr\u00e1ci s reklamn\u00edmi kan\u00e1ly: neust\u00e1le se testuj\u00ed nov\u00e9 zdroje provozu a kreativn\u00ed reklamy, je t\u0159eba sledovat sez\u00f3nnost, trendy a dopad dal\u0161\u00edch ud\u00e1lost\u00ed, co\u017e vede k vzniku st\u00e1le nov\u00fdch t\u0159\u00edd probl\u00e9m\u016f. I zde je vy\u017eadov\u00e1no trval\u00e9 sledov\u00e1n\u00ed a interpretace u\u017eivatelsk\u00fdch mechanism\u016f. <\/li>\n<li>Existuje cel\u00e1 \u0159ada faktor\u016f, kter\u00e9 neust\u00e1le ovliv\u0148uj\u00ed fungov\u00e1n\u00ed aplikace. Nap\u0159\u00edklad nov\u00e9 verze od v\u00fdvoj\u00e1\u0159\u016f: uzav\u0159en\u00edm aktu\u00e1ln\u00edho probl\u00e9mu ne\u00famysln\u011b vracej\u00ed star\u00fd nebo vytv\u00e1\u0159ej\u00ed zcela nov\u00fd. \u010casem rostouc\u00ed po\u010det nov\u00fdch verz\u00ed vy\u017eaduje automatizaci procesu sledov\u00e1n\u00ed chyb \u2013 v\u010detn\u011b anal\u00fdzy u\u017eivatelsk\u00fdch cest.<\/li>\n<\/ul>\n<p>\nCelkov\u011b je Retentioneering efektivn\u00ed n\u00e1stroj. Ale dokonalosti se ned\u00e1 dos\u00e1hnout \u2013 lze ho a je t\u0159eba ho vylep\u0161ovat, rozv\u00edjet, stav\u011bt na jeho z\u00e1klad\u011b nov\u00e9 skv\u011bl\u00e9 produkty. \u010c\u00edm aktivn\u011bj\u0161\u00ed bude komunita projektu, t\u00edm v\u00edce bude fork\u016f a objevuj\u00ed se nov\u00e9 zaj\u00edmav\u00e9 mo\u017enosti jeho vyu\u017eit\u00ed.<\/p>\n<p>Dal\u0161\u00ed informace o n\u00e1stroj\u00edch Retentioneering:<\/p>\n<ul>\n<li>Na\u0161e str\u00e1nky: <noindex><a rel=\"nofollow\" href=\"http:\/\/retentioneering.com\">retentioneering.com<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/retentioneering.tilda.ws\/#rec89053099\">Rozvrh meet-up\u016f<\/a><\/noindex> a registrace na \u00fa\u010dast<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/t-do.ru\/retentioneering_meetups\">Chat produkt\u016f a analytik\u016f na Telegramu<\/a><\/noindex><\/li>\n<li>Zdarma <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/retentioneering\/retentioneering-tools\">repozit\u00e1\u0159 Retentioneering na GitHubu<\/a><\/noindex> <\/li>\n<\/ul>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/468721\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0438\u0442\u043e\u0433\u0430\u043c \u0447\u0435\u0442\u044b\u0440\u0435\u0445\u043b\u0435\u0442\u043d\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430\u0431\u043e\u0440\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435. \u0410\u0432\u0442\u043e\u0440 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u2014 \u041c\u0430\u043a\u0441\u0438\u043c \u0413\u043e\u0434\u0437\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u043e\u0438\u0442 \u0432\u043e \u0433\u043b\u0430\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430, \u043e\u043d \u0436\u0435 \u2014 \u0430\u0432\u0442\u043e\u0440 \u0441\u0442\u0430\u0442\u044c\u0438. \u0421\u0430\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 Retentioneering, \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u043d \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d \u0432 open-source \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d \u043d\u0430 Github, \u0447\u0442\u043e\u0431\u044b \u043b\u044e\u0431\u043e\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28843,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-38424","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0438\u0442\u043e\u0433\u0430\u043c \u0447\u0435\u0442\u044b\u0440\u0435\u0445\u043b\u0435\u0442\u043d\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430\u0431\u043e\u0440\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/news\/retentioneering-kak-my-open-source-instrumenty-dlya-produktovoj-analitiki-na-python-i-pandas-napisali\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Retentioneering: \u043a\u0430\u043a \u043c\u044b open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 \u043d\u0430 Python \u0438 Pandas \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0438\u0442\u043e\u0433\u0430\u043c \u0447\u0435\u0442\u044b\u0440\u0435\u0445\u043b\u0435\u0442\u043d\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430\u0431\u043e\u0440\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/news\/retentioneering-kak-my-open-source-instrumenty-dlya-produktovoj-analitiki-na-python-i-pandas-napisali\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:23:40+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-07-06T14:02:25+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Retentioneering: jak jsme napsali open-source n\u00e1stroje pro produktovou analytiku v Pythonu a Pandas | ProHoster","description":"Ahoj, Habr. Tento \u010dl\u00e1nek je v\u011bnov\u00e1n z\u00e1v\u011br\u016fm \u010dty\u0159let\u00e9ho v\u00fdvoje souboru metod a n\u00e1stroj\u016f pro zpracov\u00e1n\u00ed trajektori\u00ed pohybu u\u017eivatel\u016f v aplikaci nebo na webu.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/retentioneering-kak-my-open-source-instrumenty-dlya-produktovoj-analitiki-na-python-i-pandas-napisali","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Retentioneering: \u043a\u0430\u043a \u043c\u044b open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u043e\u0439 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 \u043d\u0430 Python \u0438 Pandas \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0438\u0442\u043e\u0433\u0430\u043c \u0447\u0435\u0442\u044b\u0440\u0435\u0445\u043b\u0435\u0442\u043d\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430\u0431\u043e\u0440\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435.","og:url":"https:\/\/prohoster.info\/cs\/blog\/news\/retentioneering-kak-my-open-source-instrumenty-dlya-produktovoj-analitiki-na-python-i-pandas-napisali","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:23:40+00:00","article:modified_time":"2026-07-06T14:02:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38424","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 22:00:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:09:23","updated":"2026-01-23 22:00:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/38424","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=38424"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/38424\/revisions"}],"predecessor-version":[{"id":182486,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/38424\/revisions\/182486"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/28843"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=38424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=38424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=38424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}