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

Published: 28 juin 2023

Tags: Python; Pandas; Dataframe;

DMCA.com Protection Status

La différence absolue entre deux colonnes d'une DataFrame pandas peut être calculée en utilisant la fonction abs(). Exemples:

Créer une dataframe.

Pour commencer, générons une DataFrame à l'aide de 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 va générer 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 pandas abs()

Pour calculer la différence absolue entre deux colonnes d'une DataFrame de pandas, vous pouvez utiliser la fonction abs() comme illustré dans l'exemple suivant :

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

Ceci créera une nouvelle colonne affichant 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

Pour obtenir la valeur absolue de la différence entre deux colonnes dans une DataFrame Pandas, une solution consiste à utiliser la fonction "abs()" sur la soustraction des deux colonnes.

( 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

Bonus points

Enregistrer le résultat dans une nouvelle colonne

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

Cela créera alors une nouvelle colonne dans la 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

Arrondir les valeurs absolues

Pour arrondir une colonne de la dataframe, vous pouvez utiliser 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