Aller au contenu principal
← Retour aux articles

Pourquoi le chiffre d'affaires a-t-il considérablement augmenté ?

Pourquoi le chiffre d'affaires a-t-il considérablement augmenté ?

Analyse de l’évolution du chiffre d’affaires du magasin

Un magasin cherche à comprendre pourquoi son chiffre d’affaires a fortement augmenté entre 2017 et 2018. C’est ce que nous allons tenter d’expliquer dans cette nouvelle Analyse Flash !

Données à ma disposition

J’ai trouvé un fichier CSV contenant l’ensemble de ses ventes au cours des dernières années. Ces données vont me permettre de valider ou d’invalider mes hypothèses, voire de mettre au jour un autre facteur, moins évident, caché dans les données !

df.head()
Row ID Order ID Order Date Ship Date Ship Mode Customer ID Customer Name Segment Country City State Postal Code Region Product ID Category Sub-Category Product Name Sales
0 1 CA-2017-152156 08/11/2017 11/11/2017 Second Class CG-12520 Claire Gute Consumer United States Henderson Kentucky 42420.0 South FUR-BO-10001798 Furniture Bookcases Bush Somerset Collection Bookcase 261.9600
1 2 CA-2017-152156 08/11/2017 11/11/2017 Second Class CG-12520 Claire Gute Consumer United States Henderson Kentucky 42420.0 South FUR-CH-10000454 Furniture Chairs Hon Deluxe Fabric Upholstered Stacking Chairs,... 731.9400
2 3 CA-2017-138688 12/06/2017 16/06/2017 Second Class DV-13045 Darrin Van Huff Corporate United States Los Angeles California 90036.0 West OFF-LA-10000240 Office Supplies Labels Self-Adhesive Address Labels for Typewriters b... 14.6200
3 4 US-2016-108966 11/10/2016 18/10/2016 Standard Class SO-20335 Sean O'Donnell Consumer United States Fort Lauderdale Florida 33311.0 South FUR-TA-10000577 Furniture Tables Bretford CR4500 Series Slim Rectangular Table 957.5775
4 5 US-2016-108966 11/10/2016 18/10/2016 Standard Class SO-20335 Sean O'Donnell Consumer United States Fort Lauderdale Florida 33311.0 South OFF-ST-10000760 Office Supplies Storage Eldon Fold 'N Roll Cart System 22.3680

Comme on peut le voir, les données sont très détaillées et propres : je n’aurai donc pas besoin d’effectuer une préparation importante avant l’analyse. Petit point d’attention : la colonne Customer ID permet d’identifier les clients de manière fiable. C’est donc elle que j’utiliserai, plutôt que la colonne Customer Name.

Commençons par afficher un graphique présentant l’évolution du chiffre d’affaires au fil des années, ainsi que celle du nombre de ventes. png Ce premier graphique permet déjà de faire deux constats :

  • le chiffre d’affaires a bien augmenté entre 2017 et 2018 ;
  • le nombre de ventes suit la même tendance.

Nous disposons donc d’une première piste : la hausse du chiffre d’affaires semble liée à une augmentation du volume de ventes.

Essayons maintenant de comprendre plus précisément les mécanismes de cette croissance.

Une augmentation du nombre de clients

Pour simplifier l’analyse, je vais créer deux nouveaux DataFrames : un pour chaque année.

df_2017 = df[df['Order Date'].dt.year == 2017]
df_2018 = df[df['Order Date'].dt.year == 2018]

n_customers_2017 = df_2017['Customer ID'].nunique()
n_customers_2018 = df_2018['Customer ID'].nunique()

nouveaux_2018 = n_customers_2018 - n_customers_2017
fideles = n_customers_2018 & n_customers_2017
perdus_2017 = n_customers_2017 - n_customers_2018

print(f"Nombre de clients 2017 : {n_customers_2017}")
print(f"Nombre de clients 2018 : {n_customers_2018}")

