Pandas & NumPy Academy · Leçon

Calcul du chiffre d’affaires et création de variables

Calculez le chiffre d’affaires par ligne, créez des colonnes pour le mois et le trimestre et ajoutez un indicateur de remise pour les commandes dépassant un seuil.

Leçon 2 sur 413 étapes

Calcul du chiffre d’affaires et création de variables est une leçon Pandas & NumPy Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Pandas & NumPy Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Pandas & NumPy Academy comprend 4 leçons au total.

Calcul du chiffre d’affaires par ligne

Le calcul le plus fondamental dans un jeu de données de ventes est le chiffre d’affaires par ligne : le produit de la quantité par le prix unitaire pour chaque ligne. Créez cette colonne au moyen d’une multiplication vectorisée afin que NumPy traite toutes les lignes simultanément, sans boucle Python. Cette colonne sert de base à tous les regroupements de l’analyse.

import pandas as pd

df = pd.read_parquet('sales_clean.parquet')

df['revenue'] = df['quantity'] * df['unit_price']
print(df[['quantity', 'unit_price', 'revenue']].head())

Extraction des colonnes du mois et du trimestre

Le regroupement par période calendaire est essentiel pour analyser les tendances. Utilisez l’accesseur .dt sur une colonne de dates et heures pour extraire l’année, le mois et le trimestre. Le stockage de ces valeurs dans des colonnes entières distinctes accélère les opérations groupby et permet de filtrer facilement par période sans analyser à nouveau les chaînes de caractères.

df['year'] = df['order_date'].dt.year
df['month'] = df['order_date'].dt.month
df['quarter'] = df['order_date'].dt.quarter
df['year_month'] = df['order_date'].dt.to_period('M')

print(df[['order_date', 'year', 'month', 'quarter', 'year_month']].head())

Création d’un indicateur de remise

Les règles métier définissent souvent un indicateur de remise : les commandes dont le total dépasse un seuil bénéficient d’une remise. Utilisez np.where ou une comparaison booléenne pour créer efficacement cette colonne binaire. Un indicateur de remise permet aux analystes de comparer les distributions de chiffre d’affaires entre les commandes remisées et celles au prix plein en un seul appel à groupby.

import numpy as np

DISCOUNT_THRESHOLD = 500

df['is_discounted'] = np.where(df['revenue'] >= DISCOUNT_THRESHOLD, 1, 0)

print(df['is_discounted'].value_counts())
print(df.groupby('is_discounted')['revenue'].mean())

Calcul de la colonne de marge bénéficiaire

Si le jeu de données comprend une colonne cost_price, vous pouvez calculer la marge bénéficiaire avec (unit_price - cost_price) / unit_price. Utilisez clip(lower=0) pour limiter à zéro les marges négatives dues à des erreurs dans les données avant de poursuivre l’analyse. Les colonnes de marge permettent d’effectuer des regroupements axés sur le bénéfice, en complément de ceux portant sur le chiffre d’affaires.

df['margin'] = ((df['unit_price'] - df['cost_price']) / df['unit_price']).clip(lower=0)

print(df[['unit_price', 'cost_price', 'margin']].describe())

Caractéristique : nombre de jours depuis la première commande

Le nombre de jours entre la première commande d’un client et sa commande actuelle constitue une caractéristique utile d’ancienneté client. Calculez-le en regroupant les données par customer_id, en prenant la date minimale comme date de référence de la cohorte, puis en la soustrayant de la date de chaque ligne. L’arithmétique sur les durées renvoie une colonne de valeurs timedelta64 que vous convertissez en nombre entier de jours avec .dt.days.

first_order = df.groupby('customer_id')['order_date'].transform('min')
df['days_since_first_order'] = (df['order_date'] - first_order).dt.days

print(df[['customer_id', 'order_date', 'days_since_first_order']].head())

Catégorie de taille de commande avec pd.cut

Répartissez la colonne revenue dans des catégories de taille libellées à l’aide de pd.cut() afin de créer une caractéristique ordinale pour la segmentation. Fournissez des bins et des labels explicites correspondant à vos définitions métier des petites, moyennes et grandes commandes. La colonne obtenue est une colonne catégorielle Pandas, qui se regroupe efficacement.

bins = [0, 100, 500, 2000, float('inf')]
labels = ['Small', 'Medium', 'Large', 'Enterprise']

df['order_size'] = pd.cut(df['revenue'], bins=bins, labels=labels)
print(df['order_size'].value_counts())

Chiffre d’affaires cumulé au fil du temps

Triez le DataFrame par order_date et utilisez cumsum() sur la colonne du chiffre d’affaires pour suivre l’accumulation du chiffre d’affaires total au cours de l’année. Cette série cumulée permet de repérer facilement si le chiffre d’affaires augmente de manière linéaire, s’accélère ou plafonne, et sert de base à un graphique en cascade ou en courbe cumulée.

