前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python基础】关于日期特征,你想知道操作都在这儿~

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

作者头像
黄博的机器学习圈子
发布2020-12-11 09:40:13
8450
发布2020-12-11 09:40:13
举报
文章被收录于专栏:机器学习初学者精选文章

今日锦囊

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

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

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

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

代码语言:javascript
复制
# 导入相关库包
import pandas as pd
import numpy as np
import datetime
import time
import random
from calendar import monthrange 

# 捏造数据
df = pd.DataFrame(
      [[1, 1508212054157,'1993-11-03'],
       [2, 1507029571478,'1993-11-04'],
       [3, 1508211513583,'1993-10-03'],
       [4, 1507029532200,'1993-02-03'],
       [5, 1507029671831,'1993-06-20']
      ]
      ,columns=['user_id','timestamp13','date'])

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

df.head()
字符串转日期 ?
代码语言:javascript
复制
# 字符串转日期
df['datetime64'] = pd.to_datetime(df['date'])
日期转字符串 ?
代码语言:javascript
复制
# 日期转字符串
df['date_str'] = df['datetime64'].apply(lambda x: x.strftime('%Y-%m-%d %H:%M:%S'))
13位的时间戳转 日期格式str ?
代码语言:javascript
复制
# 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 ?
代码语言:javascript
复制
# 13位的时间戳转datetime
df['timestamp13_to_datetime2'] = pd.to_datetime(df['timestamp13_to_datetime'])
10位的时间戳转 日期格式str ?
代码语言:javascript
复制
# 10位的时间戳转 日期格式str
df['timestamp10_to_datetime'] = df['timestamp10'].apply(lambda x: \
                                                        time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(x)))
10位的时间戳转datetime ?
代码语言:javascript
复制
# 10位的时间戳转datetime
df['timestamp10_to_datetime2'] = pd.to_datetime(df['timestamp10_to_datetime'])
提取月的总天数 ?
代码语言:javascript
复制
# 提取月的总天数
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)
获取前一天日期 ?
代码语言:javascript
复制
# 获取前一天日期
df['yesterday'] = df['datetime64'] - datetime.timedelta(days=1)
获取今天日期 ?
代码语言:javascript
复制
# 获取今天日期
df['today'] = datetime.date.today()
提取日期实体 ?
代码语言:javascript
复制
# 提取日期实体
df['day'] = df['datetime64'].dt.day #天
df['weekday'] = df['datetime64'].dt.weekday #周
df['month'] = df['datetime64'].dt.month #月
df['year'] = df['datetime64'].dt.year #年
日期差计算(天) ?
代码语言:javascript
复制
# 日期差计算(天)
df['day_dif'] = (df['datetime64'] - df['yesterday']).dt.days
日期差计算(小时) ?
代码语言:javascript
复制
# 日期差计算(小时)
df['hour_dif'] = (df['datetime64'] - df['yesterday']).values/np.timedelta64(1, 'h') # 换成 D 则为 天

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

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

代码语言:javascript
复制
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习初学者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 今日锦囊
    • 特征锦囊:关于日期特征,你想知道操作都在这儿~
      • ? Index
      • 字符串转日期 ?
      • 日期转字符串 ?
      • 13位的时间戳转 日期格式str ?
      • 13位的时间戳转datetime ?
      • 10位的时间戳转 日期格式str ?
      • 10位的时间戳转datetime ?
      • 提取月的总天数 ?
      • 获取前一天日期 ?
      • 获取今天日期 ?
      • 提取日期实体 ?
      • 日期差计算(天) ?
      • 日期差计算(小时) ?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档