Fonction Pandas Series.str.contains()

Pandas 常用函数Fonctions Pandas couramment utilisées


Series.str.contains()est une fonction de Pandas utilisée pour vérifier si une chaîne contient une sous-chaîne spécifiée.

Dans le traitement des données, nous devons souvent filtrer les données en fonction du contenu textuel, par exemple trouver des enregistrements contenant des mots-clés spécifiques ou éliminer le texte qui correspond à un certain motif.contains()La fonction peut vérifier si chaque élément de chaîne contient une sous-chaîne spécifiée ou un motif d'expression régulière.

Signification du mot:containssignifie « contenir », indiquant si la chaîne contient le contenu spécifié.


Syntaxe de base et paramètres

str.contains()est l'accesseur de chaînes de Series, donc vous devez d'abord avoir une Series contenant des chaînes, puis utiliser.strl'accesseur pour l'appeler.

Format de syntaxe

Series.str.contains(pat, case=True, regex=True, na=None)

Description du paramètre

Paramètre Type Requis Description Valeur par défaut
pat str Requis Le motif à rechercher, qui peut être une chaîne ordinaire ou une expression régulière. -
case bool Optional Indique s'il faut distinguer la casse. La valeur par défaut est True (sensible à la casse). True
regex bool Optional S'il faut traiter le paramètre pat comme une expression régulière. Valeur par défaut : True. True
na objet Optional La valeur à renvoyer lorsque l'élément est NaN. Valeur par défaut : None (renvoie NaN). Aucune

Description de la fonction

  • Valeur de retour: renvoie une Series booléenne indiquant si chaque élément contient le motif spécifié.
  • Effet: vérifie chaque élément de type chaîne dans la Series et renvoie True ou False.
  • Remarque: utilise par défaut la correspondance par expression régulière, ce qui permet de faire correspondre des motifs plus complexes.

Exemples

Maîtrisons à fond, à travers une série d'exemples du simple au complexe,str.contains()son utilisation.

Exemple 1 : Utilisation de base - Vérifier si une sous-chaîne est contenue

Exemple

import pandas as pd

# Créer une Series contenant du texte
s = pd.Series(['apple', 'banana', 'grape', 'pineapple', 'orange'])

# Vérifier s'il contient 'ap'
result = s.str.contains('ap')

print("Série d'origine :")
print(s)
print("nContains 'ap':")
print(result)

Résultat de sortie :

原始 Series:
0       apple
1      banana
2       grape
3    pineapple
4      orange
dtype: object

是否包含 'ap':
0       True
1      False
2       True
3       True
4      False

Explication du code :

  1. s.str.contains('ap')Vérifier si chaque chaîne contient la sous-chaîne 'ap'.
  2. 'apple' contient 'ap', renvoie True.
  3. 'banana' ne contient pas 'ap', renvoie False.
  4. 'grape' contient 'ap', renvoie True.
  5. 'pineapple' contient 'ap', renvoie True.

Exemple 2 : Utilisation de la correspondance par expressions régulières

contains()Les expressions régulières sont utilisées par défaut, ce qui permet de faire correspondre des motifs plus complexes.

Exemple

import pandas as pd

# Créer une Series contenant du texte
s = pd.Series(['hello123', 'world456', 'example789', 'python', 'test123'])

# Utiliser une expression régulière pour faire correspondre les chaînes qui commencent par une lettre et sont suivies de chiffres
result = s.str.contains(r'^[a-zA-Z]+d+$')

print("Série d'origine :")
print(s)
print("nFaire correspondre le motif commençant par une lettre et se terminant par un chiffre :")
print(result)

Résultat de sortie :

原始 Series:
0      hello123
1      world456
2     example789
3       python
4      test123
dtype: object

匹配字母开头+数字结尾的模式:
0       True
1       True
2       True
3      False
4       True

Explication du code :

  • r'^[a-zA-Z]+d+$'C'est une expression régulière qui correspond aux chaînes commençant par une lettre et se terminant par un chiffre.
  • ^indique le début de la chaîne,$indique la fin de la chaîne.
  • 'python' ne contient pas de chiffres, donc il ne correspond pas.

Exemple 3 : Correspondance insensible à la casse

En définissantcase=Falsela correspondance insensible à la casse peut être réalisée.

Exemple

import pandas as pd

# Créer une Series contenant du texte en différentes casses
s = pd.Series(['Apple', 'APPLE', 'apple', 'Banana', 'APPLE'])

