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()
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
謝謝大家的瀏覽,
希望我的努力能幫助到您,
共勉!
相關推薦
Pandas詳解七之DatetimeIndex、PeriodIndex和TimedeltaIndex時間序列
約定: 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{}閉包配置來幫助我們很好的處理多渠道構建的問題和實現批
Pandas詳解十之Dropna濾除缺失資料
約定: 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中drop、delete和truncate的異同
第一:相同點: 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原生之scrollTop、offsetHeight和offsetTop等屬性用法詳解
本文轉載自:https://www.cnblogs.com/koleyang/p/4939853.html **scrollTop、offsetHeight和offsetTop等屬性用法詳解:** 標題中的幾個相關相關屬性在網頁中有這大量的應用,尤其是在運動框架中,但是由於有些屬性相互之間的
瀏覽器儲存之Cookie、LocalStorage 和 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 Space、Survivor Space、Old Gen、Code Cache和Perm 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
git之rebase、merge和cherry pick的區別詳解—面試常問
git flow 鎮樓 merge 這個簡單,初學者常用。比如主分支是Dev,最新版本是01。然後小明基於此,搞了個feature 分支A,業務:打醬油 然後在上面多次提交,完成功能迭代開發,如A1 ---> A2 ---> A3 Dev 分支