Pourcentage du total avec Groupby dans Pandas
Le calcul du pourcentage de ventes contribué par chaque bureau au sein d'un État nécessite une approche nuancée dans Pandas. Bien que le simple regroupement par « state » et « office_id » vous donne la somme des ventes pour chaque bureau, il ne fournit pas le pourcentage de contribution au sein de l'état.
Pour y parvenir, vous devez d'abord créer un groupby objet basé sur « state » et « office_id ». Cela vous donnera un cadre de données avec la colonne des ventes contenant les ventes totales pour chaque combinaison bureau-état :
state_office = df.groupby(['state', 'office_id']).agg({'sales': 'sum'})
Pour calculer le pourcentage, vous pouvez diviser les ventes de chaque bureau par les ventes totales de cet état. Cependant, pour accéder aux ventes totales de chaque état au sein du groupby, vous devez créer un deuxième objet groupby basé sur 'state' :
state_total = df.groupby('state').agg({'sales': 'sum'})
En utilisant cet objet, vous pouvez améliorer le groupby 'state_office' avec une nouvelle colonne contenant le pourcentage de ventes pour chaque combinaison bureau-état :
state_pcts = state_office.groupby(level=0).apply(lambda x: 100 * x / float(state_total.loc[x.name]))
Notez que le paramètre 'level=0' dans 'groupby' fait référence au haut niveau de l'index multi-niveaux formé par le groupby d'origine sur 'state' et 'office_id'.
Cette approche garantit que le pourcentage de ventes de chaque bureau est calculé en faisant référence aux ventes totales dans l'état respectif.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!