Fonction df.replace() de Pandas
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 (si
inplace=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 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 :
- Il y a deux lignes avec le département "Technology" dans le DataFrame.
- Utiliser
df.replace('技术', '研发')pour remplacer toutes les occurrences de "technology" par "R&D". - 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
# 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 dictionnaire
replacements, 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
# 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
# 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 utilise
VIPs*客户?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 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
# 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é.
Autres extensions