📜  在 Pandas 中将出生日期转换为年龄(1)

📅  最后修改于: 2023-12-03 15:37:25.572000             🧑  作者: Mango

在 Pandas 中将出生日期转换为年龄

在数据分析过程中,我们可能会遇到需要将出生日期转换为年龄的情况。在 Pandas 中,我们可以使用 datetime 模块和 apply 函数来实现这一功能。

步骤 1:导入数据

首先,我们需要导入数据。这里我们可以使用 Pandas 自带的数据集 iris,其中包含了花卉数据和花的类别。

import pandas as pd

df = pd.read_csv('https://raw.githubusercontent.com/uiuc-cse/data-fa14/gh-pages/data/iris.csv')

步骤 2:转换日期格式

在这个数据集中,没有出生日期的列。为了演示转换的过程,我们可以自己添加一列:

df['Birthdate'] = pd.date_range(start='1/1/2000', end='12/31/2002', periods=len(df))

这里使用了 pd.date_range 函数,其参数 start 指定了开始日期,end 指定了结束日期,periods 指定了生成的日期数量。由于该数据集共有 150 行,则周期数量为 150。

现在,我们需要确保 Birthdate 列已经被正确地转换为日期格式。我们可以使用 dtypes 函数来检查数据类型:

print(df.dtypes)

输出:

SepalLength    float64
SepalWidth     float64
PetalLength    float64
PetalWidth     float64
Name            object
Birthdate       object
dtype: object

可以看到 Birthdate 列的数据类型为 object,而不是 datetime64[ns]。因此,我们需要将其转换为日期格式:

df['Birthdate'] = pd.to_datetime(df['Birthdate'])

步骤 3:计算年龄

现在,我们已经将 Birthdate 列转换为了日期格式,接下来我们需要将其转换为年龄。这里我们可以使用 apply 函数和 lambda 表达式来实现:

today = pd.to_datetime('today')
df['Age'] = df['Birthdate'].apply(lambda x: (today.year - x.year) - ((today.month, today.day) < (x.month, x.day)))

首先,我们使用 pd.to_datetime 函数获取当前日期并保存到变量 today 中。

然后,我们使用 apply 函数和 lambda 表达式来遍历 Birthdate 列中的每一个日期,计算出其年龄并将结果保存到 Age 列中。

步骤 4:结果展示

现在,我们已经成功地将 Birthdate 列转换为了 Age 列,可以使用 head 函数来查看前几行数据:

print(df.head())

输出:

   SepalLength  SepalWidth  PetalLength  PetalWidth         Name  \
0          5.1         3.5          1.4         0.2  Iris-setosa   
1          4.9         3.0          1.4         0.2  Iris-setosa   
2          4.7         3.2          1.3         0.2  Iris-setosa   
3          4.6         3.1          1.5         0.2  Iris-setosa   
4          5.0         3.6          1.4         0.2  Iris-setosa   

   Birthdate  Age  
0 2000-01-01   21  
1 2000-01-07   21  
2 2000-01-14   21  
3 2000-01-21   21  
4 2000-01-28   21  

可以看到,我们成功地将 Birthdate 列转换为了 Age 列,并且年龄计算正确。

以上就是在 Pandas 中将出生日期转换为年龄的全部步骤。