# Correspondance sensible à la casse
result_case = s.str.contains('APPLE')
# Correspondance insensible à la casse
result_nocase = s.str.contains('APPLE', case=False)

print("Série d'origine :")
print(s)
print("nCorrespondance sensible à la casse 'APPLE':")
print(result_case)
print("nCorrespondance insensible à la casse 'APPLE':")
print(result_nocase)

Résultat de sortie :

原始 Series:
0      Apple
1     APPLE
2     apple
3     Banana
4     APPLE
dtype: object

区分大小写匹配 'APPLE':
0      False
1       True
2      False
3      False
4       True

不区分大小写匹配 'APPLE':
0       True
1       True
2       True
3      False
4       True

Explication du code :

  • case=True(par défaut) Sensible à la casse, ne correspond qu'exactement à 'APPLE'.
  • case=FalseInsensible à la casse, 'Apple', 'APPLE' et 'apple' correspondent toutes.

Exemple 4 : Gestion des valeurs manquantes

Vianale paramètre, vous pouvez spécifier comment gérer les valeurs NaN.

Exemple

import pandas as pd
import numpy as np

# Créer une Series contenant des valeurs NaN
s = pd.Series(['apple', 'banana', np.nan, 'grape', None])

# Gestion par défaut des NaN (renvoie NaN)
result_default = s.str.contains('ap')
# Spécifier que NaN renvoie False
result_na_false = s.str.contains('ap', na=False)

print("Série d'origine :")
print(s)
print("nTraitement par défaut (renvoie NaN) :")
print(result_default)
print("nTraiter NaN comme False :")
print(result_na_false)

Résultat de sortie :

原始 Series:
0       apple
1      banana
2        NaN
3       grape
4       None
dtype: object

默认处理(返回 NaN):
0       True
1      False
2        NaN
3       True
4        NaN

将 NaN 视为 False:
0       True
1      False
2      False
3       True
4      False

Explication du code :

  • Par défaut, NaN et None renvoient NaN.
  • Paramètrena=Falsepeut traiter NaN comme non correspondant.
  • Dans le traitement réel des données, cela est utile et peut éviter les problèmes de filtrage causés par NaN.

Exemple 5 : Filtrage des données

contains()Il est souvent combiné avec l'indexation booléenne pour filtrer les données.

Exemple

import pandas as pd

# Créer une Series de données produit simulées
products = pd.Series([
    'iPhone 14 Pro',
    'Samsung Galaxy S23',
    'iPhone 13',
    'Google Pixel 7',
    'iPad Pro',
    'MacBook Air',
    'Dell XPS 15'
])

# Filtrer les produits contenant 'iPhone'
iphone_products = products[products.str.contains('iPhone')]

# Filtrer les produits qui ne contiennent pas 'i' (sensible à la casse)
no_i_products = products[~products.str.contains('i')]

print("Tous les produits :")
print(products)
print("nProduits contenant 'iPhone' :")
print(iphone_products)
print("nProduits ne contenant pas la majuscule 'I' :")
print(no_i_products)

Résultat de sortie :

所有产品:
0       iPhone 14 Pro
1    Samsung Galaxy S23
2          iPhone 13
3    Google Pixel 7
4          iPad Pro
5      MacBook Air
6        Dell XPS 15
dtype: object

包含 'iPhone' 的产品:
0    iPhone 14 Pro
2          iPhone 13
dtype: object

不包含大写 'I' 的产品:
6    Dell XPS 15

Explication du code :

  • products[products.str.contains('iPhone')]Exclure les produits contenant 'iPhone'.
  • ~products.str.contains('i')Utiliser~négation pour exclure les produits qui ne contiennent pas 'i'.
  • Il s'agit d'une opération courante dans le filtrage de données.

Notes

  • str.contains()Les expressions régulières sont utilisées par défaut (regex=True)。
  • Si vous avez besoin de faire correspondre des chaînes ordinaires (et non en tant qu'expressions régulières), vous pouvez définirregex=False。
  • Par défaut, il est sensible à la casse ; utilisezcase=Falsepour le rendre insensible à la casse.
  • Par défaut, les valeurs NaN renvoient NaN ; utiliseznaparamètre pour spécifier la valeur de retour.
  • Cette fonction renvoie une Series booléenne, qui peut être directement utilisée pour l'indexation booléenne afin de filtrer les données.

Pandas 常用函数Fonctions Pandas couramment utilisées

Autres extensions