iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Pandas数据分析固定时间点和时间差
  • 490
分享到

Pandas数据分析固定时间点和时间差

2024-04-02 19:04:59 490人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言时间属性时间方法时间缺失值.dt 时间访问器时长数据时间差时长属性前言 pandas处理时间的对象有很多,分别表示不同的作用。 本次介绍固定时间对象和时间长对象。 还是先导

前言

pandas处理时间的对象有很多,分别表示不同的作用。

本次介绍固定时间对象和时间长对象。

还是先导入包:

import numpy as np 
import pandas as pd 
import datetime

固定时间 时间点对象的建立

时间点就表示一个时刻的具体时间,比如现在是2022年8月10日16:31:56。

时间对象的建立有很多方法。

#使用 python 的 datetime 库,至少需要年月日

datetime.datetime.now()

#指定时间
datetime.datetime(2022,8,10,10,5)

#pandas 等第三方库都是在datetime建立时间对象的
#pd.Timestamp() 是定义时间的主要函数,代替 Python 中的 datetime.datetime 对象。
pd.Timestamp(datetime.datetime(2020, 6, 8))

指定时间字符串

pd.Timestamp('2012-05-01')
# Timestamp('2012-05-01 00:00:00')
pd.Timestamp('2017-01-01T12')
# Timestamp('2017-01-01 12:00:00')

#指定时间位置数字,可以依次定义 year, month, day,hour, minute, second, microsecond

pd.Timestamp(2012, 5, 1)
# Timestamp('2012-05-01 00:00:00')
pd.Timestamp(2017, 1, 1, 12)
# Timestamp('2017-01-01 12:00:00')
pd.Timestamp(year=2017, month=1, day=1, hour=12)
# Timestamp('2017-01-01 12:00:00')
#解析时间戳
pd.Timestamp(1513393355.5, unit='s') # 单位为秒
# Timestamp('2017-12-16 03:02:35.500000')
#指定时区
pd.Timestamp(1513393355, unit='s', tz='US/Pacific')
# Timestamp('2017-12-15 19:02:35-0800', tz='US/Pacific')
# 指定为北京时间
pd.Timestamp(1513393355, unit='s', tz='Asia/Shanghai')
# Timestamp('2017-12-16 11:02:35+0800', tz='Asia/Shanghai')
 #特殊时间
#以下可取得当前时间,从而可通过属性取到今天日期、年份等信息:
pd.Timestamp('today')
pd.Timestamp('now')
# Timestamp('2022-08-10 10:11:56.532981')
pd.Timestamp('today').date() # 只取日期

 #也可以计算出昨天、明天等信息:
# 昨天
pd.Timestamp('now')-pd.Timedelta(days=1)
# Timestamp('2020-06-08 16:14:39.254365')
# 明天
pd.Timestamp('now')+pd.Timedelta(days=1)
# Timestamp('2020-06-10 16:15:28.019039')
# 当月初,一日
pd.Timestamp('now').replace(day=1)
# Timestamp('2020-06-01 16:15:28.019039')
 #时间限制
#由于 Pandas 以纳秒粒度表示时间戳,因此可以使用64位整数表示的时间跨度限制为大约584年:
pd.Timestamp.min
# Timestamp('1677-09-21 00:12:43.145225')
pd.Timestamp.max
# Timestamp('2262-04-11 23:47:16.854775807')

时间属性

一个具体的时间包含了非常丰富的信息,如年份、在周几、在几月、在哪个季度,需要我们进行属性的读取。

#先创建一个时间
time = pd.Timestamp('now')
time

 以下是丰富的时间属性:

time.asm8 # 返回 numpy datetime64格式(以纳秒为单位)。
#numpy.datetime64('2022-08-10T09:58:52.365676000')
time.dayofweek # 1 周几,周一为0
time.day_of_week # 同上
time.dayofyear # 161, 一年的第几天
time.day_of_year # 同上
time.days_in_month # 30 当月有多少天
time.daysinmonth # 30 同上
time.freqstr # None, 周期字符
time.is_leap_year # True 是否闰年,公历的
time.is_month_end # False 是否当月最后一天
time.is_month_start # False 是否当月第一天
time.is_quarter_end # False 是否当季最后一天
time.is_quarter_start # False 是否当季第一天
time.is_year_end # 是否当年最后一天
time.is_year_start # 是否当年第一天
time.quarter # 2 当前季度数
# 如指定会返回类似 <DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>
time.tz # None 当前时区别名
time.week # 24 当年第几周
time.weekofyear # 24 同上
time.day # 9 日
time.fold # 0
time.freq # None 频度周期
time.hour # 16
time.microsecond # 890462
time.minute # 46
time.month # 6
time.nanosecond # 0
time.second # 59
time.tzinfo # None
time.value # 1591721219890462000
time.year # 2020

