1. 程式人生 > >Pandas詳解七之DatetimeIndex、PeriodIndex和TimedeltaIndex時間序列

Pandas詳解七之DatetimeIndex、PeriodIndex和TimedeltaIndex時間序列

約定:

import pandas as pd
import numpy as np

時間序列

上節介紹的Timestamp、Period和Timedelta物件都是單個值,這些值都可以放在索引或資料中。作為索引的時間序列有:DatetimeIndex、PeriodIndex和TimedeltaIndex,它們都可以作為Series和DataFrame的索引。

一、建立DatetimeIndex、PeriodIndex和TimedeltaIndex時間序列

  • 呼叫pd.date_range()建立DatetimeIndex序列:
index=pd.date_range("2018-03-17"
,"2018-03-30",freq="2H") loc=np.random.choice(np.arange(len(index)),size=4,replace=False)#隨機選取4個互不相同的數 loc.sort() ts_index=index[loc] ts_index

程式碼結果:

DatetimeIndex(['2018-03-17 14:00:00', '2018-03-18 08:00:00',
               '2018-03-25 00:00:00', '2018-03-27 22:00:00'],
              dtype='datetime64[ns]', freq=None)
  • 通過.to_period()
    將DatetimeIndex序列轉換為PeriodIndex序列:
pd_index=ts_index.to_period("D")
pd_index

程式碼結果:

PeriodIndex(['2018-03-17', '2018-03-18', '2018-03-25', '2018-03-27'], dtype='period[D]', freq='D')
  • 將DetetimeIndex序列轉換為TimedeltaIndex序列:
longseconds=np.diff(ts_index)
td_index=pd.TimedeltaIndex(longseconds)
td_index

程式碼結果:

TimedeltaIndex(['0 days 18:00:00', '6 days 16:00:00', '2 days 22:00:00'], dtype='timedelta64[ns]', freq=None)
  • 三者提供了許多與時間有關的屬性
ts_index.weekday

程式碼結果:

Int64Index([5, 6, 6, 1], dtype='int64')
pd_index.month

程式碼結果:

Int64Index([3, 3, 3, 3], dtype='int64')
td_index.seconds

程式碼結果:

Int64Index([64800, 57600, 79200], dtype='int64')
  • 通過DatetimeIndex.shift()移動時間點:
ts_index.shift(2,"2H")

程式碼結果:

DatetimeIndex(['2018-03-17 18:00:00', '2018-03-18 12:00:00',
               '2018-03-25 04:00:00', '2018-03-28 02:00:00'],
              dtype='datetime64[ns]', freq=None)
  • 通過DatetimeIndex.normalize()將時刻修改為當天的凌晨零點:
ts_index.normalize()

程式碼結果:

DatetimeIndex(['2018-03-17', '2018-03-18', '2018-03-25', '2018-03-27'], dtype='datetime64[ns]', freq=None)

二、將時間序列作為索引

TimestampIndex,PeriodIndex和TimedeltaIndex都可以作為Series、Dataframe物件的索引和列,在此只介紹一種。

  • 作為Series物件的索引:
ts_series=pd.Series(range(4),index=ts_index)
ts_series

程式碼結果:

2018-03-17 14:00:00    0
2018-03-18 08:00:00    1
2018-03-25 00:00:00    2
2018-03-27 22:00:00    3
dtype: int32
  • 通過between_time()返回位於指定時間段的資料集:
ts_series.between_time("7:00","17:00")

程式碼結果:

2018-03-17 14:00:00    0
2018-03-18 08:00:00    1
dtype: int32
  • 通過tshift()將索引移動指定的時間:
ts_series.tshift(1,"2D")

程式碼結果:

2018-03-19 14:00:00    0
2018-03-20 08:00:00    1
2018-03-27 00:00:00    2
2018-03-29 22:00:00    3
dtype: int32
  • 作為Seires的列:
ts_data=pd.Series(ts_index)
ts_data

程式碼結果:

0   2018-03-17 14:00:00
1   2018-03-18 08:00:00
2   2018-03-25 00:00:00
3   2018-03-27 22:00:00
dtype: datetime64[ns]
  • 通過屬性dt呼叫時間屬性:
ts_data.dt.hour

程式碼結果:

0    14
1     8
2     0
3    22
dtype: int64

謝謝大家的瀏覽,
希望我的努力能幫助到您,
共勉!

相關推薦

PandasDatetimeIndexPeriodIndexTimedeltaIndex時間序列

約定: import pandas as pd import numpy as np 時間序列 上節介紹的Timestamp、Period和Timedelta物件都是單個值,這些值都可以放在索引或資料中。作為索引的時間序列有:DatetimeInd

OpenLayers官方示例圖層的最小最大解析度(Layer Min/Max Resolution)

目錄 一、示例簡介 二、程式碼詳解 一、示例簡介     這個示例載入了一個MapBox的瓦片圖層和一個Open Street Map的瓦片圖層,同時使用最小、最大解析度限制圖層載入的比例級別。     使用滑鼠放大兩次:MapBox圖

Gradle使用() 多渠道構建你的APP

1 背景 在國內手機廠商應用市場和第三方手機應用市場如此氾濫的環境下,針對不同的應用市場區分個別特殊功能、跟蹤活躍留存這些資料來源,等。這時構建區分App渠道是很有必要的。Android Gradle中提供了ProductFlavors{}閉包配置來幫助我們很好的處理多渠道構建的問題和實現批

PandasDropna濾除缺失資料

約定: import pandas as pd import numpy as np from numpy import nan as NaN 濾除缺失資料 pandas的設計目標之一就是使得處理缺失資料的任務更加輕鬆些。pan

