DBN - Module 325

Contenu

Théorie - Les concepts de l'analyse des données
Données quantitative
Données qualificatives
Les niveaux d'analyse
L'analyse descriptive
L'analyse exploratoire
Analyse inférentielle
Analyse prédictive
L’analyse prescriptive
Théorie - Récolter les données
Conseils pour un sondage
Soigner son panel
Les questions statistiques
Les 7 conseils pour un sondage
Travail personnel - réaliser un sondage à des fins statistiques
Enoncé de l'exercice
Théorie - Révision Excel
La révision est-elle nécessaire ?
Quelques exercices de révision
Les raccourcis clavier
Exercice final tableaux
Quelques fichiers
Fonctions utiles
Travail personnel - Préparer les données
Les principes de la normalisation des données
Les fichiers
Bonus
Théorie - Python les premiers pas
Définition de variables
Conversion de type
Opérations mathématiques
Traitement de listes
Si alors
Si alors avec et/ou
Boucle for
Les dictionnaires
Exemple de traitement avec les dictionnaires
Théorie - Python pour Data Analyse - NumPy
Bibliothèque numPy
Créer un tableau à 1 dimension
Tableau à 2 dimensions
Récupérer la dimension d'un tableau
Fichier à télécharger
Ouvrier des données au format csv
Type de données d'un tableau
Importer au format UTF
Extraire la 2ème ligne (ligne 1)
Extraire une donnée précise
Sélectionner une colonne
Sélectionner une ligne
Choisir des lignes et des colonnes
Filtrer une table
Filtrer sur 2 critères
Copier un jeu de données
Remplacer des données
Théorie - Python pour Data Analyse - Pandas
Le fichier
lire le fichier
renommer une colonne
Changer une valeur
Afficher le total et la moyenne des ventes
Afficher le total de la pop
Afficher le total des ventes
Trier le fichier
Afficher les ventes mois par mois
Option tri par ventes
Et exporter ce fichier en csv
Et le résultat sous forme graphique
Avec les étiquettes
Filtré sur les dernières années
Le même filtré pour la pop
Travail accompagné : exercice spotify avec Python
Fichier
Chercher le top 1
Chercher le top 5
Résultat
Bonus Top du Top
Résultat
Graphique

Support de cours

Théorie - Les concepts de l'analyse des données

Données quantitative

La taille d’une personne, exprimée en centimètres (par exemple : 175 cm).

C’est une donnée quantitative car elle est mesurable numériquement et permet de faire des opérations mathématiques comme la moyenne, l’écart-type, etc.

Types

Donnée quantitative discrète 

Peut prendre uniquement des valeurs entières (souvent issues d’un comptage).

Exemple :
Nombre d’enfants, nombre de voitures, nombre de messages reçus

Données quantitative continue

Peut prendre toutes les valeurs possibles dans un intervalle (même des décimales)

Exemple :
Taille (ex : 175,2 cm), poids (ex : 68,5 kg), température

 

Données qualificatives

Une donnée qualitative est une information qui décrit une qualité, une caractéristique ou une catégorie. Elle ne peut pas être mesurée numériquement, mais elle permet de classer ou nommer des éléments.

Exemples :
Nationalité : suisse, française, italienne…
Genre : homme, femme…
Musique préférée : jazz, rock, classique…
État civil : célibataire, marié, divorcé

Les données nominales 

Donnée qualitative sans ordre particulier entre les valeursCouleur des yeux : bleu, vert, marron

Genre : homme, femme
Nationalité : suisse, italienne, française

On ne peut pas classer ou hiérarchiser les valeurs

Les données ordinales

Donnée qualitative avec un ordre logique entre les valeurs

Niveau d’étude : primaire, secondaire, universitaire
Niveau de satisfaction : faible, moyen, élevé
Taille de t-shirt : S, M, L, XL

On peut classer les valeurs selon un ordre

Les niveaux d'analyse

Analyse descriptive

But : Résumer et décrire les données observées.
Outils : Moyenne, médiane, écart-type, tableaux, graphiques (histogramme, diagramme circulaire…)
Exemple : Moyenne d’âge des étudiants d’une classe, répartition par genre.

Analyse exploratoire

But : Découvrir des tendances, structures ou relations cachées dans les données, sans hypothèse préalable.
Outils : Visualisations, corrélations, matrices de dispersion, ACP (analyse en composantes principales), regroupements (clusters).
Exemple : Explorer un grand jeu de données pour identifier des profils types de consommateurs.

Analyse inférentielle (ou statistique inférentielle)

But : Faire des prédictions ou des généralisations à partir d’un échantillon vers une population.
Outils : Tests d’hypothèse (t-test, chi², ANOVA), intervalles de confiance, régressions.
Exemple : Estimer la proportion de personnes favorables à une réforme dans une population, à partir d’un sondage.

Analyse prédictive

But : Prévoir des résultats futurs en se basant sur des données passées.
Outils : Régressions, arbres de décision, modèles de machine learning (réseaux de neurones, forêts aléatoires…)
Exemple : Prédire le chiffre d’affaires d’un magasin pour le mois prochain.

Analyse prescriptive

But : Recommander des actions en se basant sur des prédictions et des simulations.
Outils : Optimisation, scénarios, algorithmes de décision.
Exemple : Proposer le meilleur itinéraire de livraison en fonction du trafic et des coûts.

L'analyse descriptive

L’analyse descriptive consiste à résumer et présenter les données de manière simple et claire, sans en tirer de conclusions. Elle permet de comprendre les grandes tendances d’un ensemble de données.

Outils utilisés :

  • Moyenne, médiane, mode
    Pourcentages

  • Tableaux, graphiques (camembert, histogramme…)

Exemple :

  • Calculer l’âge moyen des élèves d’une classe

  • Afficher la répartition des réponses à un sondage

L'analyse exploratoire

