【Python基础】关于日期特征,你想知道操作都在这儿~

机器学习初学者

共 2693字,需浏览 6分钟

 ·

2020-12-11 14:32


今日锦囊

特征锦囊:关于日期特征,你想知道操作都在这儿~

? Index

  • 字符串转日期
  • 日期转字符串
  • 13位的时间戳转 日期格式str
  • 13位的时间戳转datetime
  • 10位的时间戳转 日期格式str
  • 10位的时间戳转datetime
  • 提取月的总天数
  • 获取前一天日期
  • 获取今天日期
  • 提取日期实体
  • 日期差计算(天)
  • 日期差计算(小时)


我们做模型经常会遇到很多日期的操作,比如我们要把导入的原始数据里的日期做一下预处理,把该转的类型给转了,把该要提取的信息给提取出来。今天,这篇锦囊就是把这些相关日期的操作给罗列了一下,希望大家看了有一定的帮助~

在开始之前,我们需要先导入一些常用的库包以及捏造一些测试数据。

# 导入相关库包
import pandas as pd
import numpy as np
import datetime
import time
import random
from calendar import monthrange 

# 捏造数据
df = pd.DataFrame(
      [[11508212054157,'1993-11-03'],
       [21507029571478,'1993-11-04'],
       [31508211513583,'1993-10-03'],
       [41507029532200,'1993-02-03'],
       [51507029671831,'1993-06-20']
      ]
      ,columns=['user_id','timestamp13','date'])

# 捏造 10位的 时间戳
df['timestamp10'] = df['user_id'].apply(lambda x:int(time.time()-10000*x))

df.head()

字符串转日期 ?

# 字符串转日期
df['datetime64'] = pd.to_datetime(df['date'])

日期转字符串 ?

# 日期转字符串
df['date_str'] = df['datetime64'].apply(lambda x: x.strftime('%Y-%m-%d %H:%M:%S'))

13位的时间戳转 日期格式str ?

# 13位的时间戳转 日期格式str
df['timestamp13_to_datetime'] = df['timestamp13'].apply(lambda x: \
                                                        time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(x/1000)))

13位的时间戳转datetime ?

# 13位的时间戳转datetime
df['timestamp13_to_datetime2'] = pd.to_datetime(df['timestamp13_to_datetime'])

10位的时间戳转 日期格式str ?

# 10位的时间戳转 日期格式str
df['timestamp10_to_datetime'] = df['timestamp10'].apply(lambda x: \
                                                        time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(x)))

10位的时间戳转datetime ?

# 10位的时间戳转datetime
df['timestamp10_to_datetime2'] = pd.to_datetime(df['timestamp10_to_datetime'])

提取月的总天数 ?

# 提取月的总天数
def extract_month_range(year, month):
    '''提取这个月的总天数'''
    first_day_of_month, days_in_a_month = monthrange(int(year), int(month))
    return days_in_a_month
df['days_in_a_month'] = df.apply(lambda x: extract_month_range(x['year'], x['month']), axis=1)

获取前一天日期 ?

# 获取前一天日期
df['yesterday'] = df['datetime64'] - datetime.timedelta(days=1)

获取今天日期 ?

# 获取今天日期
df['today'] = datetime.date.today()

提取日期实体 ?

# 提取日期实体
df['day'] = df['datetime64'].dt.day #天
df['weekday'] = df['datetime64'].dt.weekday #周
df['month'] = df['datetime64'].dt.month #月
df['year'] = df['datetime64'].dt.year #年

日期差计算(天) ?

# 日期差计算(天)
df['day_dif'] = (df['datetime64'] - df['yesterday']).dt.days

日期差计算(小时) ?

# 日期差计算(小时)
df['hour_dif'] = (df['datetime64'] - df['yesterday']).values/np.timedelta64(1'h'# 换成 D 则为 天

当我们跑完了上面的代码,就会得到下面的结果集:


今天的分享就到这里啦~感谢阅读!

往期精彩回顾





获取本站知识星球优惠券,复制链接直接打开:

https://t.zsxq.com/qFiUFMV

本站qq群704220115。

加入微信群请扫码:

浏览 47
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报