MapReduce的模式演算法用例

MapReduce常用元件介紹 HadoopMapReduce jobs可以切分成一系列運行於分散式叢集中的map和reduce任務,每個任務只執行全部資料的一個指定的子集,以此達到整個叢集的負載平衡。Map任務通常為載入,解析,轉換,過濾資料,每個reduce處理map

SQL中dropdeletetruncate的異同

第一:相同點:  truncate和不帶where子句的delete,以及drop 都會刪除表內的資料 第二:不同點: 1. truncate和delete只刪除資料不刪除表的結構(定義)     drop 語句將刪除表的結構被依賴的約束(constrain)、觸發器(trigger)、索引(index);

學機器學習,不會資料處理怎麼行?—— 二Pandas

在上篇文章學機器學習,不會資料處理怎麼行?—— 一、NumPy詳解中,介紹了NumPy的一些基本內容,以及使用方法,在這篇文章中,將接著介紹另一模組——Pandas。(本文所用程式碼在這裡) Pandas資料結構介紹 大家應該都聽過表結構,但是,如果讓你自己來實現這麼一個結構,並且能對其進行資料處理,能實

Spring AOP AspectJ切入點語法(最全面最詳細。)(轉)

6.5  AspectJ切入點語法詳解 6.5.1  Spring AOP支援的AspectJ切入點指示符        切入點指示符用來指示切入點表示式目的,,在spring AOP中目

js原生scrollTopoffsetHeightoffsetTop等屬性用法

本文轉載自:https://www.cnblogs.com/koleyang/p/4939853.html **scrollTop、offsetHeight和offsetTop等屬性用法詳解:** 標題中的幾個相關相關屬性在網頁中有這大量的應用,尤其是在運動框架中,但是由於有些屬性相互之間的

瀏覽器儲存CookieLocalStorage SessionStorage的區別

Cookie 常用於客戶端與服務端之間的通訊,但是它有本地儲存的功能。 缺點: 儲存量太小,只有4kb 所有http請求都會含cookie,會影響獲取資源的效率 API簡單,需要封裝一下才能用 LocalStorage 和SessionStorage H5問世後

轉:JAVAWEB開發許可權管理(二)——shiro入門以及使用方法shiro認證與shiro授權

原文地址:JAVAWEB開發之許可權管理(二)——shiro入門詳解以及使用方法、shiro認證與shiro授權 以下是部分內容,具體見原文。 shiro介紹 什麼是shiro shiro是Apache的一個開源框架,它將軟體系統的安全認證相關的功能抽取出來,實現使用者身份認證,許可權授權、加密、會話

Pandas十八DataFrame物件的-Join合併

約定: import pandas as pd 物件的例項方法-Join DataFrame物件有個df.join()方法也能進行pd.merge()的合併,它能更加方便地按照物件df的索引進行合併,且能同時合併多個DataFr

C++繼承二——派生類成員函式(函式隱藏建構函式與相容覆蓋規則)

  在這一篇文章開始之前,我先解決一個問題。   在上一篇C++繼承詳解之一——初探繼承中,我提到了在派生類中可以定義一個與基類成員函式同名的函式,這樣派生類中的函式就會覆蓋掉基類的成員函式。   在譚浩強的C++程式設計這本書第十一章,351頁最下面有這麼

Pandas十四DataFrame物件的列索引之間的轉化

約定: import pandas as pd DataFrame物件的列和索引之間的轉化 我們常常需要將DataFrame物件中的某列或某幾列作為索引,或者將索引轉化為物件的列。pandas提供了set_index()/res

【深入Java虛擬機器】記憶體區域(Eden SpaceSurvivor SpaceOld GenCode CachePerm Gen)

1.記憶體區域劃分 限定商用虛擬機器基本都採用分代收集演算法進行垃圾回收。根據物件的生命週期的不同將記憶體劃分為幾塊,然後根據各塊的特點採用最適當的收集演算法。大批物件死去、少量物件存活的,使用複製演算法,複製成本低;物件存活率高、沒有額外空間進行分配擔保的,採用標記-清除演算法

【STM庫應用】stm32 TIM (二 脈衝寬度週期測量)

昨天已經把這個研究出來了,但是由於該專利申請書,一直沒有時間上傳,今天補上! 今天主要是用TIM3進行PWM的輸入模式,進行對矩形波的脈衝訊號寬度以及其週期進行測量,先來看一幅圖。 圖1 TIM內部邏輯圖 我們先來看看datasheet上是怎麼說的:

JAVAWEB開發mybatis(二)——高階對映查詢快取mybatis與Spring整合以及懶載入的配置逆向工程

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "ht

MongoDB常用命令彙總插入更新刪除操作

Insurt操作 insurt操作是MongoDB插入資料的基本方法,對目標集合使用Insert操作,會將該文件新增到MongoDB並自動生成相應的ID鍵。文件結果採用類似JSON的BSON格式。常見的插入操作主要有單挑插入和批量插入兩種形式。插入時只是簡單地將文件存入資

Pandas十一Fillna填充缺失資料

約定: import pandas as pd import numpy as np from numpy import nan as NaN 填充缺失資料 fillna()是最主要的處理方式了。 df1=pd.DataFra

gitrebasemergecherry pick的區別—面試常問

git flow 鎮樓     merge 這個簡單,初學者常用。比如主分支是Dev,最新版本是01。然後小明基於此,搞了個feature 分支A,業務:打醬油 然後在上面多次提交,完成功能迭代開發,如A1 ---> A2 ---> A3 Dev 分支