L’analyse exploratoire vise à explorer les données pour y découvrir des tendances, relations ou anomalies, sans idée préconçue au départ.

Outils utilisés :

  • Corrélations, nuages de points
  • Graphiques croisés, regroupements (clusters)
  • Analyse en composantes principales (ACP)

Exemple :

  • Identifier des groupes de clients avec des comportements d’achat similaires
  • Repérer des relations entre deux variables (ex : âge et revenu)

Analyse inférentielle

L’analyse inférentielle permet de tirer des conclusions ou de faire des généralisations sur une population à partir d’un échantillon de données.

Outils utilisés :

  • Tests d’hypothèse (t-test, chi², ANOVA)
  • Intervalles de confiance
  • Régressions

Exemple :

  • Tester si la moyenne des salaires dans une entreprise diffère selon le sexe
  • Estimer la proportion de personnes favorables à une réforme dans une population à partir d’un échantillon

Analyse prédictive

L’analyse prédictive utilise les données passées pour prévoir des événements futurs ou des tendances.

Outils utilisés :

  • Régression linéaire, séries temporelles
  • Modèles de machine learning (arbres de décision, réseaux de neurones, etc.)

Exemple :

  • Prédire le chiffre d'affaires d'un magasin pour les mois à venir
  • Estimer le risque de défaut de paiement d'un client

L’analyse prescriptive

L’analyse prescriptive recommande les meilleures actions à entreprendre pour atteindre un objectif, souvent en optimisant des processus ou des ressources.

Outils utilisés :

  • Algorithmes d'optimisation
  • Simulations, scénarios, arbres de décision

Exemple :

  • Recommander le meilleur itinéraire de livraison pour minimiser les coûts
  • Optimiser le planning de production dans une usine pour maximiser l'efficacité

Théorie - Récolter les données

Conseils pour un sondage

Voici les règles principales à suivre pour réaliser un bon sondage et traiter les données avec des outils statistiques :

1. Définir clairement l'objectif du sondage

  • Pourquoi faire ce sondage ?

  • Quel type d’information ou de décision souhaitez-vous obtenir ?

2. Choisir un échantillon représentatif

  • Méthode d’échantillonnage : Utilisez des méthodes d’échantillonnage appropriées (échantillonnage aléatoire, stratifié, etc.) pour éviter les biais.

  • L’échantillon doit être suffisamment grand pour avoir une bonne représentativité de la population cible.

3. Formuler des questions claires et précises

  • Éviter les ambiguïtés : Les questions doivent être simples et compréhensibles par tous les répondants.

  • Questions fermées vs questions ouvertes : Choisissez selon le type de données que vous souhaitez recueillir (quantitatives ou qualitatives).

4. Assurer la confidentialité et la transparence

  • Les participants doivent savoir comment leurs réponses seront utilisées.

  • Il est crucial de protéger les données personnelles des répondants.

5. Testez le questionnaire avant de le déployer

  • Réalisez un test pilote sur un petit échantillon pour vérifier la clarté des questions et identifier d’éventuelles erreurs ou biais.

6. Garantir la validité et la fiabilité des réponses

  • Les données doivent être fiables : assurez-vous que les répondants comprennent les questions de manière similaire et qu’il n’y ait pas de confusion.

  • Évitez les biais : comme les biais de sélection ou de réponse.

7. Collecte des données de manière cohérente

  • Uniformité dans la manière de collecter les données (en ligne, téléphone, face-à-face, etc.) pour éviter de fausser les résultats.

8. Analyse des données avec des outils statistiques appropriés

  • Nettoyage des données : Vérifiez les erreurs et anomalies (données manquantes, incohérences).

  • Choisissez les outils statistiques adaptés selon les objectifs du sondage :

    • Moyennes, médianes, modes pour des analyses descriptives

    • Tests d’hypothèses pour des analyses inférentielles

    • Modèles prédictifs si vous souhaitez faire des prédictions basées sur les résultats.

9. Interprétation des résultats avec prudence

  • Évitez de généraliser au-delà de la population cible.

  • Prenez en compte les limites méthodologiques de votre sondage, telles que la taille de l’échantillon ou les biais potentiels.

10. Représenter les résultats de manière compréhensible

  • Utilisez des graphismes et des tableaux pour rendre les résultats facilement accessibles et compréhensibles par tous, même ceux sans expertise statistique.

Soigner son panel

1. Transparence de l’information : Clarifiez l’objectif de l’étude et l’utilisation des données de manière explicite. Mettez en place des politiques de confidentialité transparentes et obtenez le consentement des participants, assurant ainsi une communication ouverte et honnête.

2. Anonymat dans la collecte : Préservez la confidentialité en utilisant des méthodes de collecte anonymes. Encouragez l’anonymat, en particulier pour des sujets délicats, et ajustez les mesures de protection en fonction du degré de sensibilité des informations collectées.

3. Protection des données : Formez le personnel sur les bonnes pratiques de gestion des données. Établissez des contrôles d’accès stricts pour garantir la sécurité des informations. Développez un plan solide pour l’élimination ou la conservation sécurisée des données, renforçant ainsi la protection des données sensibles.

4. Respect des réglementations : Intégrez dès la conception des questionnaires les normes de protection des données. Restez informé des évolutions légales, en particulier en ce qui concerne les réglementations en vigueur, pour assurer une conformité continue.

5. Usage de panels préétablis : Simplifiez le processus d’étude en privilégiant l’utilisation de panels existants. Optez pour des panels gérés activement afin de garantir la qualité des résultats. Cultivez la confiance des participants pour établir des partenariats durables.

Les questions statistiques

Questions statistiques

