Comment arrondir les valeurs d'une DataFrame pandas en python ?

Published: 21 juin 2023

Tags: Python; Pandas; Dataframe;

DMCA.com Protection Status

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