免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Pandas時間序列:時區(qū)處理
import pandas as pdimport numpy as np

一、基本概念介紹

  • UTC:協(xié)調(diào)世界時,全世界唯一的統(tǒng)一時間;
  • DST:夏令時,即不同國家不同地區(qū)的時間是不同的;
  • 時區(qū)是以UTC偏移量的形式表示的。例如,夏令時期間,紐約比UTC慢4小時,而全年其他時間比UTC慢5小時;

二、Python中的時區(qū)第三方庫pytz

import pytz

1.通過common_timezone可以獲得所有時區(qū)的名稱

pytz.common_timezones[-5:]
['US/Eastern', 'US/Hawaii', 'US/Mountain', 'US/Pacific', 'UTC']

2.通過timezone可以獲取時間對象

tz = pytz.timezone('US/Eastern')tz
<DstTzInfo 'US/Eastern' LMT-1 day, 19:04:00 STD>

三、本地化和轉(zhuǎn)換

1.pandas中的時間序列默認是naive時區(qū),也就是沒有時區(qū)的

rng = pd.date_range('3/9/2018 22:29',periods=5,freq='D') # 生成范圍日期時可以加上時區(qū)信息ts = pd.Series(np.random.randn(len(rng)),index=rng)ts
2018-03-09 22:29:00   -0.4222592018-03-10 22:29:00   -0.4115702018-03-11 22:29:00    0.4996412018-03-12 22:29:00    0.8911932018-03-13 22:29:00   -0.966908Freq: D, dtype: float64

2.通過tz_localize方法可以為沒有時區(qū)的時間序列賦予時區(qū)

ts_utc = ts.tz_localize('UTC')ts_utc
2018-03-09 22:29:00+00:00   -0.4222592018-03-10 22:29:00+00:00   -0.4115702018-03-11 22:29:00+00:00    0.4996412018-03-12 22:29:00+00:00    0.8911932018-03-13 22:29:00+00:00   -0.966908Freq: D, dtype: float64

3.一旦時間序列被本地化到某個特定時區(qū),就可以用tz_convert將其轉(zhuǎn)換到別的時區(qū)了

ts_eastern = ts_utc.tz_convert('US/Eastern')ts_eastern
2018-03-09 17:29:00-05:00   -0.4222592018-03-10 17:29:00-05:00   -0.4115702018-03-11 18:29:00-04:00    0.4996412018-03-12 18:29:00-04:00    0.8911932018-03-13 18:29:00-04:00   -0.966908Freq: D, dtype: float64
ts_eastern.tz_convert('UTC')
2018-03-09 22:29:00+00:00   -0.4222592018-03-10 22:29:00+00:00   -0.4115702018-03-11 22:29:00+00:00    0.4996412018-03-12 22:29:00+00:00    0.8911932018-03-13 22:29:00+00:00   -0.966908Freq: D, dtype: float64

4.tz_localize和tz_convert也是DatetimeIndex的實例方法

ts.index.tz_localize('Asia/Shanghai')
DatetimeIndex(['2018-03-09 22:29:00+08:00', '2018-03-10 22:29:00+08:00',               '2018-03-11 22:29:00+08:00', '2018-03-12 22:29:00+08:00',               '2018-03-13 22:29:00+08:00'],              dtype='datetime64[ns, Asia/Shanghai]', freq='D')

四、操作時區(qū)意識型(time zone-aware)Timestamp對象

1.Timestamp對象也能被從navie本地化為時區(qū)意識型(time zone-aware)

stamp = pd.Timestamp('2018-7-5 22:40')stamp
Timestamp('2018-07-05 22:40:00')
stamp_utc = stamp.tz_localize('utc')

2.創(chuàng)建Timestamp時,還可以傳入一個時區(qū)信息

stamp_moscow = pd.Timestamp('2018-7-5 22:41',tz='Europe/Moscow')stamp_moscow
Timestamp('2018-07-05 22:41:00+0300', tz='Europe/Moscow')

3.時區(qū)意識型Timestamp對象內(nèi)部保存了一個utc時間戳值,這個值在時區(qū)的轉(zhuǎn)換過程中是不會變化的

print(stamp_utc.value)print(stamp_utc.tz_convert('US/Eastern').value)
15308304000000000001530830400000000000

4.當(dāng)使用日期偏移量執(zhí)行計算時,運算過程會自動關(guān)注是否存在夏令時轉(zhuǎn)變期

from pandas.tseries.offsets import Hour
stamp = pd.Timestamp('2012-03-12 01:30',tz='US/Eastern')print(stamp)print(stamp+Hour()) # 不涉及夏令時轉(zhuǎn)變期
2012-03-12 01:30:00-04:002012-03-12 02:30:00-04:00
stamp = pd.Timestamp('2012-11-04 00:30',tz='US/Eastern')print(stamp)print(stamp+Hour(2)) # 涉及夏令時轉(zhuǎn)變期
2012-11-04 00:30:00-04:002012-11-04 01:30:00-05:00

五、不同時區(qū)之間的運算

兩個時間序列的時區(qū)不同,在將它們合并到一起時,最終結(jié)果就會是UTC。

rng = pd.date_range('7/5/2018 22:50',periods=10,freq='B')ts = pd.Series(np.random.randn(len(rng)),index=rng)
ts1 = ts[:7].tz_localize('Europe/London')ts2 = ts1[2:].tz_convert('Europe/Moscow')
ts1
2018-07-05 22:50:00+01:00    0.8162652018-07-06 22:50:00+01:00   -0.5162422018-07-09 22:50:00+01:00    0.3591662018-07-10 22:50:00+01:00   -2.2383962018-07-11 22:50:00+01:00   -1.5163652018-07-12 22:50:00+01:00   -1.7348322018-07-13 22:50:00+01:00   -0.063531Freq: B, dtype: float64
ts2
2018-07-10 00:50:00+03:00    0.3591662018-07-11 00:50:00+03:00   -2.2383962018-07-12 00:50:00+03:00   -1.5163652018-07-13 00:50:00+03:00   -1.7348322018-07-14 00:50:00+03:00   -0.063531Freq: B, dtype: float64
result = ts1 + ts2result
2018-07-05 21:50:00+00:00         NaN2018-07-06 21:50:00+00:00         NaN2018-07-09 21:50:00+00:00    0.7183322018-07-10 21:50:00+00:00   -4.4767922018-07-11 21:50:00+00:00   -3.0327312018-07-12 21:50:00+00:00   -3.4696632018-07-13 21:50:00+00:00   -0.127062Freq: B, dtype: float64
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
掌握Pandas時間序列分析的20個知識點
Pandas 中最常用的 7 個時間戳處理函數(shù)
MySQL關(guān)于timestamp和mysqldump的一個“bug”
python的常用內(nèi)建模塊與常用第三方模塊
pandas小記:pandas時間序列分析和處理Timeseries
Python學(xué)習(xí)教程_Python學(xué)習(xí)路線:Pandas庫分析-時間序列的處理
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服