(Elles nécessitent des données, souvent issues d'un échantillon ou d'une population, pour y répondre)

  • Combien d'heures en moyenne les élèves de ma classe dorment-ils par nuit ?
    Il faut interroger plusieurs élèves pour obtenir des données.
  • Quelle est la taille moyenne des enfants de 10 ans en Suisse ?
    On a besoin de mesurer plusieurs enfants pour répondre.
  • Quel est le pourcentage de personnes qui prennent les transports en commun pour aller au travail ?
    Cela nécessite une enquête ou des statistiques officielles.
  • Combien de films les lycéens regardent-ils par mois en moyenne ?
    On doit collecter les réponses de plusieurs lycéens.
  • Quelle est la répartition des notes au dernier examen de maths ?
    Cela demande les notes de tous les élèves.

Questions non statistiques

(Elles concernent des faits uniques ou des opinions, pas besoin de recueillir des données)

  • Combien d'heures as-tu dormi cette nuit ?
    Question personnelle, réponse unique.
  • Quelle est la capitale de la Suisse ?
    C’est un fait, la réponse est fixe (Berne).
  • Aimes-tu les maths ?
    C’est une opinion personnelle.
  • Quelle est la note de Paul au dernier test ?
    Une seule donnée, donc ce n’est pas statistique.
  • Quelle est ta couleur préférée ?
    Réponse subjective, pas besoin de collecter plusieurs réponses.

Les 7 conseils pour un sondage

1. Préférez les questions fermées aux questions ouvertes

Pour des données faciles à recueillir et à analyser, privilégiez les questions fermées. En effet, elles produisent des données quantitatives qui peuvent servir à mesurer des variables.

En règle générale, essayez de vous limiter à deux questions ouvertes par sondage ou enquête. Si possible, placez-les à la fin du sondage.

2. Posez des questions neutres et objectives

Adoptez un ton objectif en vous abstenant d’exprimer votre opinion. Pour cet exemple, formulez votre question ainsi.

3. Proposez des choix de réponse équilibrés

es participants doivent avoir l’opportunité de proposer des réponses honnêtes et réfléchies, seul gage de crédibilité de votre sondage.

4. Ne vous dispersez pas

Ne pas poser une question double, c’est-à-dire une question à deux volets, qui demande aux participants d’évaluer deux choses différentes en même temps.

5. Variez vos questions et vos choix de réponse

Répondre cinquante fois à la même question finirait probablement par agacer.

6. Limitez les questions obligatoires

Parfois, les participants ne connaissent pas les réponses à vos questions. Peut-être sont-ils gênés par certaines d’entre elles et ne souhaitent pas y répondre. Pourtant, vous avez besoin de leur feedback.

7. Testez votre sondage

Partagez votre sondage avec vos collègues ou votre entourage avant de l’envoyer à votre population cible. Il suffit parfois d’un regard neuf ou d’un avis objectif pour repérer des erreurs.

Travail personnel - réaliser un sondage à des fins statistiques

Enoncé de l'exercice

Titre : Créer et réaliser un sondage sur les habitudes de vie des jeunes de ton entourage (classe, club, voisinage, etc.).

Objectif :

Concevez un sondage dans le but de recueillir des données statistiques sur un sujet de ton choix lié aux habitudes de vie des jeunes (exemples : sommeil, alimentation, sport, écrans, transport, loisirs…).
Ensuite vous expliquerez les choix faits, réaliser le sondage, et analyser les données collectées.

Étapes à suivre :

1. Définissez l’objectif de votre sondage
Expliquez en quelques lignes ce que vous souhaitez étudier, pourquoi ce sujet vous intéresse, et ce que vous aimeriez apprendre grâce au sondage.

2. Rédige un questionnaire comportant entre 6 et 10 questions
Les questions doivent porter sur ton thème et doivent inclure différents types de données :

  • Données qualitatives nominales (ex : type de sport pratiqué, plat préféré)
  • Données qualitatives ordinales (ex : niveau de satisfaction, fréquence)
  • Données quantitatives discrètes (ex : nombre de repas par jour)
  • Données quantitatives continues (ex : temps de sommeil en heures, taille en cm)

Pour chaque question :

  • Expliquer le type de donnée (qualitative ou quantitative, continue ou discrète)
  • Justifier pourquoi tu poses cette question et ce qu’elle peut t’apporter dans ton étude
  • Donner un exemple de réponse possible

3. Réalisez votre sondage
Distribuez votre questionnaire à un minimum de 10 personnes. Vous pouvez le faire sous forme papier, oralement, ou en ligne.

4. Analyse les résultats
Présente un tableau de données (réponses recueillies)

Réalise au moins deux représentations graphiques (diagramme en bâtons, camembert, histogramme, etc.)

Commente ce que tu observes. Y a-t-il des tendances ? Des surprises ?

5. Conclusion
Explique ce que tu as appris grâce à ton sondage, ce que tu pourrais améliorer, et ce que tu referais différemment dans une prochaine étude.

Livrables attendus :

Un document ou diaporama contenant :

  • Le thème et l’objectif
  • Le questionnaire documenté
  • Le tableau de données
  • Les graphiques
  • L’analyse des résultats
  • La conclusion

 

Théorie - Révision Excel

La révision est-elle nécessaire ?

Afin d'avoir un niveau suffisant avec Excel, mais aussi les autres produits tels que Tableau ou Power BI il faudrait connaître les 4 points suivants suivants :

Savez-vous :

  • Incrémenter une série ?
  • Faire des références à des cellules ou des plages ?
  • Effectuer des calculs basiques (+ - * / % ) ?
  • Utiliser des fonctions (Somme, moyenne, rechercheV, NB.si etc.) ?

Si non une petite mise à niveau s'impose

Quelques exercices de révision

Incrémenter les valeurs - Télécharger

Référencer des cellules et des plages - Télécharger 

Calculs simples - Télécharger

Calculs sur des ensembles - Télécharger

Exercices sur les fonctions de base : Télécharger  (SOMME/MOYENNE/SI/NB)

Créer des tableaux de données no tableau - Télécharger

Créer des tableaux de données // Médailles - Télécharger

 

Les raccourcis clavier

