Pandas DataFrame Python : Construire et Filtrer des Lignes

Créez un pandas DataFrame en Python avec pd.DataFrame(data), en utilisant un dictionnaire de listes de longueur égale pour les colonnes et valeurs. Utilisez un DataFrame quand les enregistrements ont besoin de lignes et colonnes étiquetées, d’une sélection de colonnes ou d’un filtrage vectorisé. Un masque booléen filtre les données tabulaires sans écrire de boucle Python. Le résultat conserve les étiquettes d’index d’origine à moins que vous les réinitialisiez explicitement.

Exemple Python Pandas DataFrame Pour Filtrer des Lignes

Sortie :

La sortie apparaîtra ici...

Sortie :

product  units
Keyboard     12
 Monitor     15

Comment Fonctionne Cet Exemple

  1. import pandas as pd donne au paquet son alias conventionnel pd.
  2. Le constructeur pandas DataFrame transforme chaque clé de dictionnaire en label de colonne. Comme les deux listes contiennent trois valeurs, pandas crée trois lignes et attribue un RangeIndex par défaut avec 0, 1 et 2.
  3. sales["units"] >= 10 produit une Series booléenne alignée sur cet index. Repasser le masque à sales[...] conserve seulement les lignes dont la valeur est True.
  4. to_string(index=False) masque l’index dans le tableau affiché ; il ne supprime pas ni ne renumérote les labels stockés.

Prouver Ce que l’Exécution du DataFrame a Réellement Fait

Exécutez le programme deux fois sur la même page, en ouvrant Run Details après chaque fin. Cela transforme le panneau en expérience de dépendances plutôt que de confondre la durée du démarrage à froid avec un benchmark DataFrame.

ObservationRuntime à froidRuntime chaud sur la même page
Requests00
Paquets nouvellement disponiblespandas 1.5.3, numpy 1.26.1, python-dateutil 2.8.2, six 1.16.0, pytz 2023.30
Ce qui a changépandas et ses dépendances sont devenus disponiblesle runtime les avait déjà

web.run détecte import pandas et charge les paquets compatibles avant que le Python de l’utilisateur démarre. Run Details reporte la différence entre les paquets disponibles avant et après cet exécution ; une liste Packages vide lors du démarrage chaud signifie “rien de nouveau chargé”, pas “pandas n’était pas utilisé.”

La durée totale du premier lancement inclut le bootstrap du paquet ainsi que l’exécution Python. Comparez-la avec le démarrage chaud avant d’incriminer pd.DataFrame(...); les temps varient selon la machine et l’état du cache, donc utilisez la liste Packages pour identifier le travail de bootstrap.

Les deux exécutions rapportent zéro requête utilisateur car le dictionnaire et le filtrage restent locaux. L’exécution à froid télécharge quand même des fichiers de paquet comme activité runtime. Donc “pas de requêtes utilisateur” prouve que le snippet n’a fait aucune requête externe, pas que le navigateur a transféré zéro octet.

Le Piège de l’Index Filtré : loc N’est Pas iloc

Filtrer préserve les labels. Ici ready.index.tolist() est [0, 2], même si index=False fait ressembler la sortie à un tableau frais de deux lignes. Le code qui traite la deuxième ligne affichée comme le label 1 échoue :

Incorrect :

second_product = ready.loc[1, "product"]  # KeyError: 1

Correct pour la deuxième ligne par position :

second_product = ready.iloc[1]["product"]

Correct quand le code suivant a besoin de labels séquentiels :

ready = ready.reset_index(drop=True)
second_product = ready.loc[1, "product"]

Utilisez .loc pour les labels d’index et .iloc pour les positions à base zéro. Réinitialisez l’index seulement quand les nouveaux labels font partie du résultat souhaité ; sinon, conserver les labels sources aide à retrouver les lignes filtrées dans les données d’origine.

Erreurs de Longueur dans le Constructeur DataFrame

Un dictionnaire de listes doit décrire un tableau rectangulaire. pandas lève ValueError: All arrays must be of the same length plutôt que de deviner comment remplir une colonne courte.

Incorrect :

pd.DataFrame({"product": ["Keyboard", "Mouse"], "units": [12]})

Correct :

pd.DataFrame({"product": ["Keyboard", "Mouse"], "units": [12, None]})

Ajoutez une valeur manquante explicite seulement quand elle représente honnêtement les données ; sinon, corrigez les enregistrements sources avant de construire le tableau.

Quand un DataFrame Est le Bon Conteneur

ChoisirQuand ça convient
DataFramePlusieurs colonnes étiquetées ont besoin d’indexation booléenne, d’opérations de colonnes ou d’analyse tabulaire
SeriesUne dimension étiquetée suffit
Liste de dictionnairesUne petite collection d’enregistrements a besoin d’itération mais pas d’opérations de colonnes
Array NumPyDes données numériques homogènes ont besoin d’opérations matricielles sans labels de ligne ou de colonne

Un DataFrame justifie son coût en paquet et mémoire quand les labels et les opérations vectorisées simplifient de vraies transformations. Gardez une liste de dictionnaires quand les enregistrements sont petits et n’ont besoin que d’une itération Python ordinaire.