Comment obtenir la différence absolue entre deux colonnes d'une dataframe pandas ?

Published: 21 septembre 2023

Updated: 21 septembre 2023

Tags: Python; Pandas; Dataframe;

DMCA.com Protection Status

La différence absolue entre deux colonnes d'un DataFrame pandas peut être calculée à l'aide de la fonction abs(). Exemples :

Données synthétiques

Pour commencer, générons un DataFrame en utilisant des données synthétiques :

    import pandas as pd
    import numpy as np

    np.random.seed(42)

    a = -100
    b = 100

    data = np.random.random_sample((15,3)) * (b-a) + a

    df = pd.DataFrame(data=data, columns=['A','B','C'])

Le code affiché ci-dessus générera par exemple :

                A          B          C
    0  -25.091976  90.142861  46.398788
    1   19.731697 -68.796272 -68.801096
    2  -88.383278  73.235229  20.223002
    3   41.614516 -95.883101  93.981970
    4   66.488528 -57.532178 -63.635007
    5  -63.319098 -39.151551   4.951286
    6  -13.610996 -41.754172  22.370579
    7  -72.101228 -41.571070 -26.727631
    8   -8.786003  57.035192 -60.065244
    9    2.846888  18.482914 -90.709917
    10  21.508970 -65.895175 -86.989681
    11  89.777107  93.126407  61.679470
    12 -39.077246 -80.465577  36.846605
    13 -11.969501 -75.592353  -0.964618
    14 -93.122296  81.864080 -48.244004

Utilisation de la fonction abs() de pandas.

Pour calculer la différence absolue entre deux colonnes d'un DataFrame pandas, vous pouvez utiliser la fonction abs(), par exemple :

df['A'].abs() - df['B'].abs()

Cela renverra une nouvelle colonne avec la différence absolue entre les deux colonnes.

    0    -65.050885
    1    -49.064575
    2     15.148048
    3    -54.268586
    4      8.956350
    5     24.167547
    6    -28.143176
    7     30.530158
    8    -48.249189
    9    -15.636026
    10   -44.386205
    11    -3.349299
    12   -41.388331
    13   -63.622852
    14    11.258215
    dtype: float64

Remarque : pour obtenir la valeur absolue de la différence entre deux colonnes d'un DataFrame pandas, une solution consiste à faire

( df['A'] - df['B'] ).abs()

Cela renverra alors une nouvelle colonne :

0     115.234838
1      88.527969
2     161.618507
3     137.497617
4     124.020706
5      24.167547
6      28.143176
7      30.530158
8      65.821195
9      15.636026
10     87.404146
11      3.349299
12     41.388331
13     63.622852
14    174.986376
dtype: float64

Fonctionnalités supplémentaires

Enregistrer le résultat dans une nouvelle colonne

    df['Abs Diff A & B'] = df['A'].abs() - df['B'].abs()

Cela créera ensuite une nouvelle colonne dans le dataframe df :

                A          B          C  Abs Diff A & B
    0  -25.091976  90.142861  46.398788      -65.050885
    1   19.731697 -68.796272 -68.801096      -49.064575
    2  -88.383278  73.235229  20.223002       15.148048
    3   41.614516 -95.883101  93.981970      -54.268586
    4   66.488528 -57.532178 -63.635007        8.956350
    5  -63.319098 -39.151551   4.951286       24.167547
    6  -13.610996 -41.754172  22.370579      -28.143176
    7  -72.101228 -41.571070 -26.727631       30.530158
    8   -8.786003  57.035192 -60.065244      -48.249189
    9    2.846888  18.482914 -90.709917      -15.636026
    10  21.508970 -65.895175 -86.989681      -44.386205
    11  89.777107  93.126407  61.679470       -3.349299
    12 -39.077246 -80.465577  36.846605      -41.388331
    13 -11.969501 -75.592353  -0.964618      -63.622852
    14 -93.122296  81.864080 -48.244004       11.258215

Valeurs absolues arrondies

Il est également possible d'arrondir une colonne d'un dataframe en utilisant la fonction round().

df['Abs Diff A & B'].round(2)

Cela donnera:

    0    -65.05
    1    -49.06
    2     15.15
    3    -54.27
    4      8.96
    5     24.17
    6    -28.14
    7     30.53
    8    -48.25
    9    -15.64
    10   -44.39
    11    -3.35
    12   -41.39
    13   -63.62
    14    11.26
    Name: Abs Diff A & B, dtype: float64

Références