Fonction Pandas Series.str.split()
Series.str.split()C'est une fonction de Pandas utilisée pour diviser des chaînes de caractères.
Dans le traitement des données, nous devons souvent diviser une chaîne en plusieurs parties, par exemple, diviser une phrase en mots, ou diviser des valeurs séparées par des virgules en listes.split()La fonction peut diviser une chaîne en plusieurs parties selon un délimiteur spécifié.
Signification du mot:splitsplit signifie « séparer, diviser », indiquant la division d'une chaîne en plusieurs parties.
Syntaxe de base et paramètres
str.split()C'est une méthode d'accès aux chaînes d'une Series, vous devez donc d'abord disposer d'une Series contenant des chaînes, puis utiliser.strl'accesseur pour l'appeler.
Format de syntaxe
Series.str.split(pat=None, n=-1, expand=False)
Description du paramètre
| Paramètre | Type | Obligatoire ? | Description | Valeur par défaut |
|---|---|---|---|---|
| pat | str | Optional | Délimiteur, peut être une chaîne ou une expression régulière. Par défaut, les espaces blancs. | None (espaces blancs) |
| n | int | Optional | Nombre de divisions. -1 signifie aucune limite, divise en autant de parties que possible. | -1 |
| expand | bool | Optional | Indique s'il faut étendre le résultat en un DataFrame. Par défaut False (renvoie une Series de listes). | False |
Description de la fonction
- Valeur de retour: Par défaut, renvoie une Series contenant des listes, où chaque élément de chaque liste est une sous-chaîne après découpage. Lorsque
expand=Trueexpand=True, elle renvoie un DataFrame. - Effet: Divise chaque chaîne en plusieurs parties selon le délimiteur spécifié.
- Remarque: Par défaut, l'espace blanc est utilisé comme délimiteur ; vous pouvez spécifier un délimiteur personnalisé.
Exemples
À travers une série d'exemples du simple au complexe, apprenons à maîtriser parfaitementstr.split()l'utilisation.
Exemple 1 : Utilisation de base - Division par espace blanc
Exemple
# Créer une Series contenant des phrases
s = pd.Series(['hello world', 'example python', 'pandas data analysis'])
# Diviser par espace blanc (comportement par défaut)
result = s.str.split()
print("Série d'origine :")
print(s)
print("nRésultat après division :")
print(result)
Sortie :
原始 Series: 0 hello world 1 example python 2 pandas data analysis dtype: object 拆分后的结果: 0 [hello, world] 1 [example, python] 2 [pandas, data, analysis]
Explication du code :
s.str.split()Par défaut, les chaînes sont divisées par espace blanc (espaces, tabulations, etc.).- La valeur de retour est une Series contenant des listes ; chaque liste contient les sous-chaînes après division.
- 'pandas data analysis' est divisé en trois parties.
Exemple 2 : Division par un délimiteur spécifié
Vous pouvez utiliserpatle paramètre pour spécifier un délimiteur personnalisé.
Exemple
# Créer une Series contenant des valeurs séparées par des virgules
s = pd.Series(['apple,banana,orange', 'dog,cat,bird', 'red,green,blue'])
# Diviser par virgule
result = s.str.split(',')
print("Série d'origine :")
print(s)
print("nRésultat après division par virgule :")
print(result)
Sortie :
原始 Series: 0 apple,banana,orange 1 dog,cat,bird 2 red,green,blue dtype: object 拆分后的结果: 0 [apple, banana, orange] 1 [dog, cat, bird] 2 [red, green, blue]
Explication du code :
s.str.split(',')Diviser chaque chaîne par virgule.- Il s'agit d'une méthode courante pour traiter des données CSV ou des valeurs séparées par des virgules.
Exemple 3 : Limiter le nombre de divisions
En utilisant lanparamètre, vous pouvez limiter le nombre de divisions.
Exemple
s = pd.Series(['a,b,c,d,e', '1,2,3,4,5'])
# Limiter à seulement 2 parties
result_2 = s.str.split(',', n=2)
# Limiter à seulement 1 partie (c.-à-d., diviser une seule fois)
result_1 = s.str.split(',', n=1)
print("Série d'origine :")
print(s)
print("nLimiter à 2 parties :")
print(result_2)
print("nLimiter à 1 partie :")
print(result_1)
Sortie :
原始 Series: 0 a,b,c,d,e 1 1,2,3,4,5 dtype: object 限制拆分为 2 部分: 0 [a, b, c,d,e] 1 [1, 2, 3,4,5] 限制拆分为 1 部分: 0 [a, b,c,d,e] 1 [1, 2,3,4,5]
Explication du code :
n=2Signifie découper en au plus 2 parties, la dernière partie contenant tout le contenu restant.n=1Signifie découper uniquement au premier délimiteur, ce qui donne 2 parties.
Exemple 4 : Développement vers un DataFrame
Quandexpand=TrueLorsque expand=True, le résultat de la séparation est développé dans un DataFrame.
Exemple
# Créer une Series contenant des valeurs séparées par des virgules
s = pd.Series(['apple,banana,orange', 'dog,cat,bird', 'red,green,blue'])
# Développer vers un DataFrame
result = s.str.split(',', expand=True)
print("Série d'origine :")
print(s)
print("nDéveloppé en DataFrame :")
print(result)
print("nType de DataFrame :", type(result))
Sortie :
原始 Series:
0 apple,banana,orange
1 dog,cat,bird
2 red,green,blue
dtype: object
展开为 DataFrame:
0 1 2
0 apple banana orange
1 dog cat bird
2 red green blue
DataFrame 类型: <class 'pandas.core.frame.DataFrame'>
Explication du code :
expand=TrueDévelopper le résultat du découpage dans un DataFrame.- Chaque colonne représente une position après découpage.
- Ceci est très utile lors du traitement de données structurées.
Exemple 5 : Découpage avec des expressions régulières
split()Il prend également en charge l'utilisation d'expressions régulières comme délimiteurs.
Exemple
# Créer une Series contenant différents délimiteurs
s = pd.Series(['hello-world', 'example_python', 'pandas#tutorial'])
# Découper par expression régulière (correspond à l'un des caractères -, _, #)
result = s.str.split(r'[-_#]')
print("Série d'origine :")
print(s)
print("nDécouper par expression régulière :")
print(result)
Sortie :
原始 Series: 0 hello-world 1 example_python 2 pandas#tutorial dtype: object 按正则表达式拆分: 0 [hello, world] 1 [example, python] 2 [pandas, tutorial]
Explication du code :
r'[-_#]'Il s'agit d'une expression régulière qui correspond à l'un des caractères '-', '_' ou '#'.- Il peut gérer plusieurs délimiteurs différents en même temps.
Exemple 6 : Manipulation de données réelles
Dans les applications pratiques,split()il est souvent utilisé en combinaison avec d'autres fonctions.
Exemple
# Simuler des données extraites des journaux
logs = pd.Series([
'2024-01-01 10:30:45 ERROR Échec de la connexion',
'2024-01-01 10:31:12 INFO Utilisateur connecté',
'2024-01-01 10:32:00 WARNING Utilisation mémoire élevée'
])
# Diviser le contenu du journal
log_parts = logs.str.split(r's+', expand=True)
print("Journal d'origine :")
print(logs)
print("nFractionnement du DataFrame :")
print(log_parts)
# Renommer les colonnes
log_parts.columns = ['timestamp', 'level', 'message']
print("nRésultat après renommage :")
print(log_parts)
Sortie :
原始日志:
0 2024-01-01 10:30:45 ERROR Connection failed
1 2024-01-01 10:31:12 INFO User logged in
2 2024-01-01 10:32:00 WARNING Memory usage high
dtype: object
拆分后的 DataFrame:
0 1 2
0 2024-01-01 10:30:45 ERROR Connection failed
1 2024-01-01 10:31:12 INFO User logged in
2 2024-01-01 10:32:00 WARNING Memory usage high
重命名后的结果:
timestamp level message
0 2024-01-01 10:30:45 ERROR Connection failed
1 2024-01-01 10:31:12 INFO User logged in
2 2024-01-01 10:32:00 WARNING Memory usage high
Explication du code :
r's+'Correspond à un ou plusieurs caractères d'espacement, ce qui divise le journal en plusieurs parties.expand=TrueDévelopper le résultat du découpage dans un DataFrame.- En renommant les colonnes, vous pouvez accéder et traiter facilement chaque partie.
Notes
str.split()Par défaut, l'espace blanc est utilisé comme délimiteur.- Quand
expand=FalseLorsque expand=False, la méthode renvoie une Series contenant des listes. - Quand
expand=TrueLorsque expand=True, la méthode renvoie un DataFrame, et le nombre de colonnes dépend du résultat de fractionnement le plus long. - Si une chaîne ne contient pas le délimiteur, la liste renvoyée ne contient qu'un seul élément (la chaîne d'origine).
- Les expressions régulières peuvent être utilisées comme délimiteurs, offrant une manière plus flexible de fractionner.
- Si la Series contient des valeurs NaN, NaN est renvoyé.
Autres extensions
Fonctions courantes de Pandas