背景描述

数据分析中会遇到日期、时间的计算,主要包括以下几种情况:

  1. 对2个日期进行时间差值的计算或与目标时长进行比较,如:计算天数(days)、小时数(hours)、分钟数(minutes),秒数(seconds)等
  2. 对已知日期进行转换,增加或减少天数(days)、小时数(hours)等,如计算昨天的日期,半年后的日期等
  3. 提取日期中的年份、月份和日子等信息
    本文主要针对问题1和问题2,关于问题3,请查看博文:“python提取年月日遇到的问题”(链接:添加链接描述)

解决方法:

  1. 对2个日期进行时间差值的计算:
    将日期都转换为datetime类 --》2个日期直接进行运算(如加减)–》对计算差值进行天数(days)和秒数(seconds)的提取
  2. 对已知日期进行转换,如增加或减少(天/小时/分钟):使用timedelta()函数来解决

示例代码(Python):

1. 对2个日期进行时间差值的计算

1.1 对直接输入的日期进行时间差计算

import numpy as np
import pandas as pd
from datetime import *# 输入2个日期
date1 = "2022.05.11 13:30:00"
date2 = "2022.05.10 12:00:00"# 将输入的日期转换为“datetime.datetime”类型
# 由于日期的类型是字符串,因此不能直接进行计算,会报错
date1 = datetime.strptime(date1, "%Y.%m.%d %H:%M:%S")
date2 = datetime.strptime(date2, "%Y.%m.%d %H:%M:%S")
print(" date1:", date1, "\n" ,"date2:", date2)
print(" 2个日期的类型分别是:\n", type(date1), type(date2))

# 计算时间差:时间差的类型为“datetime.timedelta”类型
duration = date1 - date2
duration

# 对计算差值进行天数(days)和秒数(seconds)的提取,并将秒数转换为小时数
day = duration.days
hour = duration.seconds/3600
print("days:", day)
print("hours:", hour)

小结:

  1. 由于计算的时间差需要精确到小时/分钟/秒等,因此需要将日期类型转换为“datetime.datetime类型”后进行计算。
  2. 运算得到的时间差值,其类型为“datetime.timedelta”,包括2部分:days: 多少天,seconds: 多少秒。
  3. 时间差值的提取:天数(days)= durations.days; 秒数(seconds)= durations.seconds,
    可根据提取出来的秒数再换算为多少小时或多少分钟。

1.2 DataFrame的时间差计算