Raccourci Définition
Tab passer à la cellule suivante (à droite)
Shift+Tab passer à la cellule précédente (à gauche)
Ctrl+Flèche atteindre l’extrémité d’un tableau de données (ou de la feuille)
Shift+Flèche sélectionner les données des cellules adjacentes
Ctrl+Shift+Flèche sélectionner un tableau de données facilement sur Excel
Ctrl+A sélectionner tout un tableau sur Excel
Touche Suppr effacer le contenu d’une cellule Excel
Ctrl+Molette zoomer ou dézoomer sur Excel
Ctrl+O ouvrir une feuille de calcul
Ctrl+W fermer une feuille de calcul
Ctrl+S sauvegarder un fichier Excel
Ctrl+F rechercher et remplacer une valeur sur Excel
Ctrl+N créer un nouveau classeur
Ctrl+Z annuler la dernière action
Ctrl+Y effectuer une action précédemment annulée

Exercice final tableaux

Télécharger le fichier d'exercices et ressortir les informations suivantes

1. Modifiez les données initiales afin de pouvoir les transformer en tableau
2. Modifiez le nom du tableau en "gender data" (pas d'accents)
3. Le football apparait 2 fois, supprimez les doublons
4. Ajoutez la ligne de total et faites la somme de chaque colonne
5. Créez une nouvelle colonne calculant le pourcentage de femmes pour chaque sport
6. Dans la cellule "maximum d'athlètes", calculez le nombre maximum d'athlètes pour un sport

Fonctions utiles

=nbval()

=nb()

=nb.vide()

=nb.si(;">100")

=nb.si.ens()

=min()

=max()

=min.si.ens()

=moyenne.si.ens()

=mediane()

=mode()

=ecartype.standard()

 

Travail personnel - Préparer les données

Les principes de la normalisation des données

1. Ouvrir et explorer le fichier
Commencez par examiner rapidement le fichier :

  • Vérifiez le séparateur utilisé (, ; ou tabulation).
  • Contrôlez l’encodage du fichier (UTF-8 est recommandé).
  • Identifiez la présence éventuelle de lignes vides, de lignes de commentaires, ou de titres en double.

2. Supprimer les colonnes ou lignes non pertinentes

Retirez les colonnes qui ne sont pas utiles pour l’analyse.

  • Supprimez les lignes vides, les totaux automatiques, ou les en-têtes répétés au milieu du fichier.

3. Standardiser les noms de colonnes

  • Choisissez des noms de colonnes :
    Courts, explicites et sans accents.
    Sans espaces (utilisez des underscores _).
    Exemple : Nom de la personne devient nom_personne.

4. Traiter les valeurs manquantes

  • Repérez les cellules vides ou les codes tels que "NA", "?", "n/a", etc.

Plusieurs options s’offrent à vous :

  • Supprimer les lignes concernées (si elles sont peu nombreuses).
  • Imputer les valeurs manquantes (avec la moyenne, médiane, ou autre).
  • Laisser vide, si votre outil de traitement peut gérer ces cas.

5. Uniformiser les formats de données

Dates : assurez-vous qu’elles sont toutes au même format (YYYY-MM-DD par exemple).

Nombres : remplacez les virgules par des points si nécessaire (1,5 → 1.5).

Texte : appliquez une casse cohérente (tout en minuscules, par exemple).

6. Éliminer les doublons

  • Vérifiez s’il existe des enregistrements identiques ou très similaires.
  • Supprimez-les selon des critères logiques (ex : identifiants ou combinaisons de champs identiques).

7. Valider les types de données

  • Assurez-vous que chaque colonne contient le bon type :
    Numérique, date, texte, booléen, etc.
  • Corrigez les erreurs éventuelles (ex. texte dans une colonne censée être numérique).

8. Re-coder certaines variables si nécessaire

Transformez les réponses textuelles en codes numériques pour l’analyse :

  • "Oui" / "Non" → 1 / 0
  • "Homme" / "Femme" → M / F ou 0 / 1
  • Regroupez ou uniformisez les catégories similaires si besoin.

9. Documenter les modifications

Notez toutes les transformations apportées au fichier :

  • Remplacements de valeurs
  • Suppressions de colonnes
  • Recodages, imputations, etc.

Cela vous permettra de reproduire ou justifier vos choix plus tard.

10. Sauvegarder une version propre

  • Exportez le fichier nettoyé au format .csv (avec l'encodage UTF-8).
  • Conservez une copie de la version originale, sans aucune modification.

 

Les fichiers

 

Télécharger le fichier VENTES

Télécharger le fichier INCOHERENCES

Bonus

import pandas as pd
import numpy as np

# 1. Charger le fichier Excel
df = pd.read_excel("donnees_avec_legers_problemes.xlsx")

# 2. Vérifier et convertir les types de données
df['age'] = pd.to_numeric(df['age'], errors='coerce')
df['revenu_mensuel'] = pd.to_numeric(df['revenu_mensuel'], errors='coerce')
df['date_naissance'] = pd.to_datetime(df['date_naissance'], errors='coerce')

# 3. Nettoyer les valeurs aberrantes

# Supprimer ou corriger les âges aberrants
df.loc[(df['age'] < 0) | (df['age'] > 100), 'age'] = np.nan

# Supprimer les revenus excessifs (>20 000€)
df.loc[df['revenu_mensuel'] > 20000, 'revenu_mensuel'] = np.nan

# Supprimer les dates de naissance irréalistes
df.loc[(df['date_naissance'].dt.year < 1900) | (df['date_naissance'].dt.year > 2024), 'date_naissance'] = pd.NaT

# 4. Gérer les valeurs manquantes
# Imputation simple : moyenne pour âge et revenu
df['age'].fillna(df['age'].mean(), inplace=True)
df['revenu_mensuel'].fillna(df['revenu_mensuel'].mean(), inplace=True)

# Suppression des lignes sans date de naissance
df = df.dropna(subset=['date_naissance'])

# 5. Vérification du genre (doit être "Homme" ou "Femme")
df['genre'] = df['genre'].where(df['genre'].isin(['Homme', 'Femme']))

# 6. Exporter le fichier nettoyé
df.to_excel("donnees_nettoyees.xlsx", index=False)
print("✅ Données nettoyées enregistrées dans 'donnees_nettoyees.xlsx'")

Théorie - Python les premiers pas

Définition de variables

#Déclaration de variables
nom = "Alice"
age = 25
taille = 1.68 # en mètres
est_majeur = True

Conversion de type

#Conversion d'entiers et de chaînes
age_str = str(age) # Convertit l'entier 25 en "25"
taille_int = int(taille) # Convertit 1.68 en 1 (arrondi vers le bas)

#Conversion d'une chaîne en nombre
nombre_str = "42"
nombre_int = int(nombre_str) # Résultat : 42

#Conversion en float
valeur_str = "3.14"
valeur_float = float(valeur_str) # Résultat : 3.14

Opérations mathématiques

a = 10
b = 3

somme = a + b # Addition => 13
difference = a - b # Soustraction => 7
produit = a * b # Multiplication => 30
quotient = a / b # Division réelle => 3.333...
division_entiere = a // b # Division entière => 3
reste = a % b # Modulo => 1
puissance = a ** b # Puissance => 1000

print("Nom :", nom)
print("Somme :", somme)
print("Division entière :", division_entiere)

Traitement de listes

# Liste de nombres
nombres = [1, 2, 3, 4, 5]

# Liste de chaînes
prenoms = ["Alice", "Bob", "Charlie"]

# Liste mixte
melange = [42, "Bonjour", 3.14, True]

 

Accéder aux éléments

print(prenoms[0]) # Affiche "Alice" (premier élément)Accéder aux données
print(prenoms[-1]) # Affiche "Charlie" (dernier élément)

 

prenoms.append("David") # Ajoute à la fin
prenoms.insert(1, "Emma") # Insère à l'indice 1
prenoms[0] = "Alicia" # Modifie le premier élément

 

prenoms.remove("Charlie") # Supprime l’élément "Charlie"
dernier = prenoms.pop() # Retire et retourne le dernier élément

for nom in prenoms:
print("Bonjour", nom)

# Ou avec les indices
for i in range(len(prenoms)):
print(f"{i} => {prenoms[i]}")

 

# Quelques fonctions

notes = [12, 15, 9, 18, 14]

print("Note max :", max(notes))
print("Note min :", min(notes))
print("Moyenne :", sum(notes) / len(notes))

notes_triees = sorted(notes) # Trie sans modifier la liste
notes.reverse() # Inverse la liste

doubles = [x * 2 for x in notes]

# Garder uniquement les notes >= 10
reussites = [x for x in notes if x >= 10]

# Afficher les réussites
print("Les notes réussies sont :")
for note in reussites:
print(note)

 

#Des fonctions supplémentaires

notes = [12, 15, 9, 18, 14, 7, 10]

# Filtrer les réussites
reussites = [note for note in notes if note >= 10]

# Compter les réussites
nb_reussites = len(reussites)
nb_total = len(notes)

# Calculer le pourcentage
pourcentage = (nb_reussites / nb_total) * 100

# Affichage
print("Notes réussies :", reussites)
print("Nombre de réussites :", nb_reussites)
print("Nombre total de notes :", nb_total)
print(f"Pourcentage de réussite : {pourcentage:.2f}%")

Si alors

note = 14

if note >= 10:
print("Bravo, vous avez réussi !")
else:
print("Dommage, vous avez échoué.")

 

note = 18

if note >= 16:
print("Très bien !")
elif note >= 10:
print("C'est réussi.")
else:
print("Échec.")

Si alors avec et/ou

age = 16
autorisation_parentale = True

if age >= 18 or autorisation_parentale:
print("Accès autorisé.")
else:
print("Accès refusé.")

Boucle for

villes = ['Paris', 'Vienne', 'Genève', 'Lyon']

for ville in villes :
print ville

Exemple

fruits = ['citron', 'banane', 'pomme', 'poire', 'banane', 'pomme', 'pomme', 'poire', 'banane', 'banane']
fruits_stock = {}

for fruit in fruits :
if fruit in fruits_stock :
fruits_stock[fruit] +=1
else :
fruits_stock = 1

print(fruits_stock)

 

prenoms = ["Alice", "Bob", "Charlie"]

for nom in prenoms:
print("Bonjour", nom)

 

for i in range(5):
print("Ceci est la ligne numéro", i)

 

 

 

Les dictionnaires

personne = {
"nom": "Alice",
"age": 30,
"ville": "Paris"
}

 

print(personne["nom"]) # Affiche "Alice"
print(personne["ville"]) # Affiche "Paris"

 

personne["email"] = "alice@example.com" # Ajout
personne["age"] = 31 # Modification

 

del personne["ville"]

 

for cle, valeur in personne.items():
print(cle, ":", valeur)

 

for cle in personne:
print(cle) # Noms des clés

for valeur in personne.values():
print(valeur)

 

Exemple de traitement avec les dictionnaires

notes = {
"Alice": 15,
"Bob": 12,
"Charlie": 9
}

for eleve, note in notes.items():
if note >= 10:
print(f"{eleve} a réussi avec {note}/20.")
else:
print(f"{eleve} a échoué avec {note}/20.")

Théorie - Python pour Data Analyse - NumPy

Bibliothèque numPy

# NumPy (Numerical Python) est une bibliothèque utilisée pour :
# Manipuler des tableaux/matrices de données (appelés ndarray)
# Faire des opérations mathématiques rapides
# Travailler efficacement avec des grandes quantités de données numériques

 

import numpy as np

# Créer un tableau numpy
a = np.array([1, 2, 3, 4, 5])

# Quelques opérations
print("Tableau :", a)
print("Somme :", np.sum(a))
print("Moyenne :", np.mean(a))
print("Max :", np.max(a))

 

import numpy as np

liste = [1, 2, 3]
tableau = np.array(liste)

# Multiplie chaque élément par 2
print(liste * 2) # => [1, 2, 3, 1, 2, 3] (concatène)
print(tableau * 2) # => [2 4 6] (multiplie)

 

 

 

 

Créer un tableau à 1 dimension

import numpy as np

# Création d'un tableau 1D
mon_tableau = np.array([10, 20, 30, 40, 50])

# Afficher le tableau
print("Tableau :", mon_tableau)

# Afficher le type de données de chaque élément
print("Type des éléments :", mon_tableau.dtype)

# Afficher le type Python de l'objet (structure)
print("Type du tableau :", type(mon_tableau))

Tableau à 2 dimensions

import numpy as np

# Création d'un tableau 2D
mon_tableau_2d = np.array([[10, 20, 30], [40, 50, 60]])

# Afficher le tableau 2D
print("Tableau 2D :\n", mon_tableau_2d)

# Afficher le type de données des éléments
print("\nType des éléments :", mon_tableau_2d.dtype)

# Afficher le type Python de l'objet (structure)
print("\nType du tableau :", type(mon_tableau_2d))

 

Récupérer la dimension d'un tableau

print(matrice.shape)

Fichier à télécharger

Ouvrier des données au format csv

import numpy as np

# Lire un fichier CSV avec numpy
fichier = 'fichier.csv'
tableau = np.genfromtxt(fichier, delimiter=',', dtype=None, encoding=None, skip_header=1)

# Afficher le tableau chargé
print(tableau)

# Afficher le type du tableau
print(type(tableau))

Type de données d'un tableau

fichier.dtype

 

Importer au format UTF

import numpy as np

# Lire le fichier CSV avec l'encodage UTF-8
fichier = 'fichier.csv'
tableau = np.genfromtxt(fichier, delimiter=',', dtype=None, encoding='utf-8', skip_header=1)

# Afficher le tableau chargé
print(tableau)

# Afficher le type du tableau
print(type(tableau))

Extraire la 2ème ligne (ligne 1)

import numpy as np

# Lire le fichier CSV avec l'encodage UTF-8
fichier = 'fichier.csv'
tableau = np.genfromtxt(fichier, delimiter=',', dtype=None, encoding='utf-8', skip_header=1)

# Extraire la 2ème ligne (index 1)
deuxieme_ligne = tableau[1]

# Afficher la 2ème ligne
print("Deuxième ligne :", deuxieme_ligne)

 

Extraire une donnée précise

import numpy as np

# Lire le fichier CSV avec l'encodage UTF-8
fichier = 'fichier.csv'
tableau = np.genfromtxt(fichier, delimiter=',', dtype=None, encoding='utf-8', skip_header=1)

# Extraire la valeur de la 2ème ligne et 3ème colonne (index 1, 2)
valeur = tableau[1, 2]

# Afficher la valeur extraite
print("Valeur extraite :", valeur)

Sélectionner une colonne

import numpy as np

# Lire le fichier CSV avec l'encodage UTF-8
fichier = 'fichier.csv'
tableau = np.genfromtxt(fichier, delimiter=',', dtype=None, encoding='utf-8', skip_header=1)

# Sélectionner la 2ème colonne (index 1)
colonne_2 = tableau[:, 1]

# Afficher la colonne sélectionnée
print("2ème colonne :", colonne_2)

 

 

# Sélectionner plusieurs colonnes :

 tableau[:, [0, 1]].

Sélectionner une ligne

import numpy as np

# Lire le fichier CSV avec l'encodage UTF-8
fichier = 'fichier.csv'
tableau = np.genfromtxt(fichier, delimiter=',', dtype=None, encoding='utf-8', skip_header=1)

# Sélectionner la 2ème ligne (index 1)
ligne_2 = tableau[1]

# Afficher la ligne sélectionnée
print("2ème ligne :", ligne_2)

 

Choisir des lignes et des colonnes

import numpy as np

# Lire le fichier CSV avec l'encodage UTF-8
fichier = 'fichier.csv'
tableau = np.genfromtxt(fichier, delimiter=',', dtype=None, encoding='utf-8', skip_header=1)

# Sélectionner les 1ère et 2ème lignes (index 0 et 1)
# Sélectionner les 2ème et 3ème colonnes (index 1 et 2)
selection = tableau[0:2, 1:3]

# Afficher la sélection
print("Sélection des lignes et colonnes spécifiques :\n", selection)

 

Filtrer une table

import numpy as np

# Lire le fichier CSV avec l'encodage UTF-8
fichier = 'fichier.csv'
tableau = np.genfromtxt(fichier, delimiter=',', dtype=None, encoding='utf-8', skip_header=1)

# Filtrer les lignes où l'âge (2ème colonne) est supérieur à 30
filtre = tableau[tableau[:, 1] > 30]

# Afficher le tableau filtré
print("Tableau filtré :\n", filtre)

 

Filtrer sur 2 critères

import numpy as np

# Lire le fichier CSV avec l'encodage UTF-8
fichier = 'fichier.csv'
tableau = np.genfromtxt(fichier, delimiter=',', dtype=None, encoding='utf-8', skip_header=1)

# Filtrer les lignes où l'âge est supérieur à 25 et la ville est "Paris"
filtre = tableau[(tableau[:, 1] > 25) & (tableau[:, 2] == 'Paris')]

# Afficher le tableau filtré
print("Tableau filtré sur 2 critères :\n", filtre)

Copier un jeu de données

fivhier2= fichier.copy()

Remplacer des données

import numpy as np

# Lire le fichier CSV avec l'encodage UTF-8
fichier = 'fichier.csv'
tableau = np.genfromtxt(fichier, delimiter=',', dtype=None, encoding='utf-8', skip_header=1)

# Remplacer les âges supérieurs à 30 par 30
tableau[tableau[:, 1] > 30, 1] = 30

# Afficher le tableau modifié
print("Tableau après remplacement :\n", tableau)

Théorie - Python pour Data Analyse - Pandas

lire le fichier

import pandas as pd

# Charger le fichier CSV
df = pd.read_csv('musiciens_exemple.csv')

# Afficher les 10 premières lignes
print(df.head(10))

renommer une colonne

df = df.rename(columns={'Email contact': 'Email'})

# Afficher le résultat
df.head()

Changer une valeur

df.loc[df["Artiste"] == "Lance Green", "Nombre de ventes"] = 9999999

df.head()

Afficher le total et la moyenne des ventes

import pandas as pd

# Charger le fichier CSV
df = pd.read_csv("musiciens_exemple.csv")

# Calculer le total des ventes
total_ventes = df["Nombre de ventes"].sum()

# Calculer la moyenne des ventes
moyenne_ventes = df["Nombre de ventes"].mean()

# Afficher les résultats
print("Total des ventes :", total_ventes)
print("Moyenne des ventes :", moyenne_ventes)

Afficher le total de la pop

import pandas as pd

# Charger le fichier CSV
df = pd.read_csv("musiciens_exemple.csv")

# Calculer le total des ventes pour le genre "Pop"
ventes_pop = df[df["Genre"] == "Pop"]["Nombre de ventes"].sum()

# Afficher le total
print("Total des ventes (Pop) :", ventes_pop)

Afficher le total des ventes

import pandas as pd

# Charger le fichier CSV
df = pd.read_csv("musiciens_exemple.csv")

# Calculer le total des ventes
total_ventes = df["Nombre de ventes"].sum()

# Afficher le total
print("Total des ventes :", total_ventes)

Trier le fichier

import pandas as pd

# Charger le fichier CSV
df = pd.read_csv("musiciens_exemple.csv")

# Trier par nombre de ventes décroissant
df = df.sort_values(by="Nombre de ventes", ascending=False)

# Afficher les premières lignes du résultat trié
df.head()

Afficher les ventes mois par mois

import pandas as pd

# Charger le fichier CSV
df = pd.read_csv("musiciens_exemple.csv")

# Convertir la colonne Date de sortie en datetime
df["Date de sortie"] = pd.to_datetime(df["Date de sortie"])

# Grouper par mois (année + mois) et sommer les ventes
ventes_mensuelles = df.groupby(df["Date de sortie"].dt.to_period("M"))["Nombre de ventes"].sum()

# Optionnel : convertir l'index en datetime pour affichage clair
ventes_mensuelles = ventes_mensuelles.to_timestamp()

# Afficher le tableau
print(ventes_mensuelles)

Option tri par ventes

ventes_mensuelles_triees = ventes_mensuelles.sort_values(ascending=False)

# Afficher le tableau trié
print(ventes_mensuelles_triees)

Et exporter ce fichier en csv

ventes_mensuelles_triees.to_csv("ventes_mensuelles_tries.csv")

Et le résultat sous forme graphique

import pandas as pd
import matplotlib.pyplot as plt

# Charger le fichier CSV
df = pd.read_csv("musiciens_exemple.csv")

# Convertir la colonne Date de sortie en datetime
df["Date de sortie"] = pd.to_datetime(df["Date de sortie"])

# Grouper par mois et sommer les ventes
ventes_mensuelles = df.groupby(df["Date de sortie"].dt.to_period("M"))["Nombre de ventes"].sum()

# Convertir l'index en datetime
ventes_mensuelles = ventes_mensuelles.to_timestamp()

 

# Tracer le graphique
plt.figure(figsize=(12, 6))
plt.bar(ventes_mensuelles.index.strftime("%Y-%m"), ventes_mensuelles.values)
plt.xticks(rotation=45, ha="right")
plt.title("Ventes mensuelles totales (triées par volume)")
plt.xlabel("Mois de sortie")
plt.ylabel("Nombre de ventes")
plt.tight_layout()
plt.grid(True)
plt.show()

Avec les étiquettes

import pandas as pd
import matplotlib.pyplot as plt

# Charger le fichier CSV
df = pd.read_csv("musiciens_exemple.csv")

# Convertir la colonne Date de sortie en datetime
df["Date de sortie"] = pd.to_datetime(df["Date de sortie"])

# Grouper les ventes par mois
ventes_mensuelles = df.groupby(df["Date de sortie"].dt.to_period("M"))["Nombre de ventes"].sum()

# Convertir l'index en datetime
ventes_mensuelles = ventes_mensuelles.to_timestamp()

# Trier par volume de ventes décroissant
ventes_mensuelles_triees = ventes_mensuelles.sort_values(ascending=False)

# Tracer le graphique avec les valeurs
plt.figure(figsize=(12, 6))
bars = plt.bar(ventes_mensuelles_triees.index.strftime("%Y-%m"), ventes_mensuelles_triees.values)

# Ajouter les valeurs au-dessus des barres
for bar in bars:
height = bar.get_height()
plt.annotate(f'{height:,}', # Ajoute des séparateurs de milliers
xy=(bar.get_x() + bar.get_width() / 2, height),
xytext=(0, 3),
textcoords="offset points",
ha='center', va='bottom', fontsize=8)

plt.xticks(rotation=45, ha="right")
plt.title("Ventes mensuelles totales (triées par volume)")
plt.xlabel("Mois de sortie")
plt.ylabel("Nombre de ventes")
plt.tight_layout()
plt.grid(True)
plt.show()

Filtré sur les dernières années

import pandas as pd
import matplotlib.pyplot as plt

# Charger le fichier CSV
df = pd.read_csv("musiciens_exemple.csv")

# Convertir la colonne Date de sortie en datetime
df["Date de sortie"] = pd.to_datetime(df["Date de sortie"])

# Filtrer les données à partir de 2020
df_filtre = df[df["Date de sortie"] >= "2020-01-01"]

# Grouper les ventes par mois
ventes_mensuelles = df_filtre.groupby(df_filtre["Date de sortie"].dt.to_period("M"))["Nombre de ventes"].sum()

# Convertir l'index en datetime
ventes_mensuelles = ventes_mensuelles.to_timestamp()

 

# Tracer le graphique avec les valeurs
plt.figure(figsize=(12, 6))
bars = plt.bar(ventes_mensuelles.index.strftime("%Y-%m"), ventes_mensuelles.values)

# Ajouter les valeurs au-dessus des barres
for bar in bars:
height = bar.get_height()
plt.annotate(f'{height:,}',
xy=(bar.get_x() + bar.get_width() / 2, height),
xytext=(0, 3),
textcoords="offset points",
ha='center', va='bottom', fontsize=8)

plt.xticks(rotation=45, ha="right")
plt.title("Ventes mensuelles totales depuis 2020 (triées par volume)")
plt.xlabel("Mois de sortie")
plt.ylabel("Nombre de ventes")
plt.tight_layout()
plt.grid(True)
plt.show()

Le même filtré pour la pop

# Filtrer pour l'année 2020 et suivantes, et pour le genre "Pop"
df_filtre = df[(df["Date de sortie"] >= "2020-01-01") & (df["Genre"] == "Pop")]

Travail accompagné : exercice spotify avec Python

Chercher le top 1

import pandas as pd

# Charger le fichier Excel
file_path = "spotify.xlsx" # Remplace par le nom exact de ton fichier
xls = pd.ExcelFile(file_path)

# Charger la feuille de données
df = xls.parse('données')

 

# Charger le fichier CSV
# file_path = "spotify.csv" # Remplace par le nom de ton fichier
# df = pd.read_csv(file_path)

# S'assurer que la colonne 'Positivité' est bien numérique
df['Positivité'] = pd.to_numeric(df['Positivité'], errors='coerce')

# Trouver les chansons avec la positivité maximale
max_positivity = df['Positivité'].max()
most_positive_songs = df[df['Positivité'] == max_positivity]

# Afficher les colonnes pertinentes
print(most_positive_songs[['Chanson', 'Artiste', 'Genre principal', 'Positivité']])

Chercher le top 5

import pandas as pd

# Charger le fichier Excel
file_path = "spotify.xlsx" # Remplace par le nom de ton fichier
xls = pd.ExcelFile(file_path)

# Charger la feuille de données
df = xls.parse('données')

# S'assurer que la colonne 'Positivité' est bien numérique
df['Positivité'] = pd.to_numeric(df['Positivité'], errors='coerce')

# Trier les chansons par positivité décroissante
df_sorted = df.sort_values(by='Positivité', ascending=False)

# Sélectionner les 5 premières
top5_positive_songs = df_sorted[['Chanson', 'Artiste', 'Genre principal', 'Positivité']].head(5)

# Afficher le résultat
print(top5_positive_songs)

top5_positive_songs.to_csv("top5_positives.csv", index=False, encoding='utf-8')

Résultat

Chanson Artiste Genre principal Positivité
September Earth, Wind & Fire disco 0.979
Running Over (feat. Lil Dicky) Justin Bieber canadian pop 0.977
Little Saint Nick - 1991 Remix The Beach Boys 0.971
Na Raba Toma Tapao Niack funk carioca 0.968
JUMP (feat. YoungBoy Never Broke Again) DaBaby north carolina hip hop 0.966

Bonus Top du Top

import pandas as pd

file_path = "spotify.xlsx" # Remplacer par le nom exact du fichier
xls = pd.ExcelFile(file_path)
df = xls.parse('données')

# S'assurer que les colonnes sont bien numériques
for col in ['Positivité', 'Dansabilité', 'Energie']:
df[col] = pd.to_numeric(df[col], errors='coerce')

# Supprimer les lignes avec des valeurs manquantes dans ces colonnes
df_clean = df.dropna(subset=['Positivité', 'Dansabilité', 'Energie']).copy()

# Calculer un score moyen des trois critères
df_clean['Score'] = df_clean[['Positivité', 'Dansabilité', 'Energie']].mean(axis=1)

# Trouver la chanson avec le meilleur score
best_song = df_clean.loc[df_clean['Score'].idxmax()]

# Afficher le résultat
print("Chanson avec la meilleure combinaison Positivité + Dansabilité + Énergie :\n")
print(f"Chanson : {best_song['Chanson']}")
print(f"Artiste : {best_song['Artiste']}")
print(f"Genre : {best_song['Genre principal']}")
print(f"Score : {best_song['Score']:.3f}")

Résultat

Chanson avec la meilleure combinaison Positivité + Dansabilité + Énergie :

Chanson : Na Raba Toma Tapão
Artiste : Niack
Genre : funk carioca
Score : 0.906

Graphique

import pandas as pd
import matplotlib.pyplot as plt

file_path = "spotify.xlsx"
xls = pd.ExcelFile(file_path)
df = xls.parse('données')

# Trier par nombre d'écoutes et prendre les 10 meilleurs
top_10 = df.sort_values(by='écoutes', ascending=False).head(10)

# Préparer les étiquettes avec chanson + artiste
labels = [f"{row['Chanson']} ({row['Artiste']})" for _, row in top_10.iterrows()]

# Créer le graphique
plt.figure(figsize=(12, 6))
plt.bar(labels, top_10['écoutes'])
plt.xticks(rotation=45, ha='right')
plt.title("Top 10 des chansons par nombre d'écoutes (avec artiste)")
plt.xlabel("Chanson (Artiste)")
plt.ylabel("Écoutes")
plt.tight_layout()
plt.show()

Topbee Sàrl
Rte de la Plantaz 8
1870 Monthey

info@topbee.ch
crossmenuchevron-down