在python中時間資料型別有date(日期)和time(時間)兩種資料型別。
主要用到的模組包含,datetime,time以及calendar模組。
時間型別
import datetime as dt
now=dt.datetime.now()
print(now)
結果為2016-10-05 09:11:28.301585
print(now.year,now.month,now.day)
結果為:
2016 10 5
我們也可以用datetime函式直接構造時間
print(dt.datetime(2010,5,6))
結果為:
2010-05-06 00:00:00
time=dt.date(2010,5,6)+dt.timedelta(18)
print(time)
結果為:
2010-05-24
這裡timedelta表示時間差,用於時間加減運算。
下面是時間函式介紹
時間格式化
在python中,我們可以通過str以及strftime對時間資料進行格式化。
time=dt.date(2010,5,6)
print(str(time))
print(time.strftime('%y/%m/%d'))
結果為:
2010-05-06
10/05/06
這裡str直接對時間進行字串轉換,而strftime則是把時間轉換為固定格式
時間格式具體說明:
時間序列
通常情況下,我們的時間資料只是資料中的很小一部分內容,要配合其他資料一起使用,
這種情況下我們需要用到前面提到過的很多方法配合時間特有的函式一起使用才能起到事半功倍的效果。
time=pd.series(np.random.randn(20),
index=pd.date_range(dt.datetime(2016,1,1),periods=20))
print(time)
結果為:
接下來我們就可以正常資料一樣多資料進行操作,比如索引、排序等
print(time[:2])
結果為:
print(time['2016-01-15'])
結果為:
1.29540896466
print(time['2016-01-15':'2016-01-20'])
結果為:
也可以用time['2016-01']對整個1月份的資料進行索引
重點說下pandas.date_range()這個函式
pandas.d 起始日期
end:為結束日期
perionds:輸入時間範圍
freq:時間間隔形式(年,月,日 )
data=pd.date_range('2010-01-01','2011-01-01',freq='m')
print(data)
結果為:
datetimeindex(['2010-01-31', '2010-02-28', '2010-03-31', '2010-04-30',
'2010-05-31', '2010-06-30', '2010-07-31', '2010-08-31',
'2010-09-30', '2010-10-31', '2010-11-30', '2010-12-31'],
dtype='datetime64[ns]', freq='m')
data=pd.date_range('2010-01-01',periods=5,freq='4d')
print(data)
結果為:
datetimeindex(['2010-01-01', '2010-01-05', '2010-01-09', '2010-01-13',
'2010-01-17'],
dtype='datetime64[ns]', freq='4d')
下面是詳細的時間序列基礎頻率表
接下來看下時間偏移
data=pd.date_range('2010-01-01',periods=5,freq='2d')
print(data)
結果為:
datetimeindex(['2010-01-01', '2010-01-03', '2010-01-05', '2010-01-07',
'2010-01-09'],
dtype='datetime64[ns]', freq='2d')
print(data.shift(2))
結果為:
datetimeindex(['2010-01-05', '2010-01-07', '2010-01-09', '2010-01-11',
'2010-01-13'],
dtype='datetime64[ns]', freq='2d')
上面shift是對時間進行偏移,初始偏移量跟date_range的freq引數有關,如果shift自帶freq,則使用自身引數。
print(data.shift(2,freq='d'))
結果為:
datetimeindex(['2010-01-03', '2010-01-05', '2010-01-07', '2010-01-09',
'2010-01-11'],
dtype='datetime64[ns]', freq='2d')
接下來我門口看下時間運算
timepieces=pd.period('2005-01-01',freq='m')
print(timepieces+5)
結果為:
2005-06
print(pd.period('2005-01-01','m')-pd.period('2002-12-01','m'))
結果為:
timepieces=pd.period('2005-01',freq='m')
print((timepieces+5).asfreq('d',how='start').strftime('%y-%m-%d'))
結果為:
2005-06-01
通過asfreq對資料進行頻率轉換
time=pd.date_range('2000','2002',freq='m')
print(time)
結果為:
datetimeindex(['2000-01-31', '2000-02-29', '2000-03-31', '2000-04-30',
'2000-05-31', '2000-06-30', '2000-07-31', '2000-08-31',
'2000-09-30', '2000-10-31', '2000-11-30', '2000-12-31',
'2001-01-31', '2001-02-28', '2001-03-31', '2001-04-30',
'2001-05-31', '2001-06-30', '2001-07-31', '2001-08-31',
'2001-09-30', '2001-10-31', '2001-11-30', '2001-12-31'],
dtype='datetime64[ns]', freq='m')
print(time.to_period().asfreq('d',how='start'))
結果為:
periodindex(['2000-01-01', '2000-02-01', '2000-03-01', '2000-04-01',
'2000-05-01', '2000-06-01', '2000-07-01', '2000-08-01',
'2000-09-01', '2000-10-01', '2000-11-01', '2000-12-01',
'2001-01-01', '2001-02-01', '2001-03-01', '2001-04-01',
'2001-05-01', '2001-06-01', '2001-07-01', '2001-08-01',
'2001-09-01', '2001-10-01', '2001-11-01', '2001-12-01'],
dtype='int64', freq='d')
這裡進行了兩次轉換,首先是型別轉換,然後再進行頻率轉換
print(time.to_period().asfreq('m',how='start'))
結果為:
periodindex(['2000-01', '2000-02', '2000-03', '2000-04', '2000-05', '2000-06',
'2000-07', '2000-08', '2000-09', '2000-10', '2000-11', '2000-12',
'2001-01', '2001-02', '2001-03', '2001-04', '2001-05', '2001-06',
'2001-07', '2001-08', '2001-09', '2001-10', '2001-11', '2001-12'],
dtype='int64', freq='m')
Python 遍歷時刪除的處理 說明
遍歷時,建議不能直接進行remove刪除,會跳過某些元素 例項 a 1,2,3,4,5 for i in a a.remove i print a a 1,2,3,4,5 for i in a a.remove i print a 結果 2,4 remove 移除列表中某個值的第乙個匹配項 s 1,...
python生成時間戳 Python 獲取時間戳
import time time tup time.localtime time.time print time tup format time y m d a h m s cur time time.strftime format time,time tup print cur time 參考 p...
python各種時間 Python日期和時間
本篇文章幫大家學習python日期和時間,包含了python日期和時間使用方法 操作技巧 例項演示和注意事項,有一定的學習價值,大家可以用來參考。通常在資料科學中,我們需要基於時間值的分析。python可以優雅地處理各種格式的日期和時間。日期時間庫提供了必要的方法和函式來處理下列情況。日期時間表示 ...