10 Meilleurs Exemples et Outils de Requête Pandas : Un Guide Complet
Published on
Pandas est une puissante bibliothèque Python pour la manipulation et l'analyse de données. L'un de ses outils les plus puissants est la fonction query()
. Cette fonction vous permet de filtrer et de manipuler des données dans un DataFrame en utilisant une syntaxe à la fois intuitive et efficace. Cet article se penchera sur les subtilités de la fonction query()
, en vous fournissant les connaissances dont vous avez besoin pour en tirer le meilleur parti.
La fonction query()
de Pandas fonctionne en prenant une expression booléenne et en la comparant avec chaque ligne de votre DataFrame. Seules les lignes qui renvoient True
pour l'expression sont renvoyées, filtrant ainsi vos données. Cette fonction est non seulement puissante, mais aussi efficace, ce qui en fait un outil essentiel dans la boîte à outils de tout analyste de données.
Vous voulez créer rapidement des visualisations de données à partir d'un DataFrame Pandas en Python, sans écrire de code ?
PyGWalker est une bibliothèque Python pour l'analyse exploratoire de données avec visualisation. PyGWalker (opens in a new tab) peut simplifier votre flux de travail d'analyse et de visualisation de données dans un notebook Jupyter, en transformant votre dataframe Pandas (et votre dataframe polars) en une interface utilisateur de style Tableau pour l'exploration visuelle.
Partie 1 : Comprendre la Requête Pandas
Qu'est-ce qu'une Requête Pandas ?
La requête Pandas est une fonction de la bibliothèque Pandas qui vous permet de filtrer les données dans un DataFrame en utilisant une expression booléenne. La fonction compare l'expression avec chaque ligne du DataFrame et renvoie uniquement les lignes pour lesquelles l'expression est évaluée à True
. Cette fonction est un outil puissant pour la manipulation de données et est particulièrement utile lors du traitement de grands ensembles de données.
Comment Fonctionne la Requête Pandas ?
La requête Pandas fonctionne en prenant une expression booléenne comme argument. Cette expression est ensuite comparée avec chaque ligne du DataFrame. Si l'expression est évaluée à True
pour une ligne particulière, cette ligne est incluse dans le DataFrame de sortie. Si l'expression est évaluée à False
, la ligne est exclue.
Par exemple, considérez un DataFrame df
avec une colonne 'A'. Si nous voulions filtrer toutes les lignes où 'A' est inférieur à 5, nous pourrions utiliser la requête suivante :
df.query('A < 5')
Cela renverrait un nouveau DataFrame contenant uniquement les lignes où 'A' est inférieur à 5.
Partie 2 : Requête Pandas vs Loc
Comprendre la Différence
Bien que query()
et loc[]
soient tous deux utilisés pour la sélection de données dans Pandas, ils fonctionnent de manière légèrement différente. La fonction loc[]
est une méthode de sélection de données basée sur les libellés, ce qui signifie qu'elle est utilisée pour sélectionner des données en fonction des libellés. D'autre part, query()
est une méthode plus flexible qui utilise une expression en chaîne de caractères pour la sélection de données.
Par exemple, si vous voulez sélectionner les lignes où 'A' est inférieur à 5, vous utiliseriez loc[]
de la manière suivante :
df.loc[df['A'] < 5]
Et avec query()
, vous utiliseriez :
df.query('A < 5')
Bien que les deux méthodes obtiennent le même résultat, query()
offre une syntaxe plus lisible et concise, surtout lorsqu'il s'agit d'expressions complexes.
Partie 3 : Utilisation de la Requête Pandas pour le Filtrage des Données
Filtrage de Base
L'utilisation principale de query()
est de filtrer les données en fonction de certaines conditions. Comme nous l'avons vu dans les exemples précédents, vous pouvez utiliser query()
pour sélectionner les lignes où une certaine condition est satisfaite. La condition est spécifiée sous forme de chaîne de caractères et peut inclure n'importe quelle expression Python valide.
Par exemple, si vous disposez d'un DataFrame df
avec les colonnes 'A', 'B' et 'C', et que vous souhaitez sélectionner toutes les lignes où 'A' est inférieur à 'B' et 'C' est supérieur à 10, vous pourriez utiliser la requête suivante :
df.query('A < B and C > 10')
Cela renverrait un nouveau DataFrame contenant uniquement les lignes où 'A' est inférieur à 'B' et 'C' est supérieur à 10.
Filtrage avec des Conditions Multiples
La requête Pandas vous permet également de filtrer les données en fonction de conditions multiples. Vous pouvez utiliser des opérateurs logiques tels que and
et or
pour combiner plusieurs conditions.
Par exemple, si vous souhaitez sélectionner toutes les lignes où 'A' est inférieur à 5 ou 'B' est supérieur à 10, vous pouvez utiliser la requête suivante :
df.query('A < 5 or B > 10')
Cela renverrait un nouveau DataFrame contenant uniquement les lignes où 'A' est inférieur à 5 ou 'B' est supérieur à 10.
Filtrage avec Contient une Chaîne de Caractères
La requête Pandas peut également être utilisée pour filtrer les données en fonction de valeurs de chaîne de caractères. Par exemple, si vous avez un DataFrame avec une colonne 'Nom', et que vous voulez sélectionner toutes les lignes où 'Nom' contient la chaîne de caractères 'John', vous pouvez utiliser la requête suivante :
df.query('Nom.str.contains("John")')
Cela renverrait un nouveau DataFrame contenant uniquement les lignes où 'Nom' contient la chaîne de caractères 'John'.
Partie 4 : Utilisations Avancées de la Requête Pandas
Utiliser la Requête avec des DataFrames qui Ont des Noms de Colonnes avec des Espaces
Si votre DataFrame a des noms de colonnes avec des espaces, vous pouvez quand même utiliser query()
en utilisant des guillemets inversés autour du nom de colonne. Par exemple, si vous avez une colonne nommée 'Prénom', vous pouvez utiliser la requête suivante :
df.query('`Prénom` == "John"')
Cela renverrait un nouveau DataFrame contenant uniquement les lignes où 'Prénom' est 'John'.
Utiliser la Requête pour Sélectionner des Lignes et des Colonnes
La requête Pandas peut également être utilisée pour sélectionner des lignes et des colonnes spécifiques dans un DataFrame. Par exemple, si vous souhaitez sélectionner les colonnes 'A' et 'B' pour toutes les lignes où 'C' est supérieur à 10, vous pouvez utiliser la requête suivante :
df.query('C > 10')[['A', 'B']]
Ce code renverrait un nouveau DataFrame contenant uniquement les colonnes 'A' et 'B' pour les lignes où 'C' est supérieur à 10.
Partie 5: Optimisation des performances des requêtes Pandas
La requête Pandas est déjà optimisée pour les performances, mais il existe quelques astuces pour rendre vos requêtes encore plus rapides. Une des façons les plus efficaces d'améliorer les performances des requêtes est d'utiliser des opérations vectorisées. Ce sont des opérations qui sont appliquées à des tableaux entiers à la fois, plutôt qu'à des éléments individuels.
Par exemple, au lieu d'utiliser une boucle pour itérer sur chaque élément d'une colonne, vous pouvez utiliser une opération vectorisée pour appliquer une fonction à toute la colonne en une seule fois. Cela peut améliorer considérablement les performances, surtout pour des ensembles de données volumineux.
Une autre façon d'améliorer les performances des requêtes est d'utiliser la fonction eval()
en conjonction avec query()
. La fonction eval()
peut évaluer des expressions complexes de manière plus efficace que query()
, et peut être utilisée pour accélérer vos requêtes.
Par exemple, si vous avez une requête complexe comme celle-ci :
df.query('A < B and C > D or E < F')
Vous pourriez utiliser eval()
pour évaluer l'expression de manière plus efficace :
df.query(df.eval('A < B and C > D or E < F'))
Partie 6: Requête Pandas pour l'apprentissage automatique et l'IA générative
La requête Pandas n'est pas seulement utile pour l'analyse de données, mais aussi pour l'apprentissage automatique et l'IA générative. En vous permettant de filtrer et de manipuler efficacement les données, query()
peut vous aider à préparer vos données pour les algorithmes d'apprentissage automatique.
Par exemple, vous pouvez utiliser query()
pour sélectionner des caractéristiques spécifiques de votre ensemble de données, ou pour filtrer les valeurs aberrantes qui pourraient avoir un impact négatif sur les performances de votre modèle. Vous pouvez également utiliser query()
pour créer de nouvelles caractéristiques basées sur des caractéristiques existantes, ce qui peut améliorer la puissance prédictive de votre modèle.
L'IA générative, qui consiste à créer de nouvelles données basées sur des données existantes, peut également bénéficier de query()
. En vous permettant de filtrer et de manipuler facilement vos données, query()
peut vous aider à créer des données synthétiques plus diverses et réalistes.
Foire aux questions
Peut-on utiliser query()
avec des DataFrames ayant des noms de colonnes contenant des espaces ?
Oui, si votre DataFrame a des noms de colonnes contenant des espaces, vous pouvez toujours utiliser query()
en utilisant des guillemets autour du nom de la colonne. Par exemple, si vous avez une colonne nommée 'First Name', vous pouvez utiliser la requête suivante :
df.query('`First Name` == "John"')
Comment utiliser la requête Pandas pour filtrer des données dans un DataFrame ?
La requête Pandas est utilisée pour filtrer les données en fonction de certaines conditions. La fonction prend une expression booléenne comme argument, qui est comparée à chaque ligne du DataFrame. Si l'expression est évaluée à True
pour une ligne donnée, cette ligne est incluse dans le DataFrame de sortie.
Quelle est la différence entre la requête Pandas et loc ?
Bien que query()
et loc[]
soient tous deux utilisés pour la sélection de données dans Pandas, ils fonctionnent de manière légèrement différente. La fonction loc[]
est une méthode de sélection de données basée sur des étiquettes, ce qui signifie qu'elle est utilisée pour sélectionner des données en fonction d'étiquettes. En revanche, query()
est une méthode plus flexible qui utilise une expression sous forme de chaîne pour la sélection de données.