Les valeurs d'une DataFrame Pandas peuvent facilement être arrondies à l'aide de la méthode round():
Créer une DataFrame synthétique
Commençons par créer une DataFrame synthétique.
import pandas as pd
import numpy as np
data = np.random.random_sample((5,3))
df = pd.DataFrame(data=data, columns=['A','B','C'])
print(df)
Le code affiché ci-dessus va générer par exemple :
A B C
0 0.105679 0.874900 0.686569
1 0.418339 0.858791 0.368795
2 0.728953 0.806365 0.405427
3 0.699630 0.911417 0.940126
4 0.906818 0.306024 0.478962
Utilisation de la méthode pandas round()
Arrondir toutes les colonnes
Lorsque vous travaillez avec des Pandas DataFrame, vous pouvez facilement arrondir les données en utilisant la méthode round(). La méthode round() prend en argument le nombre de décimales souhaité.
Par exemple, si nous voulons arrondir les valeurs à deux décimales, la syntaxe serait :
df.round(2)
Avec le code ci-dessus, vous obtiendrez :
A B C
0 0.11 0.87 0.69
1 0.42 0.86 0.37
2 0.73 0.81 0.41
3 0.70 0.91 0.94
4 0.91 0.31 0.48
Arrondir les valeurs d'une colonne donnée
df_new = df.copy()
df_new['B'] = df['B'].round(2)
print(df_new)
donne
A B C
0 0.105679 0.87 0.686569
1 0.418339 0.86 0.368795
2 0.728953 0.81 0.405427
3 0.699630 0.91 0.940126
4 0.906818 0.31 0.478962
Arrondir plusieurs colonnes
Un autre exemple avec deux colonnes
df_new = df.copy()
df_new[['A','C']] = df[['A','C']].round(2)
print(df_new)
donne
A B C
0 0.11 0.874900 0.69
1 0.42 0.858791 0.37
2 0.73 0.806365 0.41
3 0.70 0.911417 0.94
4 0.91 0.306024 0.48
Round() ne donne pas les résultats d'arrondi souhaités
Si vous n'obtenez pas les résultats d'arrondi souhaités, essayez de modifier le type de données de la colonne DataFrame en premier lieu:
df = df.astype('float64')
En utilisant la fonction numpy around
Une autre solution avec around()
data = df.to_numpy()
data = np.around(data,2)
df_new = pd.DataFrame(data=data, columns=['A','B','C'])
print(df_new)
Avec le code ci-dessus, vous obtiendrez :
A B C
0 0.11 0.87 0.69
1 0.42 0.86 0.37
2 0.73 0.81 0.41
3 0.70 0.91 0.94
4 0.91 0.31 0.48
Références
Liens | Site |
---|---|
pandas.DataFrame.round | pandas.pydata.org |
numpy.around | numpy.org |
Pandas round is not working for DataFrame | stackoverflow |
numpy.random.random | numpy.org |