Charger et auditer le jeu de données des ventes
Importez un CSV d’enregistrements de commandes, vérifiez les dtypes et les valeurs manquantes, puis corrigez l’analyse des dates et les anomalies de quantités négatives.
Charger et auditer le jeu de données des ventes est une leçon Pandas & NumPy Academy gratuite sur CoddyKit. Ceci est la leçon 1 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.
Présentation du jeu de données des ventes
Un jeu de données de ventes classique contient des colonnes telles que order_id, order_date, customer_id, product, category, quantity, unit_price et region. Avant toute analyse, vous devez charger ce fichier et examiner rapidement sa structure. L’objectif de cette première étape est de comprendre quelles données vous avez avant d’écrire la moindre formule.
import pandas as pd
df = pd.read_csv('sales.csv')
print(df.shape) # (rows, columns)
print(df.head())Vérifier la forme et les noms des colonnes
Après le chargement, vérifiez immédiatement df.shape pour connaître les dimensions du jeu de données et df.columns pour afficher tous les noms de colonnes. Cela confirme que le fichier a été chargé correctement et indique si certains noms de colonnes contiennent des espaces inattendus ou des majuscules à normaliser. Un nombre de colonnes différent de celui attendu est un premier signe d’alerte indiquant que le fichier est peut-être corrompu.
print('Rows, Cols:', df.shape)
print('Columns:', df.columns.tolist())
print('Index:', df.index[:5].tolist())Examiner les types de données avec dtypes
Utilisez df.dtypes ou df.info() pour afficher le type de données déduit pour chaque colonne. Parmi les problèmes courants, on trouve les colonnes de dates chargées comme object (chaîne) et les colonnes numériques chargées comme object à cause de virgules ou de symboles monétaires indésirables. Détecter rapidement les problèmes de type de données évite des erreurs silencieuses dans les calculs ultérieurs.
print(df.dtypes)
# More detail including non-null counts
df.info()Compter les valeurs manquantes
Exécutez df.isna().sum() pour compter les valeurs NaN de chaque colonne. Convertissez le résultat en pourcentage avec df.isna().mean() * 100 afin de connaître la proportion manquante dans chaque colonne. Les colonnes contenant plus de 30 à 40 % de valeurs manquantes nécessitent généralement une décision : supprimer la colonne, imputer les valeurs ou la signaler comme variable indicatrice distincte.
missing = df.isna().sum()
missing_pct = df.isna().mean() * 100
print(pd.DataFrame({'count': missing, 'pct': missing_pct}))Détecter les lignes en double
Les enregistrements de commandes en double gonflent les totaux de chiffre d’affaires et faussent toute analyse par client. Utilisez df.duplicated().sum() pour compter les doublons exacts et df.duplicated(subset=['order_id']).sum() pour vérifier la répétition des identifiants de commande, qui devraient être uniques. Repérer les doublons au chargement permet d’économiser des heures de débogage par la suite.
print('Exact duplicates:', df.duplicated().sum())
print('Duplicate order_ids:', df.duplicated(subset=['order_id']).sum())
# Preview the duplicated rows
print(df[df.duplicated(subset=['order_id'], keep=False)].head())Corriger l’analyse de la colonne de dates
Une colonne de dates chargée comme object doit être convertie avec pd.to_datetime() afin de permettre les calculs sur les dates. Transmettez format='%Y-%m-%d' si vous connaissez le format, ou utilisez infer_datetime_format=True pour des formats mixtes. Après la conversion, extrayez l’année et le mois avec l’accesseur .dt pour effectuer des regroupements temporels.
df['order_date'] = pd.to_datetime(df['order_date'], format='%Y-%m-%d')
df['year'] = df['order_date'].dt.year
df['month'] = df['order_date'].dt.month
print(df[['order_date', 'year', 'month']].head())Repérer les quantités négatives
Les valeurs quantity négatives représentent généralement des retours ou des erreurs de saisie. Utilisez l’indexation booléenne pour les trouver : df[df['quantity'] < 0]. Décidez si vous devez les traiter comme des retours légitimes (les conserver avec un indicateur) ou comme des erreurs (les supprimer ou les corriger). Documentez toujours votre décision afin que le pipeline soit reproductible.
negatives = df[df['quantity'] < 0]
print(f'Negative quantity rows: {len(negatives)}')
print(negatives.head())
# Flag returns separately
df['is_return'] = df['quantity'] < 0Vérifier les plages des colonnes numériques
Utilisez df.describe() pour afficher le minimum, le maximum, la moyenne et les quartiles de chaque colonne numérique. Un unit_price dont le minimum est nul ou négatif est suspect. Une valeur maximale de quantity très supérieure à toute taille de commande raisonnable peut être une erreur de saisie. La vérification de cohérence des plages est un moyen rapide de repérer les anomalies.
print(df[['quantity', 'unit_price']].describe())
# Any price exactly 0?
print('Zero price rows:', (df['unit_price'] == 0).sum())Auditer les colonnes catégorielles
Pour des colonnes comme region et category, utilisez df['region'].value_counts() pour voir toutes les valeurs uniques et leur fréquence. Recherchez les fautes de frappe, les différences incohérentes de casse (par exemple 'north' et 'North') ou les valeurs inattendues qui révèlent des problèmes dans les données en amont. Standardisez-les avant toute opération groupby.
print(df['region'].value_counts())
print(df['category'].value_counts())
# Normalise capitalisation
df['region'] = df['region'].str.strip().str.title()Création d’un résumé d’audit
Un DataFrame de résumé d’audit structuré aide à communiquer les problèmes de qualité des données aux parties prenantes. Créez-en un en rassemblant dans un dictionnaire des indicateurs tels que le nombre de lignes, le nombre de colonnes, le nombre de valeurs manquantes et le nombre de doublons, puis en convertissant ce dictionnaire en DataFrame. Ce résumé devient la première section de votre rapport d’analyse et justifie chaque étape de nettoyage effectuée.
audit = {
'rows': len(df),
'columns': len(df.columns),
'missing_cells': df.isna().sum().sum(),
'duplicate_rows': df.duplicated().sum(),
'date_range_start': df['order_date'].min(),
'date_range_end': df['order_date'].max()
}
for k, v in audit.items():
print(f'{k}: {v}')Enregistrement d’un instantané nettoyé
Après l’audit initial et les corrections de base (correction des types de données, suppression des doublons, colonnes d’indicateurs), enregistrez un instantané nettoyé afin que les étapes suivantes commencent toujours à partir d’une base cohérente. Utilisez df.to_csv('sales_clean.csv', index=False) ou, pour accélérer les rechargements, df.to_parquet('sales_clean.parquet'). Parquet préserve les types de données, notamment les dates et heures, contrairement au CSV.
# Drop exact duplicates before saving
df = df.drop_duplicates(subset=['order_id'], keep='first')
# Save clean snapshot
df.to_parquet('sales_clean.parquet', index=False)
print('Saved', len(df), 'rows to sales_clean.parquet')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 à charger un CSV et vérifier sa forme et ses colonnes, à auditer les types de données, les valeurs manquantes, les doublons et les quantités négatives, ainsi qu’à enregistrer un instantané nettoyé pour les étapes suivantes. Nous allons maintenant étudier le calcul du chiffre d’affaires et la création de caractéristiques sur le jeu de données nettoyé.
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 « Charger et auditer le jeu de données des ventes » est-elle gratuite ?
Oui — le texte complet de « Charger et auditer le jeu de données des ventes » 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 « Charger et auditer le jeu de données des ventes » ?
Importez un CSV d’enregistrements de commandes, vérifiez les dtypes et les valeurs manquantes, puis corrigez l’analyse des dates et les anomalies de quantités négatives. 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 1 sur 4.
Combien de temps prend la leçon « Charger et auditer le jeu de données des ventes » ?
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
- Charger et auditer le jeu de données des ventes
- Calcul du chiffre d’affaires et création de variables
- Analyse GroupBy par région et catégorie
- Visualisation des tendances mensuelles