J'ai besoin d'aide pour ce qui suit, s'il vous plaît et merci d'avance.

J'ai le code suivant pour regrouper par semaines :

weekdf = pd.DataFrame(df.groupby(['type', pd.Grouper(key='date', freq='W-SAT')])['id'].count())

Cela me donne le df suivant :

type        date        id  
expired     2019-11-09  62
            2019-11-16  87
            2019-11-23  26
multi       2019-11-09  10
            2019-11-16  14
            2019-11-23  8
single      2019-11-09  296
            2019-11-16  300
            2019-11-23  230

Ce que je voudrais, c'est avoir un df qui me donne le pourcentage hebdomadaire du total.

Quelque chose comme...

Pourcentage = par semaine, nombre / somme des identifiants expirés, multiples et uniques :

type        date        id   percent
expired     2019-11-09  62   16.85%
            2019-11-16  87   21.70%
            2019-11-23  26   9.85%
multi       2019-11-09  10   2.72%
            2019-11-16  14   3.49%
            2019-11-23  8    3.03%
single      2019-11-09  296  80.43%
            2019-11-16  300  74.81%
            2019-11-23  230  87.12%

Merci pour l'aide!

Code pour reproduire le dataframe:

l = [{'type': 'expired', 'date': '09-11-2019', 'id': 62},
{'type': 'expired', 'date': '16-11-2019', 'id': 87},
 {'type': 'expired', 'date': '23-11-2019', 'id': 26},
 {'type': 'multi', 'date': '09-11-2019', 'id': 10},
 {'type': 'multi', 'date': '16-11-2019', 'id': 14},
 {'type': 'multi', 'date': '23-11-2019', 'id': 8},
 {'type': 'single', 'date': '09-11-2019', 'id': 296},
 {'type': 'single', 'date': '16-11-2019', 'id': 300},
 {'type': 'single', 'date': '23-11-2019', 'id': 230}]

weekdf = pd.DataFrame(l)
weekdf['date'] = pd.to_datetime(weekdf['date'])
weekdf = weekdf.set_index(['type','date'])
print(weekdf)
1
a1234 27 janv. 2020 à 20:03

1 réponse

Meilleure réponse