{"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\/nl\/blog\/news\/retentioneering-kak-my-open-source-instrumenty-dlya-produktovoj-analitiki-na-python-i-pandas-napisali","title":{"rendered":"Retentioneering: hoe we open-source tools voor productanalyses in Python en Pandas hebben geschreven","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo, Habr. Dit artikel is gewijd aan de resultaten van vier jaar ontwikkeling van een set methoden en tools voor het verwerken van gebruikersbewegingspaden in een applicatie of op een website. De auteur van de ontwikkeling is <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/mgodzi\/\">Maxim Godzi<\/a><\/noindex>, die aan het hoofd staat van het team van productmakers en tevens de auteur van dit artikel is. Het product zelf heeft de naam Retentioneering gekregen, en is nu omgevormd tot een open-source bibliotheek en is op Github geplaatst, zodat iedereen het kan gebruiken. Dit kan interessant zijn voor degenen die betrokken zijn bij product- en marketinganalyse, promotie en productontwikkeling. Trouwens, op Habr <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/binarydistrict\/blog\/437534\/\">is al een artikel gepubliceerd over een van de cases met Retentioneering<\/a><\/noindex>. In het nieuwe materiaal wordt uitgelegd waartoe het product in staat is en hoe het gebruikt kan worden.<\/p>\n<p>Na het lezen van het artikel kunt u uw eigen Retentioneering schrijven, dat kan elke gestandaardiseerde methode voor het verwerken van gebruikerspaden in de applicatie en daarbuiten zijn, waarmee de gedragskenmerken gedetailleerd zichtbaar worden en inzichten voor de groei van zakelijke metrics kunnen worden verkregen. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Wat is Retentioneering en waarom is het nodig?<\/h3>\n<p>\nOorspronkelijk was ons doel om Growth Hacking van de wereld van 'digitale sjamanisme' naar de wereld van cijfers, analyses en voorspellingen te vertalen. Dit leidde tot het reduceren van productanalyse tot pure wiskunde en programmeren voor degenen die in plaats van fantastische verhalen de voorkeur geven aan cijfers, en waarbij formules meer zijn dan slimme woorden zoals 'rebranding', 'herpositionering' enz., die mooi klinken, maar praktisch weinig helpen. <\/p>\n<p>Voor het oplossen van de genoemde taken was een framework nodig voor analyses via grafen en trajecten, en tegelijkertijd een bibliotheek die typische routinetaken van analisten vergemakkelijkt, als een manier om reguliere taken van productanalyse te beschrijven die zowel voor mensen als voor robots begrijpelijk zou zijn. De bibliotheek biedt de mogelijkheid om gebruikersgedrag te beschrijven en het te koppelen aan de zakelijke metrics van het product in een formele en duidelijke taal, zodat routineachtige taken van ontwikkelaars en analisten worden vereenvoudigd en geautomatiseerd, en hun communicatie met het bedrijfsleven wordt vergemakkelijkt.<\/p>\n<p><b>Retentioneering is een methode en analytische softwaretools die kunnen worden aangepast en ge\u00efntegreerd in elk digitaal (en niet alleen) product. <\/b><\/p>\n<p>We begonnen in 2015 met de ontwikkeling van het product. Nu is het al een kant-en-klaar, hoewel nog niet perfect, pakket van tools in Python en Pandas voor dataverwerking, machine learning modellen met een sklearn-achtige API, en tools voor het interpreteren van de resultaten van machine learning modellen zoals eli5 en shap. <\/p>\n<p>Dit alles is verpakt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/retentioneering\/retentioneering-tools\">in een handige open-source bibliotheek in een openbaar GitHub-repository \u2014 retentioneering-tools.<\/a><\/noindex>De bibliotheek is gemakkelijk te gebruiken, vrijwel iedereen die ge\u00efnteresseerd is in productanalyse, maar nog nooit eerder code heeft geschreven, kan onze analysemethoden zelfstandig en zonder veel tijd te verliezen toepassen op zijn eigen gegevens. <\/p>\n<p>Een programmeur, een app-ontwikkelaar of een lid van het ontwikkelingsteam of de testgroep, die nog nooit eerder met analytics bezig is geweest, kan beginnen te experimenteren met deze code en patronen in het gebruik van zijn app zien zonder hulp van buitenaf. <\/p>\n<h3>De gebruikersroute als basisanalyseelement en methoden voor het verwerken ervan.<\/h3>\n<p>\n<b>De gebruikersroute is de reeks toestanden van de gebruiker op bepaalde tijdstippen.<\/b> Bovendien kunnen de gebeurtenissen uit verschillende gegevensbronnen komen, zowel online als offline. Gebeurtenissen die zich met de gebruiker hebben voorgedaan, zijn een deel van zijn route. Voorbeelden:<br \/>\n\u2022 drukte op de knop<br \/>\n\u2022 zag een afbeelding<br \/>\n\u2022 kwam op het scherm terecht<br \/>\n\u2022 ontving een e-mail<br \/>\n\u2022 raadde het product aan een vriend<br \/>\n\u2022 vulde een formulier in<br \/>\n\u2022 tikte op het scherm<br \/>\n\u2022 scrolde<br \/>\n\u2022 kwam bij de kassa<br \/>\n\u2022 bestelde een burrito<br \/>\n\u2022 at de burrito op<br \/>\n\u2022 kreeg een voedselvergiftiging van de gegeten burrito<br \/>\n\u2022 kwam het caf\u00e9 binnen via de achteringang<br \/>\n\u2022 kwam binnen via de hoofdingang<br \/>\n\u2022 sloot de app af<br \/>\n\u2022 ontving een pushmelding<br \/>\n\u2022 staarde langer op het scherm dan tijd X<br \/>\n\u2022 betaalde de bestelling<br \/>\n\u2022 haalde de bestelling op<br \/>\n\u2022 kreeg een kredietweigering<\/p>\n<p>Als je de gegevens van de routes van een groep gebruikers neemt en bestudeert hoe de overgangen zijn opgebouwd, kun je volgen hoe hun gedrag in de applicatie tot stand komt. Dit kan handig worden gedaan via een grafiek, waarin de toestanden knooppunten zijn en de overgangen tussen toestanden de randen zijn:<\/p>\n<p><img decoding=\"async\" alt=\"Retentioneering: hoe we open-source tools voor productanalyses in Python en Pandas hebben geschreven\" src=\"\/wp-content\/uploads\/2019\/09\/07d7a7cf4f023f5d42ef9b31ed07a0ff.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nHet begrip \"Traject\" is zeer praktisch \u2013 het bevat gedetailleerde informatie over alle acties van de gebruiker, met de mogelijkheid om aanvullende gegevens aan de beschrijving van deze acties toe te voegen. Dit maakt het tot een universeel object. Als je mooie en handige tools hebt die het werken met trajecten mogelijk maken, kun je overeenkomsten vinden en deze segmenteren.<\/p>\n<p>Segmentatie van trajecten kan aanvankelijk als iets zeer complex worden ervaren. In normale situaties is dat ook zo \u2013 je moet matrixvergelijkingen gebruiken of sequenties uitlijnen. Wij hebben echter een eenvoudigere manier gevonden: het bestuderen van een groot aantal trajecten en deze segmenteren via clustering.<\/p>\n<p>Het blijkt mogelijk om een traject in een punt om te zetten met behulp van continue representaties, bijvoorbeeld, <noindex><a rel=\"nofollow\" href=\"http:\/\/datameetsmedia.com\/bag-of-words-tf-idf-explained\/\">TF-IDF<\/a><\/noindex>. Na de transformatie wordt het traject een punt in de ruimte, waar de genormaliseerde frequentie van verschillende gebeurtenissen en overgangen tussen deze gebeurtenissen op de assen is uitgezet. Dit object uit een enorm duizend- en meer-dimensionaal ruimte (dimS=sum(event types)+sum(ngrams_2 types)) kan worden geprojecteerd op een vlak met behulp van <noindex><a rel=\"nofollow\" href=\"https:\/\/www.quora.com\/How-does-t-SNE-work-in-simple-words\">TSNE<\/a><\/noindex>. TSNE is een transformatie die de dimensionaliteit van de ruimte reduzert tot 2 assen en zoveel mogelijk de relatieve afstanden tussen de punten behoudt. Het is dus mogelijk om op een platte kaart, een beeldvormende projectiekaart van trajecten, te bestuderen hoe de punten van verschillende trajecten zich tot elkaar verhielden. Het wordt geanalyseerd hoe dicht of verschillend ze van elkaar waren, of er clusters werden gevormd of dat ze verspreid waren over de kaart, enzovoort:<\/p>\n<p><img decoding=\"async\" alt=\"Retentioneering: hoe we open-source tools voor productanalyses in Python en Pandas hebben geschreven\" src=\"\/wp-content\/uploads\/2019\/09\/3f0386c33885cb842aec8ec01a5f47ff.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAnalyseertools van Retentioneering maken het mogelijk om een complexe dataset en trajecten om te zetten in een representatie die met elkaar vergeleken kan worden, om vervolgens het resultaat van de transformatie te onderzoeken en te interpreteren.<\/p>\n<p>Wanneer we spreken over de standaardmethoden voor het verwerken van trajecten, verwijzen we naar drie belangrijke tools die we in Retentioneering hebben ge\u00efmplementeerd: grafen, stapmatrices en projectiekaarten van trajecten. <\/p>\n<p>Werken met Google Analytics, Firebase en vergelijkbare analysetools is behoorlijk complex en niet 100% effectief. Het probleem ligt in een aantal beperkingen voor de gebruiker, waardoor het werk van een analist in dergelijke systemen beperkt blijft tot klikken met de muis en het kiezen van segmenten. Retentioneering biedt de mogelijkheid om te werken met gebruikerspaden, niet alleen met funnels, zoals in Google Analytics, waar het detailniveau vaak wordt teruggebracht tot een funnel, zelfs als deze is gebouwd voor een bepaald segment. <\/p>\n<h3>Retentioneering en casestudy's<\/h3>\n<p>\nAls voorbeeld van het gebruik van het ontwikkelde hulpmiddel kan de casus van een grote niche-service in Rusland worden genoemd. Dit bedrijf heeft een mobiele applicatie voor Android die populair is bij klanten. De jaarlijkse omzet van de mobiele applicatie bedroeg ongeveer 7 miljoen roebel, met seizoensgebonden fluctuaties tussen 60 en 130 duizend. Hetzelfde bedrijf heeft ook een iOS-applicatie, en de gemiddelde besteding per gebruiker van de 'Apple'-app was hoger dan die van de klant die de Android-app gebruikte \u2014 1080 roebel versus 1300 roebel.<\/p>\n<p>Het bedrijf besloot de effectiviteit van de Android-app te verhogen en voerde een grondige analyse uit. Er werden verschillende tientallen hypotheses opgesteld om de effectiviteit van de applicatie te verhogen. Na gebruik van Retentioneering bleek dat het probleem lag in de berichten die aan nieuwe gebruikers werden getoond. Ze ontvingen informatie over het merk, de voordelen van het bedrijf en de prijzen. Maar zoals bleek, hadden de berichten de gebruiker moeten helpen om te leren werken met de applicatie. <\/p>\n<p><img decoding=\"async\" alt=\"Retentioneering: hoe we open-source tools voor productanalyses in Python en Pandas hebben geschreven\" src=\"\/wp-content\/uploads\/2019\/09\/9e6718eb967ae65d047605e4b8a92b3e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDit is gedaan, waardoor het aantal verwijderingen van de applicatie afnam en de conversiegroei naar bestellingen 23% bedroeg. Aanvankelijk werd 20 procent van het binnenkomende verkeer voor de test gebruikt, maar na enkele dagen, na het analyseren van de eerste resultaten en het evalueren van de trend, werden de verhoudingen omgekeerd en werden 20 procent voor de controlegroep gelaten, terwijl tachtig procent in de test werd geplaatst. Een week later werd besloten om ook de test van twee extra hypotheses geleidelijk toe te voegen. In totaal steeg de omzet van de Android-app in zeven weken tijd anderhalf keer in vergelijking met het vorige niveau.<\/p>\n<h3>Hoe werkt je met Retentioneering?<\/h3>\n<p>\nDe eerste stappen zijn vrij eenvoudig \u2014 installeer de bibliotheek met het commando pip install retentioneering. In de repository staan kant-en-klare voorbeelden en case studies voor het verwerken van gegevens voor bepaalde productanalyses. De set wordt voortdurend aangevuld, maar is voorlopig voldoende voor een eerste kennismaking. Iedereen kan kant-en-klare modules gebruiken en deze onmiddellijk toepassen op zijn taken \u2014 dit stelt je in staat om het proces van gedetailleerdere analyses en optimalisatie van gebruikerspaden snel en effectief op te zetten. Dit alles biedt de mogelijkheid om gebruikspatronen van de applicatie te ontdekken door middel van begrijpelijke code en deze ervaring door te geven aan collega's.<\/p>\n<p>Retentioneering is een tool die gedurende de hele levensduur van een applicatie gebruikt moet worden, en hier is waarom:<\/p>\n<ul>\n<li>Retentioneering is effectief voor het volgen en continu optimaliseren van gebruikerspaden en het verbeteren van zakelijke prestaties. Zo worden in e-commerceapplicaties vaak nieuwe functies toegevoegd waarvan de invloed op het product niet altijd correct kan worden voorspeld. In sommige gevallen ontstaan er compatibiliteitsproblemen tussen nieuwe en oude functies \u2014 bijvoorbeeld, nieuwe functies 'kannibaliseren' al bestaande. En in deze situatie is continue analyse van paden precies wat nodig is. <\/li>\n<li>Een vergelijkbare situatie doet zich voor bij het werken met reclamekanalen: er worden voortdurend nieuwe verkeersbronnen en advertentiecreaties getest, en het is noodzakelijk om de seizoensgebondenheid, trends en de invloed van andere gebeurtenissen te volgen, wat leidt tot nieuwe klassen problemen. Ook hier is continue monitoring en interpretatie van gebruikersmechanismen vereist. <\/li>\n<li>Er zijn een hele reeks factoren die voortdurend invloed uitoefenen op de werking van de applicatie. Bijvoorbeeld, nieuwe releases van ontwikkelaars: door een actueel probleem op te lossen, brengen ze onbedoeld een oud probleem terug of cre\u00ebren ze een geheel nieuw probleem. Na verloop van tijd groeit het aantal nieuwe releases, en het proces van foutopsporing moet worden geautomatiseerd \u2014 ook door middel van het analyseren van gebruikerspaden.<\/li>\n<\/ul>\n<p>\nOver het geheel genomen is Retentioneering een effectief instrument. Maar perfectie kent geen grenzen \u2014 het kan en moet verbeterd worden, ontwikkeld worden en er kunnen nieuwe geweldige producten op gebaseerd worden. Hoe actiever de community van het project, hoe meer forks er zullen zijn en hoe meer interessante gebruiksmogelijkheden er zullen ontstaan.<\/p>\n<p>Extra informatie over de tools van Retentioneering:<\/p>\n<ul>\n<li>Onze website: <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\">Agenda van meetups<\/a><\/noindex> en registratie om deel te nemen<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/t-do.ru\/retentioneering_meetups\">Chat van productmanagers en analisten op Telegram<\/a><\/noindex><\/li>\n<li>Gratis <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/retentioneering\/retentioneering-tools\">Retentioneering repository op GitHub<\/a><\/noindex> <\/li>\n<\/ul>\n<p>Bron: <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\/nl\/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=\"nl_NL\" \/>\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\/nl\/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: hoe we open-source tools voor productanalyse in Python en Pandas hebben geschreven | ProHoster","description":"Hallo, Habr. Dit artikel is gewijd aan de resultaten van vier jaar ontwikkeling van een set methoden en tools voor het verwerken van gebruikersbewegingen in een applicatie of op een website.","canonical_url":"https:\/\/prohoster.info\/nl\/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":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/38424","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=38424"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/38424\/revisions"}],"predecessor-version":[{"id":182486,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/38424\/revisions\/182486"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/28843"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=38424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=38424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=38424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}