print(f"Nouveaux clients en 2018 : {nouveaux_2018}")
print(f"Clients fidèles (2017 et 2018) : {fideles}")
print(f"Clients perdus (2017 mais pas 2018) : {perdus_2017}")
Nombre de clients 2017 : 635
Nombre de clients 2018 : 690
Nouveaux clients en 2018 : 55
Clients fidèles (2017 et 2018) : 562
Clients perdus (2017 mais pas 2018) : -55

Les trois segments progressent en nombre de clients entre 2017 et 2018. Consumer reste largement le segment le plus important en volume, mais Corporate et Home Office progressent également.

La croissance du nombre de clients est donc relativement homogène : aucun segment ne progresse de manière spectaculaire pendant que les autres stagnent.

Pour les segments Consumer et Corporate, la croissance du chiffre d’affaires provient très clairement du volume - davantage de clients et davantage de ventes - plutôt que du panier moyen, qui a même légèrement diminué. Cela signifie que ces deux segments achètent, en moyenne, des produits un peu moins chers ou en plus petites quantités par transaction, mais que cette baisse est largement compensée par la hausse du volume.

Home Office est le seul segment pour lequel les deux facteurs évoluent dans le même sens : plus de clients et un panier moyen plus élevé.

Deux hypothèses se dégagent alors :

  • un effet de mix produit : davantage de ventes dans des catégories moins chères, comme Office Supplies plutôt que Technology ;
  • un effet lié aux nouveaux clients : ceux-ci composent peut-être des paniers plus modestes que les clients historiques, ce qui serait cohérent avec une logique d’acquisition - on teste avant d’acheter davantage.

Pour départager ces hypothèses, nous allons croiser le montant moyen par vente avec le statut du client - nouveau ou fidèle - pour chaque segment. Nous pourrons ainsi déterminer si les nouveaux clients tirent réellement la moyenne vers le bas.

clients_2017 = set(df_2017['Customer ID'].unique())
clients_2018 = set(df_2018['Customer ID'].unique())

df_2018 = df_2018.copy()
df_2018['Statut'] = df_2018['Customer ID'].apply(
    lambda x: 'Nouveau' if x not in clients_2017 else 'Fidèle'
)

montant_moyen_croise = df_2018.groupby(['Segment', 'Statut'])['Sales'].mean().unstack()
print(montant_moyen_croise)

montant_moyen_croise.plot(kind='bar', figsize=(9, 5), color=['coral', 'steelblue'])
plt.title("Montant moyen par vente en 2018 : nouveaux vs fidèles, par segment")
plt.xlabel("Segment")
plt.ylabel("Montant moyen (€)")
plt.xticks(rotation=0)
plt.legend(title="Statut")
plt.grid(True, alpha=0.3, axis='y')
plt.tight_layout()
plt.show()
Statut           Fidèle     Nouveau
Segment                            
Consumer     207.967388  167.241754
Corporate    220.269204  344.460433
Home Office  236.724059  265.069702


png

Le résultat est intéressant et invalide en partie notre hypothèse initiale : la situation varie fortement selon les segments.

  • Consumer : les nouveaux clients dépensent moins que les clients fidèles (167 € contre 208 €), ce qui confirme l’hypothèse pour ce segment ;
  • Corporate : c’est exactement l’inverse, puisque les nouveaux clients dépensent beaucoup plus (345 € contre 220 €) ;
  • Home Office : l’écart est plus léger, mais les nouveaux clients dépensent également un peu plus que les fidèles (265 € contre 237 €).

Pour résumer

  1. Nombre de clients : il augmente dans les trois segments (Consumer, Corporate et Home Office).
  2. Répartition entre clients fidèles, perdus et nouveaux : la croissance repose sur plusieurs facteurs. Les fidèles génèrent du chiffre d’affaires, les nouveaux clients apportent un volume supplémentaire, tandis que le départ de certains clients en retranche une partie.
  3. Panier moyen par segment : il diminue pour Consumer et Corporate, mais augmente légèrement pour Home Office.
  4. Nouveaux clients contre clients fidèles : aucune tendance uniforme ne se dégage. Les nouveaux clients Corporate dépensent davantage, tandis que les nouveaux clients Consumer dépensent moins.