时间方法

time = pd.Timestamp('now', tz='Asia/Shanghai')
# Timestamp('2020-06-09 16:55:58.027896+0800', tz='Asia/Shanghai')
#方法如下:
# 转换为指定时区
time.astimezone('UTC')
# Timestamp('2020-06-09 08:55:58.027896+0000', tz='UTC')
# 转换单位,向上舍入
time.ceil('s') # 转为以秒为单位
# Timestamp('2020-06-09 16:55:59+0800', tz='Asia/Shanghai')
time.ceil('ns') # 转为以纳秒为单位
time.ceil('d') # 保留日
time.ceil('h') # 保留时
# 转换单位, 为向下舍入
time.floor('h') # 保留时
# Timestamp('2020-06-09 17:00:00+0800', tz='Asia/Shanghai')
# 类似四舍五入
time.round('h') # 保留时
# 返回星期名
time.day_name() # 'Tuesday'
# 月份名称
time.month_name() # 'June'
 
# 将时间戳规范化为午夜,保留tz信息。
time.nORMalize()
# Timestamp('2020-06-09 00:00:00+0800', tz='Asia/Shanghai')
 
# 时间元素替换 datetime.replace,可处理纳秒。
time.replace(year=2019) # 年份换为2019年
# Timestamp('2019-06-09 17:14:44.126817+0800', tz='Asia/Shanghai')
time.replace(month=8) # 月份换为8月
# Timestamp('2020-08-09 17:14:44.126817+0800', tz='Asia/Shanghai')
 
# 转为周期类型,将丢失时区
time.to_period(freq='h') # 周期为小时
# Period('2020-06-09 17:00', 'H')
 
# 转为指定时区
time.tz_convert('UTC') # 转为 utc 时间
# Timestamp('2020-06-09 09:14:44.126817+0000', tz='UTC')
# 本地化时区转换
time = pd.Timestamp('now')
time.tz_localize('Asia/Shanghai')
# Timestamp('2020-06-09 17:32:47.388726+0800', tz='Asia/Shanghai')
time.tz_localize(None) # 删除时区

时间缺失值

pd.Timestamp(pd.NaT)
#参与计算
pd.NaT+pd.Timestamp('20201001')

.dt 时间访问器

#对于时间序列数据,可以使用 s.dt.xxx 的形式来访问它们的属性和调用它们的方法:

s = pd.Series(pd.date_range('2020-01-01', periods=3, freq='d'))
s.dt.date
s.dt.time
s.dt.timetz
s.dt.year
s.dt.month
s.dt.day
s.dt.hour
s.dt.minute
s.dt.second
s.dt.microsecond
s.dt.nanosecond
s.dt.week
s.dt.weekofyear
s.dt.dayofweek
s.dt.weekday
s.dt.dayofyear
s.dt.quarter
s.dt.is_month_start
s.dt.is_month_end
s.dt.is_quarter_start
s.dt.is_quarter_end
s.dt.is_year_start
s.dt.is_year_end
s.dt.is_leap_year
s.dt.daysinmonth
s.dt.days_in_month
s.dt.tz
s.dt.freq
s.dt.to_period
s.dt.to_pydatetime
s.dt.tz_localize
s.dt.tz_convert
s.dt.normalize
s.dt.strftime
s.dt.round
s.dt.floor
s.dt.ceil
s.dt.month_name
s.dt.day_name
s.dt.qyear
s.dt.start_time
s.dt.end_time
s.dt.days
s.dt.seconds
s.dt.microseconds
s.dt.nanoseconds
s.dt.components
s.dt.to_pytimedelta
s.dt.total_seconds
 
# 个别用法举例
s.dt.tz_localize('UTC').dt.tz_convert('US/Eastern')
s.dt.strftime('%Y/%m/%d')

时长数据

时间差

和上面的时间点比起来,时间差就表示一个时间的长度,一天一小时这种时间差。

Timedelta 数据类型用来代表时间增量,两个固定时间相减会产生时差: 

# 两个固定时间相减
pd.Timestamp('2020-11-01 15') - pd.Timestamp('2020-11-01 14')
# Timedelta('0 days 01:00:00')
pd.Timestamp('2020-11-01 08') - pd.Timestamp('2020-11-02 08')
# Timedelta('-1 days +00:00:00')

按以下格式传入字符串:

