Fonction Pandas Series.str.contains()
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
# 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 :
s.str.contains('ap')Vérifier si chaque chaîne contient la sous-chaîne 'ap'.- 'apple' contient 'ap', renvoie True.
- 'banana' ne contient pas 'ap', renvoie False.
- 'grape' contient 'ap', renvoie True.
- '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
# 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
# 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 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ètre
na=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
# 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éfinir
regex=False。 - Par défaut, il est sensible à la casse ; utilisez
case=Falsepour le rendre insensible à la casse. - Par défaut, les valeurs NaN renvoient NaN ; utilisez
naparamè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.
Autres extensions