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