import pandas as pd
from datetime import *# 建立计算时间差的数据表(Dataframe)
li = [["2021-05-6 10:00:00", "2022-05-10 08:30:00"], ["2022-05-7 08:30:00", "2022-05-10 12:30:00"], ["2022-05-9 12:00:00", "2022-05-10 14:30:00"]]
df = pd.DataFrame(li, columns=["date1", "date2"])# 将数据数据转换为“datetime.datetime类型”
df.date1 = df.date1.map(lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S"))
df.date2 = df.date2.map(lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S"))
df

# 计算时间差
df["duration"] = df.date2 - df.date1# 对计算差值进行天数(days)和秒数(seconds)的提取,并将秒数转换为小时数
df["day"] = df.duration.map(lambda x: x.days)
df["hour"] = df.duration.map(lambda x: x.seconds/3600)
df

小结

  1. 在Dataframe中用同样的方法也能计算出两列日期时间的差值,包括天数和小时数,并且跨年度的计算也是可以的
  2. 日常工作中,可以使用提取出来的天数/小时数等与目标时长进行比较,建立效率评估指标(如:按时接收率%,商家正确揽收率%等)

2. 对已知日期进行增减计算(天/小时/分钟):使用timedelta()函数来解决

2.1 timedelta()函数的简介

timedelta()函数的构造:
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
对参数设定具体的值,达到计算的要求,如:
设定:days=1 – 在原有时间上增加1天;
设定:minutes=-30 – 在原有时间上减少30分钟

2.2 timedelta()函数的使用

# 1. timedelta()的基本用法
dt1 = datetime(2022, 5, 12, 8, 30, 0)
dt2 = dt1 + timedelta(days = 1)
dt3 = dt1 + timedelta(minutes = -30)
print("dt1:", dt1)
print("dt2:", dt2)
print("dt3:", dt3)

# 2. timedelta在dataframe中使用是,有广播的作用
li = [["2022-05-6 10:00:00", "2022-05-10 08:30:00"], ["2022-05-7 08:30:00", "2022-05-10 12:30:00"], ["2022-05-9 12:00:00", "2022-05-10 14:30:00"]]
df = pd.DataFrame(li, columns=["date1", "date2"])
df.date1 = df.date1.map(lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S"))
df.date2 = df.date2.map(lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S"))
df["var1"] = df.date1 + timedelta(hours=1)
df["var2"] = df.date2 + timedelta(days=30)
df

Python日期时间差的计算(天/小时/分钟)及timedelta函数的使用(附python代码)相关推荐

  1. java 根据日期计算当前周一和周日,及根据秒数计算天小时分钟秒数等相关日期

    日期工具类 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; ...

  2. Java日期-时间差的计算及获取日期中的年月日

    Java计算时间差.日期差的计算: 1.java 7中的日历类Calendar Calendar类使用其静态的getInstance()方法获取一个日历实例,该实例为当前的时间:如果想改变时间,可以通 ...

  3. 日期时间差的计算--C++

    实现方法:将时间点转换成基于当前系统的日期时间节点,分别得到一个较大的整数,然后做差值计算得到时间差,之后将这个以秒为单位的时间差转换成日期时间差.以下是实现代码. 主函数 #include < ...

  4. python 相关性检验怎么计算p值_收藏 | 大神教你用Python预测未来:一文看懂时间序列...

    (由Python大本营付费下载自视觉中国) 作者 |  Leandro Rabelo 译者 | 李洁 整理 | Lemonbit 出品 | Python数据之道 本文内容较长,较为详细的阐述了进行时间 ...

  5. 《从问题到程序:用Python学编程和计算》——3.4 定义函数

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第3章,第3.4节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3. ...

  6. python运算符中用来计算整商的是什么_零基础学python,看完这篇文章,你的python基础就差不多了...

    Python基础语法 1. 认识Python 1.1 Python 简介 Python 的创始人为吉多·范罗苏姆(Guido van Rossum). Python 的设计目标: 一门简单直观的语言并 ...

  7. Python入门小项目-计算阶乘n的三种方法+常见练习(含代码示例)

    今天的文章主要给各位整理了Python常见的集中计算练习,这些也是作为初学者必会的联系项目了,代码分享出来,需要的朋友们可以看下~ 一.计算阶乘n! 整数的阶乘(英语:factorial)是所有小于及 ...

  8. python 覆盖list_这套python 面试题你还没有?保证让你面试通关《附Python源码+实战项目》...

    随着Python在企业中的应用越来越多,岗位需求越来越大,面试成为了搞定优质职位的快速方式,下面是笔者面试10余家企业总结的面试题,希望对Python从业者有帮助. 介绍一下Python的数据结构,并 ...

  9. Opencv+Python学习记录9:掩膜(掩码)的使用(内附详细代码)

    一,基本概念 OpenCV中的很多函数都会指定一个掩模,也被称为掩码,例如: 计算结果=cv2.add(参数1,参数2,掩模) 当使用掩模参数时,操作只会在掩模值为非空的像素点上执行,并将其他像素点的 ...

最新文章

  1. Mac用Java写出hello,mac中c#的helloworld
  2. jQuery easyUI--消息框的使用
  3. 轻量级消息队列RedisQueue
  4. RTT大牛告诉你,混合微内核是什么?
  5. LeetCode 39. 组合总和(排列组合 回溯)
  6. 苹果要做第一个吃螃蟹的人!将率先尝试台积电5nm工艺
  7. Python迭代器(Iterator)
  8. 基于OpenGL的贪吃蛇游戏设计与实现
  9. Norton Ghost V12
  10. solidworks 显示设计库图标
  11. Chmox - Mac下的CHM电子书阅读器
  12. 古诗词网站源码 php,帝国cms 诗词整站源码
  13. C语言 简单走迷宫小游戏
  14. Assertion failed: Protocol wrong type for socket [10041] zeromq 4.3.1\src\ip.cpp:417)错误
  15. 苹果6p计算机在哪里设置方法,苹果手机怎么设置铃声【图文教程,不用电脑,1分钟完成】...
  16. 编程术语晦涩_晦涩的今日非主流提示-如何将Windows资源管理器文件复制/移动到“全部同意”或“全部否”...
  17. html title中加图标,科技常识:HTML中title前面小图标的实现_如何给网页标题添加icon小图标...
  18. 搭建rtmp直播流服务之1:使用nginx搭建rtmp直播流服务器(nginx-rtmp模块的安装以及rtmp直播流配置)
  19. Intellij IDEA 将.java文件识别成文本文档
  20. 1.3 练习: 画内存分析图

热门文章

  1. mysql实现postgres中pg_size_pretty函数
  2. git pul的使用
  3. 2019企业发布会最新震撼大气开场舞蹈 《全息未来已来》全息投影舞蹈 创意3D科技互动视频秀 企业舞蹈编排
  4. liunx 查看oracle监听,Linux配置Oracle监听提示异常
  5. Python 爬虫基础
  6. 使用 Vue 脚手架
  7. VxWorks操作系统shell命令与调试方法总结
  8. SaaS 服务供应商Wynd获3170万美元B轮融资
  9. mysql stdistance_C#开发SQLServer的Geometry和Geography存储
  10. 官宣!1024 程序员节日程发布,第一代程序员求伯君将出席大会