本文目錄一覽:
python中時間序列數據的一些處理方式
datetime.timedelta對象代表兩個時間之間的時間差,兩個date或datetime對象相減就可以返回一個timedelta對象。
利用以下數據進行說明:
如果我們發現時間相關內容的變數為int,float,str等類型,不方便後面的分析,就需要使用該函數轉化為常用的時間變數格式:pandas.to_datetime
轉換得到的時間單位如下:
如果時間序列格式不統一,pd.to_datetime()的處理方式:
當然,正確的轉換是這樣的:
第一步:to_datetime()
第二步:astype(datetime64[D]),astype(datetime64[M])
本例中:
order_dt_diff必須是Timedelta(‘0 days 00:00:00’)格式,可能是序列使用了diff()
或者pct_change()。
前者往往要通過’/np.timedelta’去掉單位days。後者其實沒有單位。
假如我們要統計某共享單車一天內不同時間點的用戶使用數據,例如
還有其他維度的提取,年、月、日、周,參見:
Datetime properties
注意 :.dt的對象必須為pandas.Series,而不可以是Series中的單個元素
Pandas-時間序列基礎
Python標準庫中包含用於日期和時間的數據類型,而且還有日曆方面的功能,我們主要會用到datetime、time和calendar模塊,datetime.datetime是用的最多的數據類型。
datetime以毫秒形式存儲日期和時間,datetime.timedelta表示兩個datetime對象之間的時間差.
可以給datetime對象加上或者減去一個或多個timedelta,會產生一個新對象:
利用str或者strftime方法,datetime對象和pandas的Timestamp對象可以被格式化為字元串:
datetime.strptime也可以用這些格式化編碼將字元串轉化為日期:
datetime.strptime是通過已知格式進行日期解析的最佳方式,但是每次都要編寫格式定義很麻煩,尤其是對於一些常見的日期格式,這種情況下,可以用dateutil這個第三方包中的parser.parse方法,dateutil可以解析幾乎所有人類能夠理解的日期表示形式:
在國際通用格式中,日通常出現在月的前面,傳入dayfirst=True即可:
pandas通常是用於處理成組日期的,不管這些日期是DataFrame的軸索引還是列,to_datetime方法可以解析多種不同的日期表示形式。
to_datetime可以處理缺失值,NAT是pandas中時間戳數據的NA值:
pandas最基本的時間序列類型就是以時間戳為索引的Series:
這裡的Series索引不是普通的索引,而是DatetimeIndex,而ts變為了一個TimeSeries,同時,可以看到,pandas用Numpy的datetime64數據類型以納秒形式存儲時間戳。
跟其他Series一樣,不同索引的時間序列之間的算數運算會自動對齊:
DateTimeIndex中的各個標量值是pandas的Timestamp對象.
由於TimeSeries是Series的一個子類,所以在索引以及數據選曲方面他們的行為是一樣的,但是我們還可以傳入一個可以被解釋為日期的字元串來進行索引:
對於較長的時間序列,只需傳入年或年月即可輕鬆選取數據的切片:
通過日期進行切片的方式只對規則Series有效:
還有一個等價的實例方法也可以截取兩個日期之間的TimeSeries:
DataFrame也同樣適用上面的規則
pandas中的時間序列一般被認為是不規則的,也就是說,沒有固定的頻率,對於大部分程序而言,這是無所謂的,但是,他常常需要以某種相對固定的頻率進行分析,比如每月,每日,每15min等。pandas有一套標準時間序列頻率以及用於重採樣,頻率推斷,生成固定頻率日期範圍的工具.
例如,我們可以將之前的時間序列轉換為一個具有固定頻率(每日)的時間序列,只需調用resample即可.返回DatetimeIndexResampler,獲取值使用asfreq():
生成日期範圍使用date_range函數
默認情況下,date_range會產生按天計算的時間點,如果只傳入起始或結束日期,那就還得傳入一個表示一段時間的數字:
如果你不想按天生成數據,想要按照一定的頻率生成,我們傳入freq參數即可.如想按5小時生成數據:
如果你想生成一個由每月最後一個工作日組成的日期索引,可以使用BM頻率:
date_range默認會保留起始和結束的時間戳的時間信息,但是如果我們想產生一組規範化到午夜的時間戳,normalize選項可以實現這個功能:
WOM(week of Month)是一種非常實用的頻率類,它以WOM開頭,它使你能獲得諸如每月第三個星期五之類的日期:
python中datetime怎麼設置時區
1、默認情況下,pandas中的時間序列是單純(naive)的時區,其索引的tz欄位為None。
2、可以用時區集生成日期範圍。
3、從單純到本地化的轉換是通過tz_localize方法處理的。
4、一旦時間序列被本地化到某個特定時區,就可以用tz_convert將其轉換到別的時區了。
5、對於上面這種時間序列(它跨越了美國東部時區的夏令時轉變期),我們可以將其本地化到EST,再轉換為UTC或柏林時間。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/219812.html