Fonction Pandas Series.str.split()

Pandas 常用函数Fonctions courantes de Pandas


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. Lorsqueexpand=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

import pandas as pd

# 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 :

  1. s.str.split()Par défaut, les chaînes sont divisées par espace blanc (espaces, tabulations, etc.).
  2. La valeur de retour est une Series contenant des listes ; chaque liste contient les sous-chaînes après division.
  3. '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

import pandas as pd

# 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

import pandas as pd

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

import pandas as pd

# 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

import pandas as pd

# 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

import pandas as pd

# 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.
  • Quandexpand=FalseLorsque expand=False, la méthode renvoie une Series contenant des listes.
  • Quandexpand=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é.

Pandas 常用函数Fonctions courantes de Pandas

Autres extensions