df_sorted = df.sort_values('order_date')
df_sorted['cumulative_revenue'] = df_sorted['revenue'].cumsum()

print(df_sorted[['order_date', 'revenue', 'cumulative_revenue']].tail())

Caractéristique : week-end ou jour ouvré

La propriété dt.day_of_week renvoie une valeur de 0 (lundi) à 6 (dimanche). Marquez le samedi (5) et le dimanche (6) comme des commandes du week-end afin de vérifier si le comportement d’achat le week-end diffère de celui des jours ouvrés. Il s’agit d’une caractéristique courante dans l’EDA de la vente au détail et l’analyse des tests A/B.

df['is_weekend'] = df['order_date'].dt.day_of_week >= 5

print(df.groupby('is_weekend')['revenue'].agg(['mean', 'count']))

Classer les clients par chiffre d’affaires

Identifiez vos meilleurs clients en calculant le chiffre d’affaires total par customer_id avec groupby().sum(), puis en les classant avec .rank(ascending=False, method='dense'). L’ajout du classement au DataFrame principal avec map() vous permet de filtrer les N meilleurs clients au moyen d’une seule condition booléenne.

customer_revenue = df.groupby('customer_id')['revenue'].sum()
customer_rank = customer_revenue.rank(ascending=False, method='dense').astype(int)

df['customer_revenue_rank'] = df['customer_id'].map(customer_rank)
print(df[df['customer_revenue_rank'] <= 10][['customer_id', 'customer_revenue_rank']].drop_duplicates())

Normalisation du chiffre d’affaires avec un score Z

Normalisez la colonne du chiffre d’affaires sous forme de score Z afin de pouvoir comparer les tailles de commande entre différentes catégories de produits dont les fourchettes de prix sont très différentes. Utilisez (df['revenue'] - df['revenue'].mean()) / df['revenue'].std(). Les scores Z supérieurs à 3 ou inférieurs à -3 sont des valeurs atypiques statistiques qu’il convient d’examiner avant la modélisation.

mean_rev = df['revenue'].mean()
std_rev = df['revenue'].std()

df['revenue_zscore'] = (df['revenue'] - mean_rev) / std_rev

outliers = df[df['revenue_zscore'].abs() > 3]
print(f'Outlier orders: {len(outliers)}')

Enregistrement du DataFrame enrichi de caractéristiques

Après avoir ajouté les colonnes calculées, enregistrez le DataFrame enrichi afin que chaque bloc-notes utilisé par les étapes suivantes commence dans le même état cohérent. Utilisez to_parquet() pour préserver les types de données, notamment la colonne catégorielle order_size et la colonne de dates et heures order_date. Documentez les nouvelles colonnes dans un court bloc de commentaires au début du script.

# New columns added:
# revenue, year, month, quarter, year_month
# is_discounted, order_size, is_weekend
# days_since_first_order, customer_revenue_rank, revenue_zscore

df.to_parquet('sales_features.parquet', index=False)
print('Feature DataFrame saved:', df.shape)

Vérification rapide

Testez votre compréhension des concepts d’analyse de données présentés dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris à calculer les colonnes de chiffre d’affaires et de marge bénéficiaire, à extraire des caractéristiques temporelles avec l’accesseur .dt et à créer des caractéristiques telles que les indicateurs de remise, les catégories de taille de commande et les classements des clients. Nous allons maintenant étudier l’analyse avec groupby par région et par catégorie.

Gratuit pour commencer

Apprends Python avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
30
Leçons
120

Questions Fréquemment Posées

La leçon « Calcul du chiffre d’affaires et création de variables » est-elle gratuite ?

Oui — le texte complet de « Calcul du chiffre d’affaires et création de variables » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Pandas & NumPy Academy, passe à CoddyKit PRO. Le cours Pandas & NumPy Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Calcul du chiffre d’affaires et création de variables » ?

Calculez le chiffre d’affaires par ligne, créez des colonnes pour le mois et le trimestre et ajoutez un indicateur de remise pour les commandes dépassant un seuil. Tu pratiques Pandas & NumPy Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Pandas & NumPy Academy ?

Aucune expérience préalable n'est requise. Pandas & NumPy Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Calcul du chiffre d’affaires et création de variables » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Pandas & NumPy Academy ?

Oui. Chaque leçon Pandas & NumPy Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Charger et auditer le jeu de données des ventes
  2. Calcul du chiffre d’affaires et création de variables
  3. Analyse GroupBy par région et catégorie
  4. Visualisation des tendances mensuelles
← Retour à Pandas & NumPy Academy