Fonction df.replace() de Pandas

Fonctions Pandas courantes


df.replace()C'est une fonction de Pandas utilisée pour remplacer des données dans un DataFrame.

Le remplacement de données est une opération courante dans le nettoyage des données,replace()Il peut vous aider à remplacer des valeurs spécifiques par de nouvelles valeurs, et prend en charge plusieurs méthodes flexibles telles que le remplacement d'une seule valeur, le remplacement de plusieurs valeurs et le remplacement par expression régulière. C'est très utile dans des scénarios tels que la gestion des valeurs aberrantes, l'unification des formats de données et la conversion d'encodage.


Syntaxe de base et paramètres

replace()C'est une fonction membre de DataFrame, via l'opérateur point.pour appeler.

Format de syntaxe

DataFrame.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad')

Description des paramètres

Paramètre Type Requis Description Valeur par défaut
to_replace str, regex, list, dict, int, float, None Requis La valeur à remplacer. Elle peut être une valeur unique, une liste de valeurs, un dictionnaire, une expression régulière, etc. Aucune
value scalaire, dict, list, str, regex, None Optional La valeur après remplacement. Sito_replaces'il s'agit d'un dictionnaire, ce paramètre peut être omis ; s'il ne s'agit pas d'un dictionnaire, ce paramètre est requis. Aucune
inplace bool Optional S'il estTrue, modifie directement le DataFrame d'origine sans renvoyer un nouvel objet ; s'il estFalse, renvoie un nouveau DataFrame, les données d'origine restent inchangées. False
limit int Optional Spécifiez le nombre maximal de remplacements. Aucune
regex bool ou str Optional S'il estTrue, traiterto_replacecomme une expression régulière. False
method str Optional Quandto_replaceUtilisé lorsqu'il s'agit d'une liste.'pad'ou'ffill'Indique un remplissage vers l'avant ;'backfill'ou'bfill'Indique un remplissage vers l'arrière. 'pad'

Description de la valeur de retour

  • Renvoie un nouveau DataFrame (siinplace=False), ouNone(siinplace=True)。
  • Les valeurs spécifiées dans le DataFrame renvoyé ont été remplacées.

Exemples

Maîtrisons à fond grâce à une série d'exemplesreplace()l'utilisation de.

Exemple 1 : remplacement d'une valeur unique

Remplacez une valeur spécifique dans le DataFrame par une nouvelle valeur.

Exemple

import pandas as pd
import numpy as np

# Créer un DataFrame qui contient des données dupliquées
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'],
    'Département': ['Technologie', 'Marketing', 'Technologie', 'Marketing'],
    'Salary': [5000, 6000, 5500, 7000]
}
df = pd.DataFrame(data)

print(“Données brutes :”)
print(df)
print("=" * 50)

# Remplacer 'technology' par 'R&D'
df_replaced = df.replace('Technology', R&D)

print("Replaced Data:")
print(df_replaced)

Sortie attendue :

原始数据:
    姓名  部门   薪资
0  张三  技术  5000
1  李四  市场  6000
2  王五  技术  5500
3  赵六  市场  7000
==================================================
替换后的数据:
    姓名   部门  薪资
0  张三  研发  5000
1  李四  市场  6000
2  王五  研发  5500
3  赵六  市场  7000

Analyse du code :

  1. Il y a deux lignes avec le département "Technology" dans le DataFrame.
  2. Utiliserdf.replace('技术', '研发')pour remplacer toutes les occurrences de "technology" par "R&D".
  3. Cette méthode remplace toutes les valeurs correspondantes dans le DataFrame.

Exemple 2 : Remplacement un à un de plusieurs valeurs

Utilisez un dictionnaire pour remplacer plusieurs valeurs différentes en une seule fois.

Exemple

import pandas as pd

# Créer un DataFrame contenant les données à remplacer
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'],
    'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen'],
    Niveau: ['A', 'B', 'A', 'C']
}
df = pd.DataFrame(data)

print(“Données brutes :”)
print(df)
print("=" * 50)

# Utiliser un dictionnaire pour effectuer plusieurs remplacements
replacements = {
    'Beijing': 'Beijing',
    'Shanghai': 'Shanghai',
    'Guangzhou': 'Guangzhou',
    'Shenzhen': 'Shenzhen',
    'A': 'Excellent',
    'B': Bon,
    'C': 'Pass'
}
df_replaced = df.replace(replacements)

print("Replaced Data:")
print(df_replaced)

Sortie attendue :

原始数据:
    姓名  城市  等级
0  张三  北京   A
1  李四  上海   B
2  王五  广州   A
3  赵六  深圳   C
==================================================
替换后的数据:
    姓名   城市  等级