# 一天
pd.Timedelta('1 days')
# Timedelta('1 days 00:00:00')
pd.Timedelta('1 days 00:00:00')
# Timedelta('1 days 00:00:00')
pd.Timedelta('1 days 2 hours')
# Timedelta('1 days 02:00:00')
pd.Timedelta('-1 days 2 min 3us')
# Timedelta('-2 days +23:57:59.999997'
用关键字参数指定时间:
pd.Timedelta(days=5, seconds=10)
# Timedelta('5 days 00:00:10')
pd.Timedelta(minutes=3, seconds=2)
# Timedelta('0 days 00:03:02')

# 可以实现指定分钟有多少天,多少小时
pd.Timedelta(minutes=3242)

 使用带周期量的偏移量别名:

# 一天
pd.Timedelta('1D')
# Timedelta('1 days 00:00:00')
# 两周
pd.Timedelta('2W')
# Timedelta('14 days 00:00:00')
# 一天2小时3分钟4秒
pd.Timedelta('1D2H3M4S')

带单位的整型数字:

# 一天
pd.Timedelta(1, unit='d')
# 100 秒
pd.Timedelta(100, unit='s')
# Timedelta('0 days 00:01:40')
# 4 周
pd.Timedelta(4, unit='w')
# Timedelta('28 days 00:00:00')

Python内置的datetime.timedelta或者Numpy的np.timedelta64:

# 一天10分钟
pd.Timedelta(datetime.timedelta(days=1, minutes=10))
# Timedelta('1 days 00:10:00')
 
# 100纳秒
pd.Timedelta(np.timedelta64(100, 'ns'))
# Timedelta('0 days 00:00:00.000000100')

负值 

# 负值
pd.Timedelta('-1min')
# Timedelta('-1 days +23:59:00')
 
# 空值,缺失值
pd.Timedelta('nan')
# NaT
 
# pd.Timedelta('nat')
# NaT

也可以用 DateOffsets (Day, Hour, Minute, Second, Milli, Micro, Nano) 来构建:

pd.Timedelta(pd.offsets.Second(2))
# Timedelta('0 days 00:00:02')
 
#to_timedelta,可以直接生成单个时长数据:
pd.to_timedelta('1 days 06:05:01.00003')
# Timedelta('1 days 06:05:01.000030')
pd.to_timedelta('15.5us')
# Timedelta('0 days 00:00:00.000015')
 
pd.to_timedelta(pd.offsets.Day(3))
# Timedelta('3 days 00:00:00')
 
pd.to_timedelta('15.5min')
# Timedelta('0 days 00:15:30')
 
pd.to_timedelta(124524564574835)
# Timedelta('1 days 10:35:24.564574835')

时长可以相加:

pd.Timedelta(pd.offsets.Day(2)) + pd.Timedelta(pd.offsets.Second(2)) + pd.Timedelta('00:00:00.000123')
# Timedelta('2 days 00:00:02.000123')

以下是一些操作示例:

s = pd.Series(pd.date_range('2012-1-1', periods=3, freq='D'))
td = pd.Series([pd.Timedelta(days=i) for i in range(3)])
df = pd.DataFrame({'A': s, 'B': td})
df

df['C'] = df['A'] + df['B']
df

df.dtypes

时长属性

tdt=pd.Timedelta('10 days 9 min 3 sec')
tdt.days
tdt.seconds
tdt.value #(时间戳)

到此这篇关于Pandas数据分析固定时间点和时间差的文章就介绍到这了,更多相关Pandas固定时间点内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Pandas数据分析固定时间点和时间差