Jusqu’ici, nous avons surtout étudié les clients, mais encore assez peu le volume de ventes lui-même ou la répartition par catégorie de produits. Pour répondre rigoureusement à la question « Pourquoi le chiffre d’affaires a-t-il augmenté ? », il faudrait effectuer une décomposition du type :

delta CA = delta (nombre de ventes) × prix moyen + delta (prix moyen) × nombre de ventes.

Construisons donc un tableau de synthèse afin d’y voir plus clair :

synthese = pd.DataFrame({
    '2017': {
        'CA total': df_2017['Sales'].sum(),
        'Nombre de ventes': len(df_2017),
        'Nombre de clients': df_2017['Customer ID'].nunique(),
        'Panier moyen (vente)': df_2017['Sales'].mean(),
        'CA moyen par client': df_2017['Sales'].sum() / df_2017['Customer ID'].nunique(),
    },
    '2018': {
        'CA total': df_2018['Sales'].sum(),
        'Nombre de ventes': len(df_2018),
        'Nombre de clients': df_2018['Customer ID'].nunique(),
        'Panier moyen (vente)': df_2018['Sales'].mean(),
        'CA moyen par client': df_2018['Sales'].sum() / df_2018['Customer ID'].nunique(),
    }
})

synthese['Évolution %'] = (synthese['2018'] - synthese['2017']) / synthese['2017'] * 100
print(synthese.round(2))
                           2017       2018  Évolution %
CA total              600192.55  722052.02        20.30
Nombre de ventes        2534.00    3258.00        28.57
Nombre de clients        635.00     690.00         8.66
Panier moyen (vente)     236.86     221.62        -6.43
CA moyen par client      945.19    1046.45        10.71

Nous avons désormais notre réponse !

La hausse du chiffre d’affaires ne s’explique pas principalement par l’augmentation du nombre de clients, mais surtout par l’augmentation du nombre de ventes par client.

FacteurÉvolutionRôle
Nombre de clients+8,7 %Contribue à la croissance, mais modestement
Nombre de ventes+28,6 %Constitue le principal moteur
Panier moyen par vente-6,4 %Pèse légèrement sur la croissance
CA moyen par client+10,7 %Confirme que chaque client génère davantage de chiffre d’affaires

Pour répondre à la question

La croissance du chiffre d’affaires en 2018 s’explique avant tout par une hausse de la fréquence d’achat des clients, c’est-à-dire par un plus grand nombre de commandes. Elle ne provient ni d’une augmentation du panier moyen ni principalement de l’acquisition de nouveaux clients, même si ceux-ci y contribuent également dans une moindre mesure.

commandes_par_client_2017 = len(df_2017) / df_2017['Customer ID'].nunique()
commandes_par_client_2018 = len(df_2018) / df_2018['Customer ID'].nunique()

print(f"Commandes/client 2017 : {commandes_par_client_2017:.2f}")
print(f"Commandes/client 2018 : {commandes_par_client_2018:.2f}")
Commandes/client 2017 : 3.99
Commandes/client 2018 : 4.72

Ces résultats confirment la conclusion : chaque client passe en moyenne 4,72 commandes en 2018, contre 3,99 en 2017, soit une hausse de 18,3 % de la fréquence d’achat par client. Cette évolution est cohérente avec l’écart observé entre la croissance du nombre de ventes (+28,6 %) et celle du nombre de clients (+8,7 %).

La croissance observée en 2018 semble donc davantage liée à un effet de fidélisation et d’engagement - les clients existants reviennent plus souvent - qu’à un effet d’acquisition pure ou de montée en gamme (upsell).

C’est plutôt une bonne nouvelle pour l’entreprise : il est généralement plus simple et moins coûteux de faire revenir des clients déjà acquis que d’en trouver de nouveaux !

Les données proviennent du dataset Superstore Sales sur Kaggle.