Maison >développement back-end >Tutoriel Python >Comment calculer le pourcentage des ventes totales par bureau à l'aide de Pandas Groupby ?

Comment calculer le pourcentage des ventes totales par bureau à l'aide de Pandas Groupby ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-12 19:19:14175parcourir

How to Calculate the Percentage of Total Sales per Office Using Pandas Groupby?

Calcul du pourcentage des ventes totales avec Pandas Groupby

Pour calculer le pourcentage des ventes totales pour chaque bureau dans un état donné, vous pouvez tirer parti du pouvoir de transformation de Pandas opération groupby. Entrons dans les détails.

Considérons un fichier CSV avec trois colonnes : state, office_id et sales. Pour regrouper les données par état et office_id et résumer les ventes, vous pouvez utiliser df.groupby(['state', 'office_id']).agg({'sales': 'sum'}).

df = pd.DataFrame({'state': ['CA', 'WA', 'CO', 'AZ'] * 3,
                   'office_id': list(range(1, 7)) * 2,
                   'sales': [np.random.randint(100000, 999999)
                             for _ in range(12)]})

df.groupby(['state', 'office_id']).agg({'sales': 'sum'})

Cette opération génère un DataFrame groupé où la somme des ventes est calculée pour chaque combinaison unique (state, office_id).

Pour déterminer le pourcentage des ventes totales pour chaque bureau, vous pouvez mettre en œuvre les stratégies suivantes :

Approche de transformation

Présentation du pouvoir transformateur de la transformation ! Appliquez-le à la colonne des ventes et divisez par la somme des ventes dans chaque État.

df['sales'] / df.groupby('state')['sales'].transform('sum')

Cette transformation donne un DataFrame avec des pourcentages, répertoriant la fraction des ventes de chaque bureau par rapport aux ventes totales dans leurs États respectifs. .

Approche multi-groupes

Vous pouvez également créer un nouvel objet groupé basé sur la colonne de ventes au sein de chacun (état, office_id). Ensuite, divisez par la somme de la colonne nouvellement regroupée.

state_office = df.groupby(['state', 'office_id']).agg({'sales': 'sum'})
state_pcts = state_office.groupby(level=0).apply(lambda x:
                                                 100 * x / float(x.sum()))

Cette approche vous donne un DataFrame similaire avec des valeurs en pourcentage, mais elle nécessite un niveau de regroupement supplémentaire.

Les deux méthodes sont efficaces calculer la contribution en pourcentage de chaque bureau aux ventes totales dans leurs États respectifs. En comprenant ces techniques, vous pouvez débloquer de nouvelles informations à partir de vos données groupées !

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn