[PYTHON] Dessiner un graphique du taux de rétention avec Matplotlib

Vous le verrez souvent en utilisant des services d'analyse tels que la fidélisation des utilisateurs et PartyTrack, qui sont l'un des indicateurs indispensables pour exécuter des applications mobiles. Cependant, dans certains cas, vous souhaitez dessiner un graphique avec vos propres données, mais vous ne souhaitez pas écrire du JavaScript sur le front Web.

La prochaine entrée que j'ai vue à ce moment-là

Making Pinterest — How Pinterest drives sustainable growth http://engineering.pinterest.com/post/86533331849/how-pinterest-drives-sustainable-growth

La carte thermique de la cohorte est dessinée avec quelque chose !! Alors, dessinons un graphique avec la même apparence en Python.

Données de taux de rétention

Supposons que vous ayez "le taux actif z de l'utilisateur acquis le x un jour après y jours" sous la forme suivante.

{
	"2014/08/16": [Valeur du jour suivant],
	"2014/08/15": [Valeur du jour suivant,Valeur après 2 jours],
	"2014/08/14": [Valeur du jour suivant,Valeur après 2 jours,Valeur après 3 jours],
	"2014/08/13": [Valeur du jour suivant,Valeur après 2 jours,Valeur après 3 jours,Valeur après 4 jours],
	...
}

Dessiner un graphique

Tout d'abord, créez un maillage avec la date d'acquisition x et les jours écoulés y de la même manière que pour le traçage des courbes de niveau.

from datetime import datetime
from matplotlib import dates
import numpy as np

vals = [
	datetime(2014, 8, 16), [0.524],
	datetime(2014, 8, 15), [0.574, 0.415],
	datetime(2014, 8, 14), [0.559, 0.440, 0.355],
	#Abréviation
]

#Jours écoulés à afficher
max_y = 35

#x est converti de datetime en nombre
x = map(lambda v: dates.date2num(v['date']), vals)
#y vaut 1(le prochain jour)Commencer à partir de
y = np.arange(1, max_y + 1)
#Créer un maillage x et y
Y, X = np.meshgrid(y, x)

La valeur du taux de rétention étant z, ajustez la longueur du tableau à y de la grille.

def expand_z(v):
    v = v['values']
    v += list(np.zeros(max_y - len(v)))
    return v
#Ajouter un tableau rempli de zéro pour aligner verticalement et horizontalement
z = map(expand_z, vals)
#Convertir en une matrice numpy
Z = np.array(z).reshape(len(z), len(z[0]))

Dessinez un pseudo tracé de couleurs à l'aide de pcolor.

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, FormatStrFormatter

fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(8, 4))

#Créer un tracé
#Spécifiez la valeur maximale pour éviter que la couleur ne change en fonction des données
im = ax.pcolor(X, Y, Z, vmax=0.6)

#Titre
ax.set_title(u'Launch Retention')
#axe y
ax.set_ylabel(u'Past Days')
ax.set_ylim(bottom=1)
#axe x
ax.set_xlim(x[0], x[-1])
#Barre de couleur
plt.colorbar(im)

# Ticks
minorLocator = MultipleLocator(5)
ax.xaxis.set_minor_locator(dates.DayLocator())
ax.xaxis.set_minor_formatter(dates.DateFormatter('%d'))
ax.xaxis.set_major_locator(dates.MonthLocator())
ax.xaxis.set_major_formatter(dates.DateFormatter('%Y %b'))
ax.xaxis.set_tick_params(which='major', pad=17)
plt.xticks(rotation=0)
plt.show()

résultat

plot.png

l'a fait. Il peut être utilisé pour voir le sentiment dans son ensemble. Si vous souhaitez suivre la rétention après une journée sous forme d'index, il est plus facile d'observer la progression si vous créez un graphique linéaire séparé ou quelque chose pour cette valeur. Dans tous les cas, si vous créez un fichier image par traitement par lots la nuit, vous pouvez l'utiliser n'importe où et c'est pratique.

Nous avons également préparé un résumé pour que vous puissiez exécuter ce code à portée de main, si vous souhaitez l'exécuter à portée de main, veuillez cliquer ici. https://gist.github.com/hagino3000/455a68a79173fff1d890

Recommended Posts

Dessiner un graphique du taux de rétention avec Matplotlib
Dessiner un graphique avec python
Dessinez un graphique lâche avec matplotlib
Comment dessiner un graphique avec Matplotlib
Afficher le graphe xy de Matplotlib avec PySimpleGUI.
(Matplotlib) Je veux dessiner un graphique avec une taille spécifiée en pixels
Album graphique matplotlib
Dessinez une surface plane avec un graphique 3D matplotlib
Dessiner un graphique d'une fonction quadratique en Python
Dessinez un graphique avec des étiquettes japonaises dans Jupyter
Dessinez une "courbe de seins" dans un graphique 3D (1)
[Python] Comment dessiner un histogramme avec Matplotlib
Dessinez une "courbe de seins" dans un graphique 3D (2)
Dessinez plusieurs photos de plusieurs dossiers sur un graphique
Mettez matplotlib dans Centos7.
Dessine un graphique avec Julia ... j'ai essayé une petite analyse
[Python] Comment dessiner un graphique linéaire avec Matplotlib
Dessin graphique avec matplotlib
Dessin graphique avec python
Afficher les images avec Matplotlib
Graphique de bande avec matplotlib
Graphique 2D dans matplotlib
Étudier les mathématiques avec Python: dessiner un graphe sympy (scipy) avec matplotlib
Traitement de fichiers multiples avec Kivy + Matplotlib + Draw Graph sur GUI
Créer un graphique SVG avec matplotlib avec heroku (affiché en japonais)
Graphique des données de séries chronologiques en Python à l'aide de pandas et matplotlib
Dessinez un graphique avec NetworkX
Intégrer le graphe matplotlib dans Tkinter
Dessinez le disque de Poancare en Python
Méthode de dessin graphique avec matplotlib
Graphique des données Excel avec matplotlib (2)
Dessiner "Dessiner une fougère par programme" en Python
Dessiner la fonction Yin en python
Affichage graphique en temps réel par matplotlib
Changements du taux d'infection à coronavirus
Dessinez un cœur en Python
Dessinez un graphique avec networkx