{"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\/sv\/blog\/news\/retentioneering-kak-my-open-source-instrumenty-dlya-produktovoj-analitiki-na-python-i-pandas-napisali","title":{"rendered":"Retentioneering: hur vi skapade open-source verktyg f\u00f6r produktanalys med Python och Pandas","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hej, Habr. Denna artikel handlar om slutsatserna fr\u00e5n fyra \u00e5rs utveckling av en upps\u00e4ttning metoder och verktyg f\u00f6r att behandla anv\u00e4ndarbewegelsers banor i en app eller p\u00e5 en webbplats. Utvecklaren \u00e4r <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/mgodzi\/\">Maksim Godzi<\/a><\/noindex>, som st\u00e5r i spetsen f\u00f6r produktutvecklingsteamet och \u00e4r \u00e4ven artikelf\u00f6rfattaren. Produkten har f\u00e5tt namnet Retentioneering, och den har nu omvandlats till ett open-source bibliotek som finns p\u00e5 Github, s\u00e5 att alla intresserade kan anv\u00e4nda det. Detta kan vara intressant f\u00f6r dem som arbetar med produkt- och marknadsanalys, produktmarknadsf\u00f6ring och produktutveckling. F\u00f6rresten, en artikel om ett av fallen med Retentioneering har redan publicerats p\u00e5 Habr. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/binarydistrict\/blog\/437534\/\">I det nya materialet diskuteras vad produkten klarar av och hur den kan anv\u00e4ndas.<\/a><\/noindex>Genom att l\u00e4sa artikeln kan du sj\u00e4lv skapa din egen Retentioneering; det kan bli vilken standardiserad metod som helst f\u00f6r behandling av anv\u00e4ndarbewegelsers banor b\u00e5de inom och utanf\u00f6r appen, vilket g\u00f6r det m\u00f6jligt att se detaljerade beteenden och utvinna insikter f\u00f6r att \u00f6ka aff\u00e4rsmetrik.<\/p>\n<p>Vad \u00e4r Retentioneering och varf\u00f6r beh\u00f6vs det? <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>V\u00e5rt ursprungliga m\u00e5l var att \u00f6vers\u00e4tta Growth Hacking fr\u00e5n v\u00e4rldar av \"digitalt skrock\" till v\u00e4rlden av siffror, analyser och prognoser. Som ett resultat \u2014 att reducera produktanalysen till ren matematik och programmering f\u00f6r dem som f\u00f6redrar siffror framf\u00f6r fantasifulla ber\u00e4ttelser, och formler framf\u00f6r snobbiga termer som \"rebranding\", \"repositionering\" osv., som l\u00e5ter snyggt men till liten hj\u00e4lp i praktiken.<\/h3>\n<p>\nF\u00f6r att l\u00f6sa dessa uppgifter beh\u00f6vdes ett ramverk f\u00f6r analyser genom grafer och banor, och samtidigt ett bibliotek som f\u00f6renklar analytikers typiska rutiner, som ett s\u00e4tt att beskriva vanliga uppgifter inom produktanalys, vilket skulle vara begripligt b\u00e5de f\u00f6r m\u00e4nniskor och robotar. Biblioteket erbjuder m\u00f6jligheten att beskriva anv\u00e4ndarbeteenden och koppla dem till produktens aff\u00e4rsmetrik p\u00e5 ett s\u00e5 formellt och klart spr\u00e5k att det f\u00f6renklar och automatiserar utvecklarnas och analytikernas rutinuppgifter och underl\u00e4ttar deras kommunikation med aff\u00e4rssidan. <\/p>\n<p>Retentioneering \u2014 en metod och analytiska programvaruverktyg som kan anpassas och integreras i vilken digital (och icke-digital) produkt som helst.<\/p>\n<p><b>Retentioneering \u2014 en metod och analytiska programvaruverktyg som kan anpassas och integreras i vilken digital (och icke-digital) produkt som helst. <\/b><\/p>\n<p>Vi b\u00f6rjade arbeta med produkten 2015. Nu \u00e4r det en f\u00e4rdig, om \u00e4n inte perfekt, upps\u00e4ttning verktyg p\u00e5 Python och Pandas f\u00f6r att arbeta med data, maskininl\u00e4rningsmodeller med ett sklearn-liknande API, samt verktyg f\u00f6r att tolka resultaten fr\u00e5n maskininl\u00e4rningsmodeller, eli5 och shap. <\/p>\n<p>Allt detta \u00e4r inslaget <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/retentioneering\/retentioneering-tools\">i ett anv\u00e4ndarv\u00e4nligt open-source-bibliotek i det \u00f6ppna GitHub-repositoriet \u2014 retentioneering-tools.<\/a><\/noindex>Att anv\u00e4nda biblioteket \u00e4r enkelt, n\u00e4stan vilken person som helst som gillar produktanalys, men som aldrig har skrivit kod tidigare, kan till\u00e4mpa v\u00e5ra analytiska metoder p\u00e5 sina egna data sj\u00e4lvst\u00e4ndigt och utan betydande tids\u00e5tg\u00e5ng. <\/p>\n<p>Och en programmerare, skapare av applikationen eller medlem av utvecklings- eller testteamet, som aldrig tidigare har sysslat med analytics, kan b\u00f6rja leka med denna kod och se anv\u00e4ndningsm\u00f6nstren f\u00f6r sin applikation utan extern hj\u00e4lp. <\/p>\n<h3>Anv\u00e4ndarens v\u00e4g som en grundl\u00e4ggande analyskomponent och metoder f\u00f6r dess bearbetning.<\/h3>\n<p>\n<b>Anv\u00e4ndarens v\u00e4g \u00e4r en sekvens av anv\u00e4ndarens tillst\u00e5nd vid best\u00e4mda tidpunkter.<\/b> Och h\u00e4ndelser kan komma fr\u00e5n olika datak\u00e4llor, b\u00e5de online och offline. H\u00e4ndelser som har intr\u00e4ffat f\u00f6r anv\u00e4ndaren \u00e4r en del av hans v\u00e4g. Exempel:<br \/>\n\u2022 tryckte p\u00e5 en knapp<br \/>\n\u2022 s\u00e5g en bild<br \/>\n\u2022 kom till en sk\u00e4rm<br \/>\n\u2022 fick ett mail<br \/>\n\u2022 rekommenderade produkten till en v\u00e4n<br \/>\n\u2022 fyllde i ett formul\u00e4r<br \/>\n\u2022 tryckte p\u00e5 sk\u00e4rmen<br \/>\n\u2022 scrollade<br \/>\n\u2022 gick till kassan<br \/>\n\u2022 best\u00e4llde en burrito<br \/>\n\u2022 \u00e5t en burrito<br \/>\n\u2022 blev matf\u00f6rgiftad av den \u00e4tna burriton<br \/>\n\u2022 gick in i kaf\u00e9et fr\u00e5n en bakd\u00f6rr<br \/>\n\u2022 gick in genom huvuding\u00e5ngen<br \/>\n\u2022 st\u00e4ngde applikationen<br \/>\n\u2022 fick en push-notis<br \/>\n\u2022 stirrade p\u00e5 sk\u00e4rmen l\u00e4ngre \u00e4n tid X<br \/>\n\u2022 betalade best\u00e4llningen<br \/>\n\u2022 h\u00e4mtade best\u00e4llningen<br \/>\n\u2022 fick avslag p\u00e5 l\u00e5n<\/p>\n<p>Om man tar data fr\u00e5n v\u00e4garna f\u00f6r en grupp anv\u00e4ndare och studerar hur \u00f6verg\u00e5ngarna \u00e4r uppbyggda, kan man se hur deras beteenden i applikationen formas. Detta \u00e4r l\u00e4tt att g\u00f6ra med en graf d\u00e4r tillst\u00e5nd \u00e4r noder och \u00f6verg\u00e5ngar mellan tillst\u00e5nd \u00e4r kanter:<\/p>\n<p><img decoding=\"async\" alt=\"Retentioneering: hur vi skapade open-source verktyg f\u00f6r produktanalys med Python och Pandas\" src=\"\/wp-content\/uploads\/2019\/09\/07d7a7cf4f023f5d42ef9b31ed07a0ff.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n\"Trajektori\" \u00e4r ett mycket praktiskt begrepp \u2013 det inneh\u00e5ller detaljerad information om alla anv\u00e4ndarhandlingar, med m\u00f6jlighet att l\u00e4gga till vilka ytterligare data som helst i beskrivningen av dessa handlingar. Detta g\u00f6r det till ett universellt objekt. Om du har vackra och anv\u00e4ndarv\u00e4nliga verktyg som g\u00f6r det m\u00f6jligt att arbeta med trajektorier, kan du hitta likheter och segmentera dem.<\/p>\n<p>Segmentering av trajektorier kan till en b\u00f6rjan verka mycket komplicerat. I vanliga fall \u00e4r det s\u00e5 \u2013 man m\u00e5ste anv\u00e4nda matrisj\u00e4mf\u00f6relser eller sekvensjusteringar. Vi har lyckats hitta ett enklare s\u00e4tt \u2013 att studera ett stort antal trajektorier och segmentera dem genom klusteranalys.<\/p>\n<p>Det visade sig att man kan f\u00f6rvandla en trajektori till en punkt med hj\u00e4lp av kontinuerliga representationer, till exempel, <noindex><a rel=\"nofollow\" href=\"http:\/\/datameetsmedia.com\/bag-of-words-tf-idf-explained\/\">TF-IDF<\/a><\/noindex>. Efter omvandlingen blir trajektorin en punkt i rummet, d\u00e4r de normerade frekvenserna av olika h\u00e4ndelser och \u00f6verg\u00e5ngar mellan dem avl\u00e4ggs l\u00e4ngs axlarna. Denna sak fr\u00e5n det enorma rummet med \u00f6ver tusen dimensioner (dimS=sum(event types)+sum(ngrams_2 types)) kan projiceras p\u00e5 en plan yta med hj\u00e4lp av <noindex><a rel=\"nofollow\" href=\"https:\/\/www.quora.com\/How-does-t-SNE-work-in-simple-words\">TSNE<\/a><\/noindex>. TSNE \u2013 en transformation som reducerar dimensionen av rummet till 2 axlar och s\u00e5 l\u00e5ngt som m\u00f6jligt bevarar relativa avst\u00e5nd mellan punkterna. D\u00e4rmed blir det m\u00f6jligt att studera hur punkterna fr\u00e5n olika trajektorier l\u00e5g i f\u00f6rh\u00e5llande till varandra p\u00e5 den plan karta som bildas av trajektorier. Man analyserar hur n\u00e4ra eller olika de var fr\u00e5n varandra, om de bildade kluster eller spriddes p\u00e5 kartan, etc.:<\/p>\n<p><img decoding=\"async\" alt=\"Retentioneering: hur vi skapade open-source verktyg f\u00f6r produktanalys med Python och Pandas\" src=\"\/wp-content\/uploads\/2019\/09\/3f0386c33885cb842aec8ec01a5f47ff.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAnalysverktygen Retentioneering m\u00f6jligg\u00f6r att omvandla en m\u00e4ngd komplexa data och trajektorier till en representation som kan j\u00e4mf\u00f6ras med varandra, och sedan utforska och tolka resultatet av omvandlingen.<\/p>\n<p>N\u00e4r vi talar om standardmetoder f\u00f6r behandling av trajektorier, avses tre grundl\u00e4ggande verktyg som vi har implementerat i Retentioneering \u2013 grafer, step-matriser och projiceringskartor av trajektorier. <\/p>\n<p>Att arbeta med Google Analytics, Firebase och liknande analysverktyg \u00e4r ganska komplicerat och inte 100% effektivt. Problemet ligger i en rad begr\u00e4nsningar f\u00f6r anv\u00e4ndaren, vilket g\u00f6r att analytikerns arbete begr\u00e4nsas till musklick och val av segment. Retentioneering erbjuder m\u00f6jligheten att arbeta med anv\u00e4ndartillv\u00e4gag\u00e5ngss\u00e4tt, snarare \u00e4n bara tratten, som i Google Analytics, d\u00e4r detaljniv\u00e5n ofta reduceras till tratten, \u00e4ven om den \u00e4r byggd f\u00f6r ett specifikt segment. <\/p>\n<h3>Retentioneering och fallstudier<\/h3>\n<p>\nEtt exempel p\u00e5 hur det utvecklade verktyget anv\u00e4nds \u00e4r fallet med en stor nischtj\u00e4nst i Ryssland. F\u00f6retaget har en mobilapplikation f\u00f6r Android som \u00e4r popul\u00e4r bland kunder. Den \u00e5rliga oms\u00e4ttningen fr\u00e5n mobilapplikationen var cirka 7 miljoner rubel, med s\u00e4songsfluktuationer mellan 60 000 och 130 000 rubel. F\u00f6retaget har ocks\u00e5 en iOS-applikation, d\u00e4r genomsnittligt k\u00f6pbelopp f\u00f6r anv\u00e4ndare av '\u00e4pple'-applikationen var h\u00f6gre \u00e4n f\u00f6r klienter som anv\u00e4nde Android-applikationen - 1080 rubel mot 1300 rubel.<\/p>\n<p>F\u00f6retaget beslutade att \u00f6ka effektiviteten f\u00f6r Android-applikationen, s\u00e5 de genomf\u00f6rde en noggrann analys av den. Flera dussin hypoteser om att \u00f6ka applikationens resultat formulerades. Efter att ha anv\u00e4nt Retentioneering visade det sig att problemet l\u00e5g i meddelandena som visades f\u00f6r nya anv\u00e4ndare. De fick information om varum\u00e4rket, f\u00f6retagets f\u00f6rdelar och priser. Men det visade sig att meddelandena skulle hj\u00e4lpa anv\u00e4ndaren att l\u00e4ra sig hur man arbetar i applikationen. <\/p>\n<p><img decoding=\"async\" alt=\"Retentioneering: hur vi skapade open-source verktyg f\u00f6r produktanalys med Python och Pandas\" src=\"\/wp-content\/uploads\/2019\/09\/9e6718eb967ae65d047605e4b8a92b3e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDetta utf\u00f6rdes, vilket ledde till att applikationen blev mindre borttagen, och tillv\u00e4xten av konverteringar till best\u00e4llningar uppgick till 23%. Inledningsvis avsattes 20 procent av den inkommande trafiken f\u00f6r testet, men efter n\u00e5gra dagar, n\u00e4r de analyserade de f\u00f6rsta resultaten och bed\u00f6mde trenden, \u00e4ndrade de f\u00f6rh\u00e5llandena spegelv\u00e4nt och l\u00e4mnade ist\u00e4llet 20 procent f\u00f6r kontrollgruppen, medan \u00e5ttio procent gick till testet. Ytterligare en vecka senare fattades beslutet att successivt l\u00e4gga till testning av ytterligare tv\u00e5 hypoteser. Totalt, efter sju veckor, \u00f6kade oms\u00e4ttningen fr\u00e5n Android-applikationen med en och en halv g\u00e5ng j\u00e4mf\u00f6rt med den tidigare niv\u00e5n.<\/p>\n<h3>Hur arbetar man med Retentioneering?<\/h3>\n<p>\nDe f\u00f6rsta stegen \u00e4r ganska enkla \u2014 ladda ner biblioteket med kommandot pip install retentioneering. I sj\u00e4lva repository finns f\u00e4rdiga exempel och fall f\u00f6r databehandling f\u00f6r vissa uppgifter inom produktanalys. Samlingen ut\u00f6kas st\u00e4ndigt, men den \u00e4r tillr\u00e4cklig f\u00f6r en f\u00f6rsta introduktion. Var och en kan ta f\u00e4rdiga moduler och direkt till\u00e4mpa dem p\u00e5 sina uppgifter \u2014 detta g\u00f6r det m\u00f6jligt att snabbt och effektivt st\u00e4lla in en mer detaljerad analys och optimering av anv\u00e4ndarens resor. Allt detta m\u00f6jligg\u00f6r att uppt\u00e4cka m\u00f6nster i anv\u00e4ndningen av applikationen genom tydlig kod och \u00f6verf\u00f6ra denna erfarenhet till kollegor.<\/p>\n<p>Retentioneering \u00e4r ett verktyg som b\u00f6r anv\u00e4ndas under hela applikationens livscykel, och h\u00e4r \u00e4r varf\u00f6r:<\/p>\n<ul>\n<li>Retentioneering \u00e4r effektivt f\u00f6r att sp\u00e5ra och kontinuerligt optimera anv\u00e4ndarresor samt f\u00f6rb\u00e4ttra aff\u00e4rsresultat. S\u00e5 i ecommerce-applikationer l\u00e4ggs ofta nya funktioner till, vars p\u00e5verkan p\u00e5 produkten inte alltid kan f\u00f6ruts\u00e4gas korrekt. I vissa fall uppst\u00e5r kompatibilitetsproblem mellan nya och gamla funktioner \u2014 till exempel kan nya \"kanibalera\" befintliga. Och i denna situation beh\u00f6vs st\u00e4ndig analys av resorna. <\/li>\n<li>En liknande situation g\u00e4ller f\u00f6r arbete med annonseringskanaler: nya trafik- och reklamk\u00e4llor testas st\u00e4ndigt, och det \u00e4r n\u00f6dv\u00e4ndigt att sp\u00e5ra s\u00e4songsm\u00e4ssiga trender och p\u00e5verkan av andra h\u00e4ndelser, vilket leder till nya klasser av problem. H\u00e4r kr\u00e4vs ocks\u00e5 st\u00e4ndig \u00f6vervakning och tolkning av anv\u00e4ndarmekanismer. <\/li>\n<li>Det finns ett helt antal faktorer som st\u00e4ndigt p\u00e5verkar applikationens drift. Till exempel, nya versioner fr\u00e5n utvecklarna: genom att l\u00f6sa aktuella problem \u00e5terinf\u00f6r de oavsiktligt gamla eller skapar helt nya. Med tiden \u00f6kar antalet nya versioner, och processen f\u00f6r att sp\u00e5ra buggar m\u00e5ste automatiseras \u2014 \u00e4ven genom analys av anv\u00e4ndarresor.<\/li>\n<\/ul>\n<p>\nGenerellt \u00e4r Retentioneering ett effektivt verktyg. Men perfektion har inga gr\u00e4nser \u2014 det kan och b\u00f6r f\u00f6rb\u00e4ttras, utvecklas och utg\u00f6ra grunden f\u00f6r nya fantastiska produkter. Ju mer aktivt projektets gemenskap \u00e4r, desto fler fork kommer det att finnas och nya intressanta anv\u00e4ndningsvarianter kommer att dyka upp.<\/p>\n<p>Ytterligare information om Retentioneering-verktygen:<\/p>\n<ul>\n<li>V\u00e5r webbplats: <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\">Schema f\u00f6r meetups<\/a><\/noindex> och registrering f\u00f6r deltagande<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/t-do.ru\/retentioneering_meetups\">Produkt- och analytikernas chatt p\u00e5 Telegram<\/a><\/noindex><\/li>\n<li>Gratis <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/retentioneering\/retentioneering-tools\">Retentioneering-repositoriet p\u00e5 GitHub<\/a><\/noindex> <\/li>\n<\/ul>\n<p>K\u00e4lla: <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.4 - 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\/sv\/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.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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: hur vi skrev open-source verktyg f\u00f6r produktanalys i Python och Pandas | ProHoster","description":"Hej, Habr. Den h\u00e4r artikeln handlar om resultaten fr\u00e5n fyra \u00e5rs utveckling av en upps\u00e4ttning metoder och verktyg f\u00f6r att bearbeta anv\u00e4ndarnas r\u00f6relsem\u00f6nster i en app eller p\u00e5 en webbplats.","canonical_url":"https:\/\/prohoster.info\/sv\/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":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/38424","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=38424"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/38424\/revisions"}],"predecessor-version":[{"id":182486,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/38424\/revisions\/182486"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/28843"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=38424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=38424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=38424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}