本文链接: https://www.lsjlt.com/news/119961.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Pandas数据分析固定时间点和时间差
    目录前言时间属性时间方法时间缺失值.dt 时间访问器时长数据时间差时长属性前言 pandas处理时间的对象有很多,分别表示不同的作用。 本次介绍固定时间对象和时间长对象。 还是先导...
    99+
    2024-04-02
  • 数据分析处理库Pandas——时间
    时间戳 向后推的时间戳 备注:五天后的时间。 指定日期和时间 时间的Series结构 按要求显示时间(开始时间,时间间隔,时间个数) 转换为时间格式,并设置时间列为索引列 方法一 方法二 筛选显示 方法...
    99+
    2023-01-31
    时间 数据 Pandas
  • springboot时间戳和数据库时间相差多少个小时
    这篇文章主要介绍“springboot时间戳和数据库时间相差多少个小时”,在日常操作中,相信很多人在springboot时间戳和数据库时间相差多少个小时问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操...
    99+
    2024-04-02
  • Pandas 时间序列分析中的resample函数
    Pandas 中的resample函数用于各种频率的转换工作。 resample的参数如下: 参数描述freq转换频率axis=0重采样的轴closed=None在降采样中,设置各时...
    99+
    2024-04-02
  • 如何分析Shell时间运算以及时间差计算方法
    这篇文章的内容主要围绕如何分析Shell时间运算以及时间差计算方法进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!最近一段时间,在处理Shell 脚本...
    99+
    2023-06-28
  • JavaScript中时间差异的示例分析
    这篇文章主要介绍JavaScript中时间差异的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!时间差异这是一种从传统反逆向技术那里借鉴过来的基于时间的反调试技巧。当脚本在DevTools等工具环境下执行时,运...
    99+
    2023-06-27
  • Java获取时间差(天数差,小时差,分钟差)代码示例
    网上有很多博文是讲如何获取时间差的,我看了一下,多数是使用Calendar类来实现,但是都讲得比较乱,在这里我用SimpleDateFormat来实现,比较简单,我认为比较适合拿来用。SimpleDateFormat 是一个以国别敏感的方式...
    99+
    2023-05-30
    java 时间差 simpledateformat
  • Mysql数据库中的时间与页面显示时间相差8小时
    Mysql数据库中的时间与页面显示时间相差8小时 原因分析: 本地mysql时区 2、代码映射时区 3、连接数据库时区 可能存在不一致。 解决方案: 查询数据库的时区 show variables like '%time_zone'; –...
    99+
    2023-08-16
    数据库 mysql java
  • Python与AI分析时间序列数据
    目录简介序列分析或时间序列分析的基本概念安装实用软件包PandashmmlearnPyStructCVXOPTPandas:处理,切片和从时间序列数据中提取统计数据示例处理时间序列数...
    99+
    2024-04-02
  • python数据分析之时间序列分析详情
    目录前言时间序列的相关检验白噪声检验平稳性检验自相关和偏相关分析移动平均算法简单移动平均法简单指数平滑法霍尔特(Holt)线性趋势法Holt-Winters季节性预测模型ARIMA模...
    99+
    2024-04-02
  • Python 实操显示数据图表并固定时间长度
    目录1.非定长的时间轴2.定长时间轴 实时显示数据前言: python利用matplotlib库中的plt.ion()函数实现即时数据动态显示: 1.非定长的时间轴 代码示例: # ...
    99+
    2024-04-02
  • 如何加密可在固定时间内解密的数据
    哈喽!大家好,很高兴又见面了,我是编程网的一名作者,今天由我给大家带来一篇《如何加密可在固定时间内解密的数据》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下...
    99+
    2024-04-05
  • Python 数据分析的捷径:节省时间和精力
    使用 pandas.read_csv() 的 chunksize 参数分块加载大型文件。 考虑使用 dask 等工具进行并行加载,以提高速度。 加速数据预处理 使用 numpy 的 vectorize 函数将 Python 函数转换...
    99+
    2024-03-12
    优化数据加载
  • JavaScript时间和空间复杂度实例分析
    这篇文章主要讲解了“JavaScript时间和空间复杂度实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript时间和空间复杂度实例分析”...
    99+
    2024-04-02
  • js中isBetween时间点的示例分析
    小编给大家分享一下js中isBetween时间点的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、判断一个moment对象是否在两个其他时间点之间。mo...
    99+
    2023-06-15
  • Python中的Pandas 时间函数 time 、datetime 模块和时间处理基础讲解
    目录一、time 模块1、时间格式转换图2. struct_time 元组元素结构3. format time 结构化表示二、datetime 模块1. date类2. 方法和属性3...
    99+
    2023-03-23
    Python Pandas 时间函数 time Python datetime 模块 Python Pandas时间处理
  • sqlserver数据库怎么恢复到指定时间点
    要将SQL Server数据库恢复到指定时间点,您可以按照以下步骤操作: 首先,您需要确保已启用数据库的完整或者简单恢复模式。如...
    99+
    2024-04-09
    sqlserver
  • PostgreSQL中的时间序列数据如何存储和分析
    在PostgreSQL中,时间序列数据可以使用timestamp或timestamptz数据类型来存储。timestamp类型存储日...
    99+
    2024-04-02
  • Pandas处理时间序列数据操作详解
    目录前言一、获取时间二、时间索引三、时间推移前言 一般从数据库或者是从日志文件读出的数据均带有时间序列,做时序数据处理或者实时分析都需要对其时间序列进行归类归档。而Pandas是处理...
    99+
    2024-04-02
  • 【数据结构】 时间和空间复杂度
    文章目录 如何衡量一个算法的好坏算法效率时间复杂度时间复杂度的概念大O渐近表示法推导大O阶方法 常见的时间复杂度计算【实例1】【实例2】【实例三】【实例四】【实例五】【实例六】【实例七】...
    99+
    2023-08-31
    数据结构 java 算法 时间复杂度 空间复杂度
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作