在Python-dataframe中如何把出生日期轉化為年齡?
我們在做資料探勘專案或大資料競賽時,如果個體是人的時候,獲得的資料中可能有出生日期的Series,舉個簡單例子,比如這樣的一些數:
# -*- coding: utf-8 -*-
import pandas as pd
from pandas import Series, DataFrame
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt %matplotlib inline
data = {'birth': ['10/8/00', '7/21/93', '6/14/01', '5/18/99', '1/5/98']}
frame = DataFrame(data)
frame
從資料來看,'10/8/00'之類的數,最左邊的數表示月份,中間的數表示日,最後的數表示年度。
實際上我們在分析時並不需要人的出生日期,而是需要年齡,不同的年齡階段會有不同的狀態,比如收入、健康、居住條件等等,且能夠很好地把不同樣本的差異性進行大範圍的劃分,而不是像出生日期那樣包含資訊量過大且在演算法訓練時不好作為有效資料進行訓練,age是一個很好地特徵工程指示變數。
那如何把上述birth資料變為年齡age呢?
在這裡用到datetime這個庫,如下:
(1)首先把birth轉化為標準時間格式
frame['birth'] = pd.to_datetime(frame['birth'])
frame
(2)獲取當前時間的年份,並減去birth的年份
import datetime as dt
now_year =dt.datetime.today().year #當前的年份
frame['age']=now_year-frame.birth.dt.year
frame
在這裡使用了dt.datetime.today().year來獲取當前日期的年份,然後將birth資料中的年份資料提取出來(frame.birth.dt.year),兩者相減就得到需要的年齡資料,如下:
有時候我們可能還會關注到人的出生月份與要預測變數的關係,比如人的星座就是很流行的一種以出生月份、日份來評估其對人的影響,也可以按這種方法去提取月、日資料。
原文釋出時間為:2018-10-18
本文作者:博觀厚積
本文來自雲棲社群合作伙伴“ ofollow,noindex">Python愛好者社群 ”,瞭解相關資訊可以關注“ Python愛好者社群 ”。