Combien de commandes partent vers Lille ?
Vous venez d'entrer dans une PME qui vend du café en ligne. Votre responsable vous envoie l'export des commandes du mois.
Sa question est simple : « Combien de commandes partent vers Lille ? »
Le fichier compte 6 000 lignes. Personne ne les lit une par une. Quelques lignes de Python répondent en une seconde.
À la fin de cette leçon
Remarque
Je peux lire et filtrer des lignes de données en Python.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Ligne | un enregistrement, par exemple une commande | |
| Colonne | une information que chaque ligne possède | ville |
| Dictionnaire | des valeurs rangées sous un nom | {"ville": "Lille"} |
| Liste de dictionnaires | un tableau : un dictionnaire par ligne | |
| Filtrer | garder seulement les lignes qui passent un test |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une ligne est un dictionnaire
Dans un tableur, les noms de colonnes sont en haut. Chaque commande occupe une ligne.
En Python, une ligne est un dictionnaire. Chaque nom de colonne est une clé. La clé donne la valeur de cette ligne.
Le tableau entier est une liste de ces dictionnaires. commandes[0] est la première ligne. commandes[0]["ville"] est sa ville.
Lire une ligne et une valeur
# Chaque commande est une ligne : un dictionnaire, nom de colonne puis valeur.
commandes = [
{"numero": 501, "ville": "Lille", "montant": 34.90},
{"numero": 502, "ville": "Nantes", "montant": 12.50},
{"numero": 503, "ville": "Lille", "montant": 58.00},
]
premiere = commandes[0]
print("Nombre de lignes :", len(commandes))
print("Numéro de la première commande :", premiere["numero"])
print("Ville de la première commande :", premiere["ville"])
# Modifiez la dernière ligne pour afficher le montant de la deuxième commande.
print("Ville de la deuxième commande :", commandes[1]["ville"])
Les mêmes commandes, pas à pas
| Python | Ce que cela donne | Valeur |
|---|---|---|
| len(commandes) | le nombre de lignes | 3 |
| commandes[0] | la première ligne | toute la commande 501 |
| commandes[0]["ville"] | une valeur de la première ligne | Lille |
| commandes[2]["montant"] | une valeur de la troisième ligne | 58.0 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une boucle et un if filtrent les lignes
Pour filtrer, on regarde chaque ligne à tour de rôle. C'est le travail de la boucle for.
Dans la boucle, un if teste la ligne. Si le test est vrai, append ajoute la ligne à une nouvelle liste.
À la fin de la boucle, la nouvelle liste ne contient que les lignes voulues. len les compte.
Garder les commandes de Lille
commandes = [
{"numero": 501, "ville": "Lille", "montant": 34.90},
{"numero": 502, "ville": "Nantes", "montant": 12.50},
{"numero": 503, "ville": "Lille", "montant": 58.00},
{"numero": 504, "ville": "Rennes", "montant": 21.40},
{"numero": 505, "ville": "Lille", "montant": 9.90},
]
# On garde les commandes qui passent le test, dans une nouvelle liste.
lille = []
for commande in commandes:
if commande["ville"] == "Lille":
lille.append(commande)
for commande in lille:
print(commande["numero"], commande["montant"])
print("Commandes pour Lille :", len(lille))
# Changez le test pour garder les commandes de plus de 30 euros.
Une erreur fréquente
Attention
Beaucoup pensent qu'un filtre supprime les lignes refusées. Ce n'est pas le cas. La boucle remplit une nouvelle liste et la liste de départ garde toutes ses lignes. Vous pouvez donc filtrer les mêmes commandes avec un autre test.
À vous : les commandes d'une ville
Le service logistique prépare les tournées ville par ville. Il veut la liste des commandes d'une ville donnée. Écrivez une fonction qui filtre les commandes par ville. Des tests cachés vérifient votre réponse.