Pandas : Comment remplacer inf par Max Value
Vous pouvez utiliser les méthodes suivantes pour remplacer les valeurs inf et -inf par la valeur maximale dans un DataFrame pandas :
Méthode 1 : remplacer inf par la valeur maximale dans une colonne
#find max value of column max_value = np.nanmax(df['my_column'][df['my_column'] != np.inf]) #replace inf and -inf in column with max value of column df['my_column'].replace([np.inf, -np.inf], max_value, inplace=True)
Méthode 2 : remplacer inf par la valeur maximale dans toutes les colonnes
#find max value of entire data frame
max_value = np.nanmax(df[df != np.inf])
#replace inf and -inf in all columns with max value
df.replace([np.inf, -np.inf], max_value, inplace=True)
Les exemples suivants montrent comment utiliser cette syntaxe en pratique avec le DataFrame pandas suivant :
import pandas as pd
import numpy as np
#create DataFrame
df = pd.DataFrame({'points': [18, np.inf, 19, np.inf, 14, 11, 20, 28],
'assists': [5, 7, 7, 9, 12, 9, 9, np.inf],
'rebounds': [np.inf, 8, 10, 6, 6, -np.inf, 9, 12]})
#view DataFrame
print(df)
points assists rebounds
0 18.0 5.0 inf
1 inf 7.0 8.0
2 19.0 7.0 10.0
3 inf 9.0 6.0
4 14.0 12.0 6.0
5 11.0 9.0 -inf
6 20.0 9.0 9.0
7 28.0 inf 12.0
Exemple 1 : Remplacer inf par la valeur maximale dans une colonne
Le code suivant montre comment remplacer les valeurs inf et -inf dans la colonne rebonds par la valeur maximale de la colonne rebonds :
#find max value of rebounds
max_value = np.nanmax(df['rebounds'][df['rebounds'] != np.inf])
#replace inf and -inf in rebounds with max value of rebounds
df['rebounds'].replace([np.inf, -np.inf], max_value, inplace=True)
#view updated DataFrame
print(df)
points assists rebounds
0 18.0 5.0 12.0
1 inf 7.0 8.0
2 19.0 7.0 10.0
3 inf 9.0 6.0
4 14.0 12.0 6.0
5 11.0 9.0 12.0
6 20.0 9.0 9.0
7 28.0 inf 12.0
Notez que chaque valeur inf et -inf dans la colonne rebonds a été remplacée par la valeur maximale dans cette colonne de 12 .
Exemple 2 : remplacez inf par la valeur maximale dans toutes les colonnes
Le code suivant montre comment remplacer les valeurs inf et -inf de chaque colonne par la valeur maximale de l’ensemble du bloc de données :
#find max value of entire data frame
max_value = np.nanmax(df[df != np.inf])
#replace all inf and -inf with max value
df.replace([np.inf, -np.inf], max_value, inplace=True)
#view updated DataFrame
print(df)
points assists rebounds
0 18.0 5.0 28.0
1 28.0 7.0 8.0
2 19.0 7.0 10.0
3 28.0 9.0 6.0
4 14.0 12.0 6.0
5 11.0 9.0 28.0
6 20.0 9.0 9.0
7 28.0 28.0 12.0
Notez que chaque valeur inf et -inf dans chaque colonne a été remplacée par la valeur maximale dans l’ensemble du bloc de données de 28 .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :
Comment imputer les valeurs manquantes chez les pandas
Comment compter les valeurs manquantes chez les pandas
Comment remplir les valeurs NaN avec la moyenne chez les pandas