{"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\/et\/blog\/novosti-interneta\/retentioneering-kak-my-open-source-instrumenty-dlya-produktovoj-analitiki-na-python-i-pandas-napisali","title":{"rendered":"Retentioneering: kuidas me open-source t\u00f6\u00f6riistu tooteanal\u00fc\u00fcsiks Pythonis ja Pandasis kirjutasime","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Tere, Habr. See artikkel k\u00e4sitleb nelja-aastase arendust\u00f6\u00f6 tulemusi, mille eesm\u00e4rgiks on luua meetodite ja t\u00f6\u00f6riistade kogum kasutajate liikumisteede t\u00f6\u00f6tlemiseks rakenduses v\u00f5i veebisaidil. Arenduse autor on <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/mgodzi\/\">Maksim Godzi<\/a><\/noindex>, kes seisab toote loojate meeskonna eesotsas ja on ka artikli autor. Toode on saanud nimeks Retentioneering, see on n\u00fc\u00fcd muudetud avatud l\u00e4htekoodiga raamatukoguks ja paigutatud Githubi, et iga soovija saaks seda kasutada. See k\u00f5ik v\u00f5ib huvi pakkuda neile, kes tegelevad tootearenduse ja turuanal\u00fc\u00fcsiga, toote reklaami ja arendamisega. Muide, Habris <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/binarydistrict\/blog\/437534\/\">oli juba avaldatud artikkel \u00fche Retentioneeringu kasutusjuhtumi kohta<\/a><\/noindex>. Uues materjalis r\u00e4\u00e4gitakse, milleks toode v\u00f5imeline on ja kuidas seda kasutada.<\/p>\n<p>Lugedes artiklit, saate ise kirjutada oma Retentioneeringu \u2014 selleks v\u00f5ib saada mis tahes standardiseeritud meetod kasutajate liikumiste t\u00f6\u00f6tlemiseks rakenduses ja selle v\u00e4ljaspool, mis v\u00f5imaldab n\u00e4ha detailset k\u00e4itumismudelit ja sellest \u00e4rilisi teadmisi tuua. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Mis on Retentioneering ja miks see vajalik on?<\/h3>\n<p>\nAlguses oli meie eesm\u00e4rk viia Growth Hacking digitaalsete n\u00f5idade maailmast numbrite, anal\u00fc\u00fcsi ja prognooside maailma. Selle tulemusena v\u00e4hendatakse tooteanal\u00fc\u00fctikat puhtaks matemaatikaks ja programmeerimiseks neile, kes eelistavad ulmeliste lugude asemel numbreid, ning valemeid tarkade s\u00f5nade nagu \u201ebr\u00e4ndingu\u201d, \u201epositsioneerimise\u201d jms, mis k\u00f5lavad kenasti, kuid praktiliselt aitavad v\u00e4he. <\/p>\n<p>Nende probleemide lahendamiseks oli vajalik raamistik anal\u00fc\u00fcsi jaoks graafide ja trajektooride kaudu ning samal ajal teeki, mis lihtsustaks anal\u00fc\u00fctiku tavalisi rutiine, v\u00f5imaldades kirjelda regulaarseid tooteanal\u00fc\u00fcsi \u00fclesandeid m\u00f5istetaval viisil nii inimestele kui ka robotitele. Teek annab v\u00f5imaluse kirjeldada kasutajate k\u00e4itumist ja siduda seda toote \u00e4rimeetritega nii formaalses ja selges keeles, et lihtsustada ja automatiseerida arendajate ja anal\u00fc\u00fctikute rutiinseid \u00fclesandeid ning h\u00f5lbustada nende suhtlust \u00e4ri\u00fcksetega.<\/p>\n<p><b>Retentioneering on meetod ja anal\u00fc\u00fctilised tarkvarat\u00f6\u00f6riistad, mida saab kohandada ja integreerida igasse digitaalset (ja mitte ainult) toodet. <\/b><\/p>\n<p>Alustasime tootearendust 2015. aastal. T\u00e4naseks on see juba valmis, ehkki veel mitte ideaalne t\u00f6\u00f6riistade komplekt Python ja Pandasiga andmete t\u00f6\u00f6tlemiseks, masin\u00f5ppemudelid sklearn-sarnase API-ga, masin\u00f5ppemudelite tulemuste t\u00f5lgendamise t\u00f6\u00f6riistadeli5 ja shap. <\/p>\n<p>Kogu see on kokku pakitud <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/retentioneering\/retentioneering-tools\">mugavasse avatud l\u00e4htekoodiga raamatukokku avatud GitHubi repozitooriumis \u2014 retentioneering-tools<\/a><\/noindex>. Raamatukogu kasutamine ei ole raske, praktiliselt iga inimene, kes armastab tootearvestust, kuid ei ole kunagi koodi kirjutanud, v\u00f5ib meie anal\u00fc\u00fcsi meetodeid oma andmetele rakendada iseseisvalt ja ilma suuremate ajakulu. <\/p>\n<p>Arendaja, rakenduse looja v\u00f5i arendus- v\u00f5i testimismeeskonna liige, kes pole kunagi varem anal\u00fc\u00fctikaga tegelenud, v\u00f5ib alustada selle koodiga m\u00e4ngimist ja n\u00e4ha oma rakenduse kasutamismustreid ilma v\u00e4list abi saamata. <\/p>\n<h3>Kasutaja trajektoor kui anal\u00fc\u00fcsi p\u00f5hielement ja selle t\u00f6\u00f6tlemise meetodid<\/h3>\n<p>\n<b>Kasutaja trajektoor on kasutaja seisundite j\u00e4rjestus teatud ajakohadel.<\/b> Tegelikult v\u00f5ivad s\u00fcndmused olla erinevatest andmeallikatest, nii veebis kui ka offline. Kasutaja kogetud s\u00fcndmused on osa tema trajektoorist. N\u00e4ited:<br \/>\n\u2022 vajutas nuppu<br \/>\n\u2022 n\u00e4gi pilti<br \/>\n\u2022 j\u00f5udis ekraanile<br \/>\n\u2022 sai e-kirja<br \/>\n\u2022 soovitas toodet s\u00f5brale<br \/>\n\u2022 t\u00e4itis vormi<br \/>\n\u2022 puudutas ekraani<br \/>\n\u2022 keris alla<br \/>\n\u2022 l\u00e4ks kassasse<br \/>\n\u2022 tellis burrito<br \/>\n\u2022 jed burrito<br \/>\n\u2022 sai burrito t\u00f5ttu toidum\u00fcrgituse<br \/>\n\u2022 sisenes kohvikusse tagauksest<br \/>\n\u2022 sisenes peatrepust<br \/>\n\u2022 sulges rakenduse<br \/>\n\u2022 sai push-teate<br \/>\n\u2022 vaatas ekraani pikemat aega X<br \/>\n\u2022 maksis tellimuse eest<br \/>\n\u2022 lunastas tellimuse<br \/>\n\u2022 sai krediidi tagasi l\u00fckata<\/p>\n<p>Kui v\u00f5tta r\u00fchma kasutajate trajektooride andmed ja uurida, kuidas \u00fcleminekud toimivad, on v\u00f5imalik j\u00e4lgida, kuidas nende k\u00e4itumine rakenduses kujuneb. Seda on mugav teha graafiku kaudu, kus olekud on s\u00f5lmed ja \u00fcleminekud olekute vahel on servad:<\/p>\n<p><img decoding=\"async\" alt=\"Retentioneering: kuidas me open-source t\u00f6\u00f6riistu tooteanal\u00fc\u00fcsiks Pythonis ja Pandasis kirjutasime\" src=\"\/wp-content\/uploads\/2019\/09\/07d7a7cf4f023f5d42ef9b31ed07a0ff.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n\u00abTrajektoor\u00bb on v\u00e4ga mugav m\u00f5isted \u2013 see sisaldab \u00fcksikasjalikku teavet k\u00f5igi kasutaja tegevuste kohta, v\u00f5imaldades lisada igasuguseid lisanduvaid andmeid nende tegevuste kirjeldusse. See muudab selle universaalseks objektiks. Kui teil on ilusad ja mugavad t\u00f6\u00f6riistad, mis v\u00f5imaldavad trajektooridega t\u00f6\u00f6tada, siis saab leida sarnasusi ja neid segmenteerida.<\/p>\n<p>Trajektooride segmenteerimine v\u00f5ib esmapilgul tunduda v\u00e4ga keeruline. Tavalistes olukordades on see t\u00f5epoolest nii \u2013 tuleb kasutada sidususe maatriksite v\u00f5rdlemist v\u00f5i j\u00e4rjestuste joondamist. Oleme leidnud lihtsama viisi \u2013 uurida suurt hulka trajektoore ja segmenteerida need klasterdamise kaudu.<\/p>\n<p>Selgus, et trajektoori saab punktiks muuta pidevate esinduste abil, n\u00e4iteks <noindex><a rel=\"nofollow\" href=\"http:\/\/datameetsmedia.com\/bag-of-words-tf-idf-explained\/\">TF-IDF<\/a><\/noindex>. P\u00e4rast teisendamist muutub trajektoor punktiks ruumis, kus telgedel on erinevate s\u00fcndmuste ja nende vaheliste \u00fcleminekute normeeritud esinemissagedus. Selle asi, mis asub tohutus tuhande- ja enamam\u00f5\u00f5tmelises ruumis (dimS=sum(s\u00fcndmuste t\u00fc\u00fcbid)+sum(ngram_2 t\u00fc\u00fcbid)), saab projekteerida tasapinnale, kasutades <noindex><a rel=\"nofollow\" href=\"https:\/\/www.quora.com\/How-does-t-SNE-work-in-simple-words\">TSNE<\/a><\/noindex>. TSNE \u2014 teisendamine, v\u00e4hendab ruumi m\u00f5\u00f5tmeid 2 teljele ja s\u00e4ilitab, kui v\u00f5imalik, suhtelised kaugused punktide vahel. Seega on v\u00f5imalik lamedal kaardil, kujutavate projektsioonikaartide trajektooridel uurida, kuidas punktid erinevate trajektooride vahel asusid. Anal\u00fc\u00fcsitakse, kui l\u00e4hedal v\u00f5i erinevad nad olid, kas nad moodustasid klastreid v\u00f5i hajusid kaardil jne:<\/p>\n<p><img decoding=\"async\" alt=\"Retentioneering: kuidas me open-source t\u00f6\u00f6riistu tooteanal\u00fc\u00fcsiks Pythonis ja Pandasis kirjutasime\" src=\"\/wp-content\/uploads\/2019\/09\/3f0386c33885cb842aec8ec01a5f47ff.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRetensioneeringi anal\u00fc\u00fcsivahendid v\u00f5imaldavad keerulise andmemassiivi ja trajektooride muutmist esitusviisiks, mida saab omavahel v\u00f5rrelda ning seej\u00e4rel uurida ja t\u00f5lgendada muundamise tulemust.<\/p>\n<p>R\u00e4\u00e4gime standardsetest trajektooride t\u00f6\u00f6tlemise meetoditest, mis h\u00f5lmavad kolme p\u00f5hivahendit, mille oleme Retentioneeringis rakendanud \u2014 graafid, step-matriidx ja trajektooride projektsioonikaardid. <\/p>\n<p>T\u00f6\u00f6 Google Analyticsi, Firebase'i ja sarnaste anal\u00fc\u00fctiliste s\u00fcsteemidega on piisavalt keeruline ja ei ole 100% efektiivne. Probleem seisneb kasutaja teatud piirangutes, mille t\u00f5ttu anal\u00fc\u00fctika t\u00f6\u00f6tab sellistes s\u00fcsteemides hiireklikkide ja l\u00f5igete valimisega. Retentioneering annab v\u00f5imaluse t\u00f6\u00f6tada kasutajate trajektooridega, mitte ainult funnelitega, nagu Google Analyticsis, kus detailide tase sageli piirdub funneliga, isegi kui see on loodud mingi segmendi jaoks. <\/p>\n<h3>Retentioneering ja juhtumiuuringud<\/h3>\n<p>\nN\u00e4iteks loodud t\u00f6\u00f6riista kasutamise kohta v\u00f5ib tuua n\u00e4ite suurest ni\u0161iteenusest Venemaal. Sellel ettev\u00f5ttel on Androidi jaoks mobiilirakendus, mis on klientide seas populaarne. Aastane k\u00e4ive mobiilirakendusest oli umbes 7 miljonit rubla, hooajalised k\u00f5ikumised j\u00e4\u00e4des vahemikku 60-130 tuhat. Samuti on sel ettev\u00f5ttel olemas iOS-i rakendus, ning '\u00f5un' rakenduse keskmine ostu summa oli suurem kui Androidi rakenduse keskmine klient \u2014 1080 rubla v\u00f5rreldes 1300 rublaga.<\/p>\n<p>Ettev\u00f5te otsustas suurendada Android-rakenduse efektiivsust, viies l\u00e4bi p\u00f5hjaliku anal\u00fc\u00fcsi. V\u00e4lja t\u00f6\u00f6tati mitu tosin h\u00fcpoteesi rakenduse tulemuslikkuse suurendamiseks. Retentioneeringu kasutamise j\u00e4rel selgus, et probleem peitus s\u00f5numites, mida n\u00e4idati uutele kasutajatele. Nad said teavet br\u00e4ndi, ettev\u00f5tte eelistest ja hindadest. Kuid nagu selgus, pidid s\u00f5numid aitama kasutajal rakendust kasutada. <\/p>\n<p><img decoding=\"async\" alt=\"Retentioneering: kuidas me open-source t\u00f6\u00f6riistu tooteanal\u00fc\u00fcsiks Pythonis ja Pandasis kirjutasime\" src=\"\/wp-content\/uploads\/2019\/09\/9e6718eb967ae65d047605e4b8a92b3e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSee tehti ja tulemusena hakati rakendust v\u00e4hem kustutama ning tellimuste konversioon kasvas 23%. Alguses suunati testimiseks 20 protsenti sisenemisest, kuid paar p\u00e4eva hiljem, anal\u00fc\u00fcsides esimesi tulemusi ja hinnates suundumust, muudeti proportsioonid peegelpildiliselt. J\u00e4tkuks j\u00e4eti 20 protsenti kontrollgrupile ja 80 protsenti testiks. Veel n\u00e4dala p\u00e4rast otsustati j\u00e4rjestikku lisada veel kahe h\u00fcpoteesi testimine. Kokku seitsme n\u00e4dala jooksul kasvas Android-rakenduse k\u00e4ive pooleteise korra v\u00f5rra v\u00f5rreldes varasema tasemega.<\/p>\n<h3>Kuidas Retentioneeringuga t\u00f6\u00f6tada?<\/h3>\n<p>\nEsimesed sammud on piisavalt lihtsad - laadime teegi alla k\u00e4su pip install retentioneering. Repositooriumis on valmis n\u00e4idised ja andmeanal\u00fc\u00fcsi juhtumid m\u00f5nede tooteanal\u00fc\u00fcsi \u00fclesannete jaoks. Komplektil on pidev t\u00e4iendamine, kuid selleks on piisavalt materjale esmakordseks tutvumiseks. Iga\u00fcks saab valmis mooduleid kasutada ja rakendada neid oma \u00fclesannetele - see v\u00f5imaldab kiiresti ja efektiivselt seadistada p\u00f5hjalikumate anal\u00fc\u00fcside ja kasutajate teekondade optimeerimise protsessi. K\u00f5ik see v\u00f5imaldab leida rakenduse kasutamise mustreid arusaadava koodi kaudu ja edastada see kogemus kolleegidele.<\/p>\n<p>Retentioneering on t\u00f6\u00f6riist, mida tasub kasutada kogu rakenduse eluea jooksul, ja siin on p\u00f5hjused:<\/p>\n<ul>\n<li>Retentioneering on efektiivne kasutajate teekondade j\u00e4lgimiseks ja pidevaks optimeerimiseks ning \u00e4rin\u00e4itajate parandamiseks. N\u00e4iteks e-kaubanduse rakendustes lisatakse sageli uusi funktsioone, mille m\u00f5ju tootetele ei pruugi alati \u00f5igesti ennustada. M\u00f5ningatel juhtudel tekivad uute ja vanade funktsioonide \u00fchilduvuse probleemid \u2014 n\u00e4iteks uued \u201ekanibaliseerivad\u201d juba olemasolevaid. Just selles olukorras on vajalik pidev teekondade anal\u00fc\u00fcs. <\/li>\n<li>Sarnane olukord on reklaamikanalitega: pidevalt testitakse uusi liiklusallikaid ja reklaamikreatiive, on oluline j\u00e4lgida hooajalisust, suundi ja teiste s\u00fcndmuste m\u00f5ju, mis toob endaga kaasa uusi probleemide klasse. Siin on samuti vajalik pidev j\u00e4lgimine ja kasutajate mehhanikate t\u00f5lgendamine. <\/li>\n<li>On mitmeid tegureid, mis pidevalt m\u00f5jutavad rakenduse toimimist. N\u00e4iteks, uued v\u00e4ljaanded arendajatelt: lahendades jooksva probleemi, toovad nad tahtmatult tagasi vana v\u00f5i loovad t\u00e4iesti uue. Aja jooksul uute v\u00e4ljaannete arv suureneb ning vigade j\u00e4lgimise protsess tuleb automatiseerida \u2014 sealhulgas kasutajate trajektooride anal\u00fc\u00fcsi abil.<\/li>\n<\/ul>\n<p>\nKokkuv\u00f5ttes on Retentioneering t\u00f5hus t\u00f6\u00f6riist. Kuid t\u00e4iustamisele ei ole piire \u2014 seda saab ja tuleb t\u00e4iustada, arendada ning selle baasil luua uusi \u00e4gedaid tooteid. Mida aktiivsem on projekti kogukond, seda rohkem on fork'e ja uusi huvitavaid kasutusv\u00f5imalusi.<\/p>\n<p>Lisainformatsioon Retentioneeringu t\u00f6\u00f6riistade kohta:<\/p>\n<ul>\n<li>Meie veebisait: <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\">Kohtumiste ajakava<\/a><\/noindex> ja registreerimine osalemiseks<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/t-do.ru\/retentioneering_meetups\">Toodete ja anal\u00fc\u00fctikute vestlus Telegramis<\/a><\/noindex><\/li>\n<li>Tasuta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/retentioneering\/retentioneering-tools\">Retentioneeringu repository GitHubis<\/a><\/noindex> <\/li>\n<\/ul>\n<p>Allikas: <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-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - 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. \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\" \/>\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\/et\/blog\/novosti-interneta\/retentioneering-kak-my-open-source-instrumenty-dlya-produktovoj-analitiki-na-python-i-pandas-napisali\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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. \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/novosti-interneta\/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: kuidas me open-source t\u00f6\u00f6riistad tootearenduse anal\u00fc\u00fcsiks Pythonis ja Pandas'is kirjutasime | ProHoster","description":"Tere, Habr. See artikkel on p\u00fchendatud nelja-aastastele arengutulemustele kasutajate liikumistee t\u00f6\u00f6tlemise meetodite ja t\u00f6\u00f6riistade komplekti kohta rakenduses v\u00f5i veebilehel. Arenduse autor on Maksim Godzi, kes juhib toote loomise meeskonda ja on samuti artikli autor. Toode sai nimeks Retentioneering, n\u00fc\u00fcd on see muudetud avatud l\u00e4htekoodiga raamatukoguks ja avaldatud Githubis, et iga\u00fcks saaks","canonical_url":"https:\/\/prohoster.info\/et\/blog\/novosti-interneta\/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":"et_EE","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. \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","og:url":"https:\/\/prohoster.info\/et\/blog\/novosti-interneta\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/38424","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=38424"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/38424\/revisions"}],"predecessor-version":[{"id":182486,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/38424\/revisions\/182486"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/28843"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=38424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=38424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=38424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}