Analysez les ventes de votre entreprise

Table des matières

Paramètres config

Haut de page    

Mission 1 : Nettoyage des données

1. Import et vérification des données

1.1 Table products

On constate plusieurs éléments :

Il n'y a aucune valeur nulle et aucune ligne en double dans le df produits

On a bien 3 catégories différentes.

On détermine leur part relative

On cherche les produits qui ont un prix inférieur ou égal à 0

Il n'y a que un produit avec un prix négatif

Notons que l'id_prod de ce produit (T_0) ne semble pas avoir le même format que les autres produits

Haut de page    

1.2 Table customers

On constate que :





Il n'y a aucune valeur nulle et aucune ligne en double dans le df clients

Il semble que l'année 2004 soit sur-représentée

On visualise avec un graph

Haut de page    

1.3 Table transactions

Plusieurs constats :






On constate qu'il n'y a pas de valeurs nulles mais qu'il y a des doublons.

On regarde de plus près ces doublons

Il semble que ces doublons concernent les cas particuliers relevés précédemment :

On poursuit l'analyse de ces doublons

On regarde dans l'ensemble de la table transactions les éléments qui concernent la session_id 's_0' pour vérifier qu'ils ne sont pas présents ailleurs

On retrouve bien les mêmes éléments

Ainsi, les éléments de test (qui ne correspondent pas à des ventes réelles) sont limités aux sessions de test et ne se retrouvent pas ailleurs. On va donc pouvoir les supprimer

Haut de page    

2. Traitement des données

2.1 Suppression des éléments de test

Les éléments à supprimer sont donc les suivants :

Haut de page    

2.2 Typage des dates

Remarque : on utilisera l'argument 'errors' avec pour valeur 'coerce'

Ainsi, si la date passée à la fonction .to_datetime ne correspond pas au format spécifié, alors celle-ci n'est pas considérée comme une date et prend une valeur nulle (NaT : Not a Time)

Il n'y a pas de valeurs nulles (normal, car on a supprimé au préalable les sessions de test)

Les données s'étalent bien de début mars 2021 (10 mois en 2021) à fin février 2022 (2 mois en 2022)

Le nombre de jours pour les différents mois de l'année calendaire est correct.

ventes = ventes_temp[['id_prod', 'session_id', 'client_id', 'date', 'session_date']] ventes.sample(4)

On constate qu'elle s'étale sur un an

Remarque : on va garder les années 2021 et 2022 (bien que n'étant qu'en 2021)

Haut de page    

2.3 Création d'un df global

2.3.1 Travail préparatoire

2.3.1.1 df Clients
Ajout de l'âge des clients
2.3.1.2 df Produits

Moins de 10% des prix dépassent les 50€

Haut de page    

2.3.2 Merge des 3 tables

Haut de page    

2.3.3 Traitement des valeurs nulles

On constate qu'il y a un article qui n'a pas de prix

--> on l'identifie

2.3.2.1 Un produit non référencé dans la table products

Il s'agit du produit avec pour id_prod 0_2245

Ce produit doit être absent de la table 'products' car on ne l'a pas détecté lors de l'étape précédente

On vérifie qu'il est absent du df 'produits'

Il est bien absent de la table produits

Il semble que les id_prod soient préfixés par la catégorie à laquelle ils appartiennent

-> on vérifie cela

On constate que les id_prod sont bien préfixés par la catégorie dont ils font partie

-> on va pourvoir ainsi imputer le prix du produit ayant pour id_prod 0_2245 par le prix moyen (ou median) de la catégorie 0

--> on calcule ces valeurs

On constate que les 2 valeurs sont proches

On va imputer par le prix moyen de la catégorie 0

2.3.2.2 Références produits jamais commandés

On constate qu'il y a 22 produits qui n'ont jamais été vendus

(sur un total de 3287 produits, soit 0,67%)


2.3.2.3 Clients qui n'ont jamais commandés

On constate qu'il y a 21 clients qui n'ont jamais passé de commandes

(sur un total de 8623 clients, soit 0,24%)


Haut de page    

2.3.4 Organisation du df global

3. Remarque

Export des données

Haut de page