Bonjour, je suis stagiaire Data scientist et nouveau sur Pandas. Je rencontre actuellement quelques problèmes.
Je dois à l'aide d'un fichier Excel afficher automatiquement des Cohortes. J'ai réussi à afficher les cohortes par mois. Voici le lien du programme dont je me suis inspiré il y a aussi une petite description de ce qu'est une Cohorte : http://www.gregreda.com/2015/08/23/c...s-with-python/
J'ai en effet le Dataframe suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 df_cohort_month = pd.DataFrame({ 'client' :id_client, 'charge' : charge, 'month_date_charge' : quarter_date_charge, 'active_monthly_user': active_monthly_user, 'user_applying_date' : user_applying_date}) print(df_cohort_month.head())j'utilise enfin le code ci dessous pour m'afficher les cohortes par mois :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 client charge month_date_charge active_user 0 105 1.0 2015-07 1 1 105 0.0 2015-08 0 2 105 0.0 2015-09 0 3 105 0.0 2015-10 0 4 105 0.0 2015-11 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 df_cohort_month['Cohort_Group_month'] = df_cohort_month.date_etat_termine.apply(lambda x: x.strftime('%Y-%m')) cohorts = df_cohort_month.groupby(['Cohort_Group_mois', 'date_transaction_mois']).agg({ 'charge' : np.sum, 'client' : pd.Series.nunique, 'active_monthly_user' : np.sum }` def cohort_period(df_cohort_month): df_cohort_month['Cohort_period'] = np.arange(len(df_cohort_month)) + 1 return df_cohort_month` cohorts = cohorts.groupby(level=0).apply(cohort_period) cohorts.reset_index(inplace=True) cohorts.set_index(['Cohort_Group_month','Cohort_period'], inplace=True) cohorts.rename(columns={'client': 'Newclients'}, inplace=True) print(cohorts['active_monthly_user'].head(10).unstack(0))
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Cohort_Group_mois 2015-07 2015-08 2015-09 ... 2018-04 2018-05 2018-06 Cohort_period ... 1 1.0 1.0 0.0 ... 1.0 1.0 1.0 2 0.0 1.0 0.0 ... 1.0 1.0 NaN 3 0.0 1.0 0.0 ... 1.0 NaN NaN 4 0.0 1.0 0.0 ... NaN NaN NaN 5 0.0 1.0 0.0 ... NaN NaN NaN 6 1.0 1.0 0.0 ... NaN NaN NaN 7 0.0 1.0 0.0 ... NaN NaN NaN 8 1.0 1.0 0.0 ... NaN NaN NaN 9 0.0 1.0 0.0 ... NaN NaN NaN 10 1.0 1.0 0.0 ... NaN NaN NaN
Je souhaite maintenant obtenir mes cohortes trimestriellement ! J'arrive à créer les listes Cohort_Group_quarter et Cohort_quarter_period mais je n'arrive pas à compter les clients actifs par trimestre. ( Par définition un client actif par trimestre est un client qui a effectué au moins une transaction dans le trimestre).
j'ai donc créer un second DataFrame :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 df_cohort_quarter = pd.DataFrame({ 'client' :id_client, 'charge' : transaction, 'quarter_date_charge' : quarter_date_charge, 'active_monthly_user': active_monthly_user, 'user_applying_date' : user_applying_date, }) df_cohort_quarter['Cohort_Group_quarter'] = df_cohort_quarter.user_applying_date.apply(lambda x: str(x.year)+'Q'+str(x.quarter)) df_cohort_quarter['Cohort_quarter_period '] = df_cohort_quarter.date_transaction_quarter.apply(lambda x: str(x.year)+'Q'+str(x.quarter)) print(df_cohorte_quarter.head(5)
j'ai essayé de créer une nouvelle colonne nommé 'active_quarter_user' qui utilise 'active_monthly_user' pour compter les clients actifs trimestriellement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 client ... Cohort_Group_quarter 0 105 ... 2015Q3 1 105 ... 2015Q3 2 105 ... 2015Q3 3 105 ... 2015Q3 4 105 ... 2015Q3`
J'ai essayé pas mal de choses avec des boucles et des conditions en parcourant la liste 'active_monthly_user' mais je ne suis arrivé à rien.
Je serais ravi d'entendre n'importe quelle informations susceptible de m'aider !
Merci beaucoup !
Partager