0  张三  北京市  优秀
1  李四  上海市  良好
2  王五  广州市  优秀
3  赵六  深圳市  及格

Analyse du code :

  • Grâce au dictionnairereplacements, nous pouvons spécifier plusieurs règles de remplacement en une seule fois.
  • Cette méthode est très efficace, évitant de multiples appels àreplace()。

Exemple 3 : Remplacer les valeurs dans une colonne spécifique

Vous pouvez remplacer les valeurs uniquement dans des colonnes spécifiques sans affecter les autres colonnes.

Exemple

import pandas as pd

# Créer un DataFrame
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'],
    'Département': ['Technologie', 'Marketing', 'Technologie', 'Marketing'],
    Position: ['Technology', 'Marketing', 'Technology', 'Marketing']
}
df = pd.DataFrame(data)

print(“Données brutes :”)
print(df)
print("=" * 50)

# Remplacer uniquement "Technology" par "R&D" dans la colonne "Department"
df_replaced = df.replace({'Department': 'Technology'}, R&D)

print(Données après remplacement uniquement de la colonne Department :)
print(df_replaced)
print("=" * 50)

Vous pouvez également utiliser un dictionnaire imbriqué pour appliquer différentes règles de remplacement à différentes colonnes.
df_replaced2 = df.replace({'Department': {'Technology': R&D, 'Marketing': Sales}, Position: 'Technology'})

print("Données après l'application de différentes règles de remplacement à différentes colonnes :")
print(df_replaced2)

Sortie attendue :

原始数据:
    姓名  部门  职位
0  张三  技术  技术
1  李四  市场  市场
2  王五  技术  技术
3  赵六  市场  市场
==================================================
只替换部门列后的数据:
    姓名   部门  职位
0  张三  研发  技术
1  李四  市场  市场
2  王五  研发  技术
3  赵六  市场  市场
==================================================
对不同列使用不同规则替换后的数据:
    姓名   部门  职位
0  张三  研发  研发
1  李四  销售  市场
2  王五  研发  研发
3  赵六  销售  市场

Analyse du code :

  • Utilisation{'department': 'Technology'}peut remplacer uniquement les valeurs dans la colonne "Department".
  • Dictionnaire imbriqué{'department': {'Technology': 'R&D'}}peut spécifier différentes règles de remplacement pour différentes colonnes.

Exemple 4 : Remplacer à l'aide d'expressions régulières

regex=TrueLe paramètre permet d'utiliser des expressions régulières pour le remplacement, ce qui est très utile lors du traitement de textes avec correspondance de motifs.

Exemple

import pandas as pd

# Créer un DataFrame qui doit être traité avec des expressions régulières
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'],
    Téléphone: ['138-0000-0000', '139-1111-1111', '137-2222-2222', '136-3333-3333'],
    Remarques: [Normal, 'VIPclient', Normal, 'client VIP']
}
df = pd.DataFrame(data)

print(“Données brutes :”)
print(df)
print("=" * 50)

# Utiliser des expressions régulières pour remplacer les séparateurs dans les numéros de téléphone
df_replaced = df.replace(to_replace=r'(d{3})-(d{4})-(d{4})', value=r'1****3', regex=True)

print(Données après le remplacement des numéros de téléphone (en masquant les 4 chiffres du milieu):)
print(df_replaced)
print("=" * 50)

# Remplacer "VIP customer" dans la remarque (il peut y avoir des différences d'espacement)
df_replaced2 = df.replace(to_replace=r'VIPs*Customers?', value='VIP', regex=True)

print(Données après unification des remarques VIP:)
print(df_replaced2)

Sortie attendue :

原始数据:
    姓名          电话        备注
0  张三  138-0000-0000       正常
1  李四  139-1111-1111   VIP客户
2  王五  137-2222-2222       正常
3  赵六  136-3333-3333  VIP 客户
==================================================
替换电话号码(隐藏中间4位)后的数据:
    姓名          电话  备注
0  张三  138****0000   正常
1  李四  139****1111  VIP客户
2  王五  137****2222   正常
3  赵六  136****3333  VIP 客户
==================================================
统一VIP备注后的数据:
    姓名          电话  备注
0  张三  138-0000-0000  正常
1  李四  139-1111-1111  VIP
2  王五  137-2222-2222  正常
3  赵六  136-3333-3333  VIP

Analyse du code :

  • Le premier exemple utilise une expression régulière(d{3})-(d{4})-(d{4})pour correspondre au format de numéro de téléphone et le remplacer par1****3, masquant les 4 chiffres du milieu.
  • Le deuxième exemple utiliseVIPs*客户?pour correspondre à la fois aux formats "VIPclient" et "VIP client", et les remplacer uniformément par "VIP".

