- Python:Data Analytics and Visualization
- Phuong Vo.T.H Martin Czygan Ashish Kumar Kirthi Raman
- 282字
- 2021-07-09 18:51:43
Time zone handling
While, by default, Pandas objects are time zone unaware, many real-world applications will make use of time zones. As with working with time in general, time zones are no trivial matter: do you know which countries have daylight saving time and do you know when the time zone is switched in those countries? Thankfully, Pandas builds on the time zone capabilities of two popular and proven utility libraries for time and date handling: pytz
and dateutil
:
>>> t = pd.Timestamp('2000-01-01') >>> t.tz is None True
To supply time zone information, you can use the tz
keyword argument:
>>> t = pd.Timestamp('2000-01-01', tz='Europe/Berlin') >>> t.tz <DstTzInfo 'Europe/Berlin' CET+1:00:00 STD>
This works for ranges
as well:
>>> rng = pd.date_range('1/1/2000 00:00', periods=10, freq='D', tz='Europe/London') >>> rng DatetimeIndex(['2000-01-01', '2000-01-02', '2000-01-03', '2000-01-04', '2000-01-05', '2000-01-06', '2000-01-07', '2000-01-08','2000-01-09', '2000-01-10'], dtype='datetime64[ns]', freq='D', tz='Europe/London')
Time zone objects can also be constructed beforehand:
>>> import pytz >>> tz = pytz.timezone('Europe/London') >>> rng = pd.date_range('1/1/2000 00:00', periods=10, freq='D', tz=tz) >>> rng DatetimeIndex(['2000-01-01', '2000-01-02', '2000-01-03', '2000-01-04', '2000-01-05', '2000-01-06', '2000-01-07', '2000-01-08', '2000-01-09', '2000-01-10'], dtype='datetime64[ns]', freq='D', tz='Europe/London')
Sometimes, you will already have a time zone unaware time series object that you would like to make time zone aware. The tz_localize
function helps to switch between time zone aware and time zone unaware objects:
>>> rng = pd.date_range('1/1/2000 00:00', periods=10, freq='D') >>> ts = pd.Series(np.random.randn(len(rng)), rng) >>> ts.index.tz is None True >>> ts_utc = ts.tz_localize('UTC') >>> ts_utc.index.tz <UTC>
To move a time zone aware object to other time zones, you can use the tz_convert
method:
>>> ts_utc.tz_convert('Europe/Berlin').index.tz <DstTzInfo 'Europe/Berlin' LMT+0:53:00 STD>
Finally, to detach any time zone information from an object, it is possible to pass None
to either tz_convert
or tz_localize
:
>>> ts_utc.tz_convert(None).index.tz is None True >>> ts_utc.tz_localize(None).index.tz is None True
- Clojure Data Analysis Cookbook
- Internet接入·網絡安全
- 自動控制工程設計入門
- 機器學習與大數據技術
- Windows游戲程序設計基礎
- Learning C for Arduino
- Microsoft System Center Confi guration Manager
- 精通數據科學:從線性回歸到深度學習
- Hands-On Data Warehousing with Azure Data Factory
- Linux Shell編程從初學到精通
- 網絡存儲·數據備份與還原
- INSTANT Adobe Story Starter
- Spark大數據商業實戰三部曲:內核解密|商業案例|性能調優
- Drupal高手建站技術手冊
- 深度學習原理與 TensorFlow實踐