热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pandas中的时区相关

pytz库时间序列处理中比较烦的是对时区的处理,尤其是夏令时(DST)转变。许多人都选择以协调世界时(UTC)

pytz 库

时间序列处理中比较烦的是对时区的处理,尤其是夏令时(DST)转变。
许多人都选择以协调世界时(UTC) 来处理时间序列
在python中 时区信息来自于 pytz 库。

import datetimeimport pandas as pdimport numpy as npimport pytzr1 = pytz.common_timezones[-5:]# print(r1) # ['US/Eastern', 'US/Hawaii', 'US/Mountain', 'US/Pacific', 'UTC']# 获取时区对象tz = pytz.timezone("US/Eastern")# print(tz)

本地化与转换

在默认的情况下 pd 中的时区是单纯的 native 时区

rng = pd.date_range('3/9/2012', periods=6, freq="D")# print(rng)ts = pd.Series(np.random.randn(len(rng)), index=rng)# print(ts)# 其索引的 tz 字段是 None# print(ts.index.tz) # None# 在生成日期范围的时候可以加上时区集rng = pd.date_range('3/9/2012', periods=10, freq="D", tz="UTC")# print(rng)# 从单纯到本地化的转换是通过 tz_localize实现的# print(ts)ts_utc = ts.tz_localize("UTC")# print(ts_utc)# print(ts_utc.index)# 一旦时间序列被本地化到某个特定的时区,就可以用 tz_convert 转为别的时区ts_eas = ts_utc.tz_convert("US/Eastern")# print(ts_eas.index)# tz_localize 和 tz_convert 也是 DataFrameIndex 的实例方法ts_shanghai = ts.index.tz_localize("Asia/Shanghai")# print(ts_shanghai)

操作时区意识型 Timestamp 对象

stamp = pd.Timestamp("2011-03-12 04:00")# print(stamp)stamp_utc = stamp.tz_localize("utc")# print(stamp_utc)eas_utc = stamp_utc.tz_convert("US/Eastern")# print(eas_utc)# 在创建 Timestamp 的时候,就可以传入一个时区信息stamp_moscow = pd.Timestamp("2011-03-12 04:00", tz="Europe/Moscow")# print(stamp_moscow)"""时区意识型TimeStamp对象在内部保留了一个 UTC 时间戳对象这个 UTC 值在时区的转换过程中是不会发生变化的 """v1 = stamp_utc.valuev2 = eas_utc.valuev3 = stamp_moscow.value# print(v1 == v2)# print(v1 == v3)"""当使用 pd 的 DateOffset 对象执行算术运算 运算过程会自动关注是否存在夏令时转变期"""from pandas.tseries.offsets import Hourstamp = pd.Timestamp('2012-03-12 01:30', tz="US/Eastern")# print(stamp)# print(stamp.tz_convert("UTC"))# print()t2 = stamp + Hour()# print(t2)# print(t2.tz_convert('UTC'))

不同的时区之间的运算

"""不同的时区之间的运算 最终的结果会是 UTC由于时间戳其实是以 UTC 格式存储的,所以是一个很简单的运算,并不需要任何转换 """rng = pd.date_range("3/7/2012 9:30", periods=10, freq="B")ts = pd.Series(np.random.randn(len(rng)), index=rng)# print(ts)ts1 = ts[:7].tz_localize("Europe/London")ts2 = ts1[2:].tz_convert("Europe/Moscow")# print(ts1)# print(ts2)res = ts1 + ts2print(res.index)


推荐阅读
  • Python Selenium WebDriver 浏览器驱动详解与实践
    本文详细介绍了如何使用Python结合Selenium和unittest构建自动化测试框架,重点解析了WebDriver浏览器驱动的配置与使用方法,涵盖Chrome、Firefox、IE/Edge等主流浏览器。 ... [详细]
  • 本文详细探讨了编程中的命名空间与作用域概念,包括其定义、类型以及在不同上下文中的应用。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 本文介绍了使用Python和C语言编写程序来计算一个给定数值的平方根的方法。通过迭代算法,我们能够精确地得到所需的结果。 ... [详细]
  • 本文详细介绍了如何使用Python的多进程技术来高效地分块读取超大文件,并将其输出为多个文件。通过这种方式,可以显著提高读取速度和处理效率。 ... [详细]
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • 使用 Babylon.js 实现地球模型与切片地图交互(第三部分)
    本文继续探讨在上一章节中构建的地球模型基础上,如何通过自定义的 `CameraEarthWheelControl` 类来实现更精细的地图缩放控制。我们将深入解析该类的实现细节,并展示其在实际项目中的应用。 ... [详细]
  • 本文详细介绍了如何在PyQt5中创建简易对话框,包括对话框的基本结构、布局管理以及源代码实现。通过实例代码,展示了如何设置窗口部件、布局方式及对话框的基本操作。 ... [详细]
  • 本文探讨了Python中的enchant模块及其提供的dict_exists()函数,该函数用于检测特定语言词典的可用性。 ... [详细]
  • 使用Python构建网页版图像编辑器
    本文详细介绍了一款基于Python开发的网页版图像编辑工具,具备多种图像处理功能,如黑白转换、铅笔素描效果等。 ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • 本文详细探讨了BCTF竞赛中窃密木马题目的解题策略,重点分析了该题目在漏洞挖掘与利用方面的技巧。 ... [详细]
  • 使用C#构建动态图形界面时钟
    本篇文章将详细介绍如何利用C#语言开发一个具有动态显示功能的图形界面时钟。文章中不仅提供了详细的代码示例,还对可能出现的问题进行了深入分析,并给出了解决方案。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
author-avatar
宝蓝小礼服
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有