Comment calculer l'age à partir d'une date de naissance en python ?

Comment calculer l'age à partir d'une date de naissance en python ?

Daidalos 16 juin 2020


Exemple de comment calculer l'age à partir d'une date de naissance en python:

1 -- Transformer une date de naissance en age,(exemple 1)

Soit la date de naissance suivante 8 Juillet 1982:

import datetime

dob = datetime.date(1982,8,7)

pour obtenir l'age de cette personne a la date d'aujourd'hui (16 juin 2020), on peut faire comme ceci

def from_dob_to_age(born):
    today = datetime.date.today()
    return today.year - born.year - ((today.month, today.day) < (born.month, born.day))

ce qui donne ici

from_dob_to_age(dob)

37 ans !

2 -- Transformer une date de naissance en age (exemple 2)

Autre exemple supposons que la date de naissance est une chaîne de caractères (string):

dob = '1982-07-08'

dans ce cas il faut d'abord convertir le string en datetime (voir Python string to datetime – strptime() pour plus de details), comme ceci:

dob = datetime.datetime.strptime(dob, '%Y-%m-%d')

et en peut ensuite utiliser la fonction ci-dessus:

from_dob_to_age(dob)

37 ans !

3 -- Transformer dans une dataframe une colonne de date de naissances en age (exemple 3)

Soit la dataframe suivante:

import pandas as pd

data = {'Name':['Ben','Anna','Zoe','Tom','John','Steve'], 
        'dob':['1982-07-08 00:00:00',
               '1987-03-01 00:00:00',
               '2016-02-12 00:00:00',
               '2002-08-14 00:00:00',
               '2011-01-19 00:00:00',
               '2016-03-22 00:00:00']}

df = pd.DataFrame(data)

donne

print(df)

    Name                  dob
0    Ben  1982-07-08 00:00:00
1   Anna  1987-03-01 00:00:00
2    Zoe  2016-02-12 00:00:00
3    Tom  2002-08-14 00:00:00
4   John  2011-01-19 00:00:00
5  Steve  2016-03-22 00:00:00

Convertir les elements de la colonne dob en datetime:

df['Date'] = pd.to_datetime(df.dob)

df['Date']

donne

0   1982-07-08
1   1987-03-01
2   2016-02-12
3   2002-08-14
4   2011-01-19
5   2016-03-22

Obtenir l'age en appliquant la fonction ci-dessus:

df['Date'].apply(lambda x: from_dob_to_age(x))

0    37
1    33
2     4
3    17
4     9
5     4

4 -- Références