Exemple 5: Remplacer les valeurs manquantes NaN

replace()Il peut également être utilisé pour remplacer les valeurs manquantesNaN, ce qui est une opération courante dans le nettoyage des données.

Exemple

import pandas as pd
import numpy as np

# Créer un DataFrame avec des valeurs manquantes
data = {
    'Name': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu'],
    'Age': [25, np.nan, 35, np.nan],
    'Salary': [5000, 6000, np.nan, 8000]
}
df = pd.DataFrame(data)

print("Données d'origine :")
print(df)
print("=" * 50)

# Remplacer NaN par 0
df_replaced = df.replace(np.nan, 0)

print("Données après remplacement des NaN par 0 :")
print(df_replaced)
print("=" * 50)

# Remplacer NaN par d'autres valeurs, telles que "Unknown"
df_replaced2 = df.replace(np.nan, 'Unknown')

print("Données après remplacement des NaN par 'Unknown' :")
print(df_replaced2)

Sortie attendue :

原始数据:
    姓名   年龄    薪资
0  张三  25.0  5000.0
1  李四   NaN  6000.0
2  王五  35.0     NaN
3  赵六   NaN  8000.0
==================================================
将 NaN 替换为 0 后的数据:
    姓名   年龄  薪资
0  张三  25.0  5000
1  李四   0.0  6000
2  王五  35.0     0
3  赵六   0.0  8000
==================================================
将 NaN 替换为'未知'后的数据:
    姓名   年龄    薪资
0  张三  25.0  5000.0
1  李四  未知  6000.0
2  王五  35.0    未知
3  赵六  未知  8000.0

Explication du code :

  • np.nanreprésente des valeurs manquantes. Vous pouvez utiliserreplace(np.nan, value)pour les remplacer.
  • Choisissez une valeur appropriée pour remplacer les valeurs manquantes en fonction du type de données et des exigences métier.

Exemple 6 : Remplacement numérique

Vous pouvez remplacer les données numériques pour effectuer une standardisation des données ou une gestion des valeurs aberrantes.

Exemple

import pandas as pd

# Créer un DataFrame contenant des valeurs aberrantes
data = {
    'Student': ['Zhang San', 'Li Si', 'Wang Wu', 'Zhao Liu', 'Qian Qi'],
    'Score': [85, 150, 78, 92, -10]  # 150 et -10 sont des valeurs aberrantes
}
df = pd.DataFrame(data)

print("Données d'origine :")
print(df)
print("=" * 50)

# Remplacer les valeurs aberrantes par des valeurs dans une plage raisonnable
df_replaced = df.replace({150: 100, -10: 0})

print("Données après remplacement des valeurs aberrantes :")
print(df_replaced)
print("=" * 50)

# Utiliser une logique conditionnelle pour remplacer plusieurs valeurs
df_replaced2 = df.replace(to_replace=[150, -10], value=[100, 0])

print("Utilisation de listes pour remplacer plusieurs valeurs :")
print(df_replaced2)

Sortie attendue :

原始数据:
    学生  成绩
0  张三    85
1  李四   150
2  王五    78
3  赵六    92
4  钱七   -10
==================================================
将异常值替换后的数据:
    学生  成绩
0  张三    85
1  李四   100
2  王五    78
3  赵六    92
4  钱七     0
==================================================
使用列表替换多个值:
    学生  成绩
0  张三    85
1  李四   100
2  王五    78
3  赵六    92
4  钱七     0

Explication du code :

  • dictionnaire{150: 100, -10: 0}Remplacer la valeur aberrante 150 par 100, et -10 par 0.
  • liste[150, -10]et[100, 0]Spécifiez les valeurs à remplacer et les valeurs de remplacement respectivement, en correspondance dans l'ordre.

Notes

  • replace()Par défaut, le DataFrame d'origine n'est pas modifié. Si vous souhaitez le modifier sur place, utilisezinplace=Trueparamètre.
  • Lors de l'utilisation d'expressions régulières, assurez-vous que la syntaxe regex est correcte ; les expressions régulières complexes peuvent entraîner des résultats inattendus.
  • Le remplacement est basé sur la correspondance des valeurs et ne modifie pas le type de données.
  • Faites attention à la sensibilité à la casse ; "Technology" et "Technology" sont des valeurs différentes.
  • Avant le remplacement des données, il est recommandé de sauvegarder les données d'origine pour la comparaison et la traçabilité.

Fonctions courantes de Pandas

Autres extensions