Ce projet s’inscrit dans une démarche d’analyse des données marketing d’une entreprise. L’objectif est d’évaluer les performances commerciales à travers l’étude du chiffre d’affaires, des marges, ainsi que du comportement des clients.
L’analyse repose sur plusieurs bases de données contenant des informations sur les clients, les commandes, les produits et les canaux marketing.
Les données utilisées proviennent de plusieurs sources :
Ces différentes bases seront fusionnées afin de permettre une analyse globale.
Afin d’effectuer une analyse de qualité, il est nécessaire d’utliser certaines bibliothèques comme celles chargées ci-dessous :
library(dplyr)
## Warning: le package 'dplyr' a été compilé avec la version R 4.5.3
##
## Attachement du package : 'dplyr'
## Les objets suivants sont masqués depuis 'package:stats':
##
## filter, lag
## Les objets suivants sont masqués depuis 'package:base':
##
## intersect, setdiff, setequal, union
library(readxl)
library(ggplot2)
## Warning: le package 'ggplot2' a été compilé avec la version R 4.5.3
Les différentes bases de données sont importées à partir de fichiers Excel. On peut l’observer ci-après :
base_client <- read_excel("~/Etude et enquête statistiques/base client.xlsx")
base_commande <- read_excel("~/Etude et enquête statistiques/base comande.xlsx")
base_details_commandes <- read_excel("~/Etude et enquête statistiques/base details commandes.xlsx")
base_marketing <- read_excel("~/Etude et enquête statistiques/base marketing.xlsx")
base_produit <- read_excel("~/Etude et enquête statistiques/base produit.xlsx")
Pour mieux comprendre la structure des différentes bases de données, nous avons procédé à une petite exploration. On peut observer :
str(base_client)
## tibble [300 × 10] (S3: tbl_df/tbl/data.frame)
## $ Client_ID : chr [1:300] "C0001" "C0002" "C0003" "C0004" ...
## $ Nom : chr [1:300] "Durand" "Richard" "Petit" "Martin" ...
## $ Prenom : chr [1:300] "Louis" "Lea" "Lucas" "Louis" ...
## $ Sexe : chr [1:300] "F" "M" "M" "M" ...
## $ Date_naissance : POSIXct[1:300], format: "1985-06-25" "2013-04-24" ...
## $ Ville : chr [1:300] "Paris" "Nantes" "Bordeaux" "Nantes" ...
## $ Region : chr [1:300] "Nouvelle-Aquitaine" "Occitanie" "Nouvelle-Aquitaine" "Auvergne-Rhone-Alpes" ...
## $ Date_inscription : POSIXct[1:300], format: "2022-01-06" "2024-07-24" ...
## $ Canal_acquisition: chr [1:300] "SEO" "Email" "SEO" "SEA" ...
## $ Segment : chr [1:300] "VIP" "Standard" "VIP" "VIP" ...
La base clients contient des informations démographiques et comportementales (sexe, ville, segment, canal d’acquisition). Ces données permettront d’analyser les profils clients, de réaliser une segmentation et d’étudier leur contribution au chiffre d’affaires.
str(base_commande)
## tibble [800 × 6] (S3: tbl_df/tbl/data.frame)
## $ Commande_ID : chr [1:800] "O00001" "O00002" "O00003" "O00004" ...
## $ Date_commande: POSIXct[1:800], format: "2024-11-02" "2024-10-15" ...
## $ Client_ID : chr [1:800] "C0032" "C0295" "C0285" "C0079" ...
## $ Canal_vente : chr [1:800] "Online" "Magasin" "Online" "Online" ...
## $ Code_promo : chr [1:800] NA "PROMO20" NA "PROMO10" ...
## $ Mode_paiement: chr [1:800] "PayPal" "CB" "Virement" "PayPal" ...
La base commandes contient les informations liées aux achats (date, client, canal de vente, mode de paiement). Elle constitue un élément central pour le calcul du chiffre d’affaires et l’analyse des comportements d’achat.
str(base_produit)
## tibble [120 × 7] (S3: tbl_df/tbl/data.frame)
## $ Produit_ID : chr [1:120] "P0001" "P0002" "P0003" "P0004" ...
## $ Categorie : chr [1:120] "Electronics" "Maison" "Maison" "Electronics" ...
## $ Sous_categorie: chr [1:120] "Smartphone" "Cuisine" "Mobilier" "Smartphone" ...
## $ Marque : chr [1:120] "BrandA" "BrandB" "BrandB" "BrandD" ...
## $ Prix_unitaire : num [1:120] 922 537 923 578 852 ...
## $ Cout : num [1:120] 530 259 411 279 658 ...
## $ Stock_initial : num [1:120] 172 383 111 157 270 499 202 393 104 141 ...
La base produits contient les informations sur les catégories, marques, prix et coûts. Elle permet d’analyser la rentabilité des produits et d’identifier les articles les plus performants.
La fusion des tables est une étape essentielle dans l’analyse des données. Elle permet de regrouper des informations provenant de plusieurs sources en une seule base cohérente.
Dans ce projet, les données relatives aux clients, aux commandes et aux produits sont stockées dans des tables distinctes. La fusion permet donc de relier ces informations entre elles afin d’obtenir une vision globale de l’activité.
Par exemple, elle permet d’associer chaque commande à un client et à un produit, ce qui rend possible le calcul du chiffre d’affaires, de la marge, ainsi que l’analyse du comportement des clients.
data <- base_details_commandes %>%
left_join(base_commande, by = "Commande_ID") %>%
left_join(base_produit, by = "Produit_ID") %>%
left_join(base_client, by = "Client_ID")
data
Ainsi, nous avons la facilité de faire des analyses croisées et améliorer la qualité des résultats obtenus.
data$Date_commande <- as.Date(data$Date_commande)
Dans une démarche d’analyse marketing, la création d’indicateurs constitue une étape essentielle pour évaluer la performance de l’entreprise.
Ces indicateurs permettent de traduire les données brutes en informations exploitables pour la prise de décision. Dans ce projet, l’objectif est d’adopter une vision commerciale en mesurant la performance à travers des variables clés telles que le chiffre d’affaires, le coût total et la marge.
Le chiffre d’affaires permet d’évaluer le niveau d’activité, tandis que le coût total reflète les dépenses engagées. La marge, quant à elle, mesure la rentabilité et constitue un indicateur central pour apprécier la performance économique.
Par ailleurs, l’introduction d’une dimension temporelle à travers la variable “Mois” permet d’analyser l’évolution de l’activité dans le temps.
Ainsi, ces indicateurs offrent une lecture claire et synthétique des performances commerciales et facilitent l’identification des axes d’amélioration.
data <- data %>%
mutate(
Mois = format(Date_commande, "%Y-%m"),
CA = Quantite * Prix_vente,
Cout_total = Quantite * Cout,
Marge = CA - Cout_total
)
CA_total <- sum(data$CA, na.rm = TRUE)
CA_total
## [1] 3805693
Ce chiffre d’affaire traduit une forte activité et une bonne capacité à générer des ventes
Marge_totale <- sum(data$Marge, na.rm = TRUE)
Marge_totale
## [1] 1453930
Durant la période étudiée, l’entreprise a parvenu à dégager un profit, c’est ce qui explique cette marge positive. Donc, il y a une bonne maîtrise des coûts et d’une stratégie commerciale efficace.
Quantite_totale <- sum(data$Quantite, na.rm = TRUE)
Quantite_totale
## [1] 7514
Avec cette quantité, on peut conclure qu’il y a une forte attractivité des produits sur le marché.
Cette analyse permet d’identifier les produits générant le plus de chiffre d’affaires.
CA_produit <- data %>%
group_by(Produit_ID, Categorie) %>%
summarise(CA = sum(CA, na.rm = TRUE), .groups = "drop") %>%
arrange(desc(CA))
CA_produit
Cette analyse suggère que le produit P006, ELECTRONICS est celui qui génre le plus de chiffre d’affaire, avec plus de 62k sur cette période.
top_produits <- CA_produit %>%
slice_max(CA, n = 10)
top_produits
Comme on peut le remarquer, ce sont les produits de mode, maison et electronique qui sont les leviers stratégiques de l’entreprise.
Représentation Graphique :
Pour vulgariser l’information, la représentation graphique est la
méthode la plus utilisée. Comme on le dit dans le jargon, une image vaut
mille mots. Regardons cette repartition.
ggplot(top_produits, aes(x = reorder(Produit_ID, CA), y = CA)) +
geom_bar(stat = "identity", fill = "steelblue") +
coord_flip() +
labs(title = "Top 10 produits par chiffre d'affaires",
x = "Produits",
y = "CA")
Les résultats montrent que c’est plus pratique de remaquer la
repartition sur le graphique que sur un tablaeau.
CA_mensuel <- data %>%
group_by(Mois) %>%
summarise(CA = sum(CA, na.rm = TRUE), .groups = "drop") %>%
arrange(Mois)
CA_mensuel
Nous constatons une augmentation considérable du CA en Avril et Mai 2024 si on les compare à ceux de 2023; ainsi, on peut dire qu’il y a une réussite au niveau des actions commerciales(pub, marketing,…)
Représenation graphique :
On peut mieux observer cette évolution à travers cette courbe
ggplot(CA_mensuel, aes(x = Mois, y = CA, group = 1)) +
geom_line(color = "red") +
labs(title = "Evolution du chiffre d'affaires",
x = "Mois",
y = "CA") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
La courbe a été un bon choix pour observer cette évolution.
CA_canal <- data %>%
group_by(Canal_vente) %>%
summarise(CA = sum(CA, na.rm = TRUE), .groups = "drop") %>%
arrange(desc(CA))
CA_canal
Malgré l’évolution des ventes en lignes,le canal magasin génère plus de CA, ce qui peut s’expliquer par une préférence des clients pour l’achat physique ou une meilleure expérience en point de vente.
Représentation graphique :
A travers ce garphique en barres, on peut mieux visualiser cette
différence
ggplot(CA_canal, aes(x = reorder(Canal_vente, CA), y = CA)) +
geom_bar(stat = "identity", fill = "darkred") +
coord_flip() +
labs(title = "CA par canal de vente",
x = "Canal",
y = "CA")
Ce graphique suggère que les ventes physiques restent encore
importantes.
Cette analyse identifie les clients les plus importants en termes de chiffre d’affaires. C’est une méthode utilisée pour évaluer la fidélité des clients. On peut l’utliser pour récompenser s’il y a à ces top clients.
CA_clients <- data %>%
group_by(Client_ID, Ville, Segment) %>%
summarise(CA = sum(CA, na.rm = TRUE), .groups = "drop") %>%
arrange(desc(CA))
head(CA_clients, 10)
S’il y a une récompense, le client C0044 résident à Marseille serait le premier à la recevoir puisqu’il est le client qui génère le chiffre d’affaire pour l’entreprise.
Cette partie permet de comparer les performances selon les segments de clients.On essaye de savoir quel type de clients revient le plus souvent, mais aussi de mésurer le cout d’opportinuté.
CA_segment <- data %>%
group_by(Segment) %>%
summarise(
CA = sum(CA, na.rm = TRUE),
Nb_clients = n_distinct(Client_ID),
.groups = "drop"
)
CA_segment
Que ça soit en terme de CA ou nombre de clients, il y a un équilbre entre les différents segments, puisqu’on observe qu’une légre différence. On peut dire que notre produit intéresse tout le monde même si les segments Premium et VIP sont ceux qui contribuent au plus au chiffre d’affaires global.
L’analyse selon le genre permet d’identifier d’éventuelles différences de comportement.
CA_sexe <- data %>%
group_by(Sexe) %>%
summarise(CA = sum(CA, na.rm = TRUE), .groups = "drop")
CA_sexe
On observe une légère dominance du chiffre d’affaires généré par les hommes.
Cette étude avait pour objectif d’analyser les performances commerciales d’une entreprise à partir de données marketing issues de plusieurs sources (clients, commandes, produits et marketing). La fusion de ces bases a permis de construire une vision globale de l’activité et de répondre à plusieurs questions stratégiques liées aux ventes et au comportement des clients.
Les résultats obtenus montrent que l’entreprise réalise un chiffre d’affaires global de 3 805 693, avec une marge de 1 453 930, ce qui confirme une activité globalement rentable. Le volume total de ventes, estimé à 7 514 unités, témoigne également d’une forte dynamique commerciale.
L’analyse a permis de répondre aux principales questions posées dans l’étude :
Globalement, l’analyse montre que la performance de l’entreprise repose principalement sur un ensemble de produits et de segments clients stratégiques, ce qui constitue à la fois une force et un point d’attention pour la diversification des revenus.
À la lumière de ces résultats, plusieurs axes d’amélioration peuvent être proposés :
Cette analyse fournit une vision claire et structurée des performances commerciales de l’entreprise. Elle constitue une base solide pour orienter les décisions stratégiques, améliorer la rentabilité et optimiser les actions marketing futures.