pandas時間序列操作方法
阿新 • • 發佈:2018-11-11
在pandas中擁有強大的時間序列操作方法。
直接上demo:
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
from datetime import datetime
np.random.seed(666)
# 生成時間物件
t1 = datetime(2009, 10, 1)
print(type(t1)) # 2009-10-01 00:00:00 type:<class 'datetime.datetime'>
date_list = [
datetime(2018 , 10, 1),
datetime(2018, 10, 10),
datetime(2019, 10, 1),
datetime(2019, 10, 20),
datetime(2019, 11, 1)
]
print(date_list)
# [datetime.datetime(2018, 10, 1, 0, 0), datetime.datetime(2018, 10, 10, 0, 0), datetime.datetime(2019, 10, 1, 0, 0), datetime.datetime(2019, 10, 20, 0, 0), datetime.datetime(2019, 11, 1, 0, 0)]
s1 = Series(np.random.rand(5), index=date_list)
print(s1) # index 是 時間 物件
'''
2018-10-01 0.700437
2018-10-10 0.844187
2019-10-01 0.676514
2019-10-20 0.727858
2019-11-01 0.951458
dtype: float64
'''
# 直接按照索引進行訪問
print(s1[3]) # 0.7278580572480748
# 傳入時間物件訪問
print(s1[datetime(2019, 10, 20)]) # 0.7278580572480748
# 傳入字串
print(s1['2019-10-20']) # 0.7278580572480748
# 傳入字串2
print(s1['20191020']) # 0.7278580572480748
# 單純寫 年 月, 可以得到該年月下的所有內容
print(s1['2019-10'])
'''
2019-10-01 0.676514
2019-10-20 0.727858
dtype: float64
'''
# 原理同上
print(s1['2019'])
'''
2019-10-01 0.676514
2019-10-20 0.727858
2019-11-01 0.951458
dtype: float64
'''
# date_range() 引數 start 開始時間, periods 間隔時間,freq 按照什麼間隔 d w 5h……
date_list_new = pd.date_range(start='2018-01-1', periods=50, freq='w')
print(type(date_list_new), date_list_new) # <class 'pandas.core.indexes.datetimes.DatetimeIndex'>
''' 一週 預設 從 週日 開始的, 如果需要更改,可以改變 freq='w-mon'
DatetimeIndex(['2018-01-07', '2018-01-14', '2018-01-21', '2018-01-28',
'2018-02-04', '2018-02-11', '2018-02-18', '2018-02-25',
'2018-03-04', '2018-03-11', '2018-03-18', '2018-03-25',
'2018-04-01', '2018-04-08', '2018-04-15', '2018-04-22',
'2018-04-29', '2018-05-06', '2018-05-13', '2018-05-20',
'2018-05-27', '2018-06-03', '2018-06-10', '2018-06-17',
'2018-06-24', '2018-07-01', '2018-07-08', '2018-07-15',
'2018-07-22', '2018-07-29', '2018-08-05', '2018-08-12',
'2018-08-19', '2018-08-26', '2018-09-02', '2018-09-09',
'2018-09-16', '2018-09-23', '2018-09-30', '2018-10-07',
'2018-10-14', '2018-10-21', '2018-10-28', '2018-11-04',
'2018-11-11', '2018-11-18', '2018-11-25', '2018-12-02',
'2018-12-09', '2018-12-16'],
dtype='datetime64[ns]', freq='W-SUN')
'''