Python 時間的處理
標籤(空格分隔): python 數據分析
日期以及時間數據類型
日期 data, 時間 time
datatime是包含data以及time 的數據類型
timedelta兩個datatime之間的差值
字符串和datatime的轉化
datetime轉換成字符串
stamp = datetime(2011, 1, 3)
str(stamp)
stamp.strftime('%Y-%m-%d') #可以自己定義格式
字符串轉datetime
value = '2011-01-03'
stamp = datetime.strptime(value, '%Y-%m-%d')
還有一種很方便的就是通過第三方包dateutil
from dateutil.parser import parser
stamp = parser('2011-03-11') #parser幾乎對所有格式時間都可以轉化,但是對有歧義的需要小心,最後自己手動指明參數datefirst=true
pandas處理成組日期
datestrs = ['7/6/2011', '8/6/2011']
pd.to_datetime(datestrs+['None']) #pandas會將缺失值處理成NaT(Not a Time)
- %Y 4位數的年
- %y 2位數的年
- %m 2位數的月
- %d 2位數的日
- %H 24小時 %I12小時
- %M 2位數的分
- %S 秒0, 61
- %w 一週星期幾
- %U [00, 53]每年的第多少周,第一個星期天前被認爲是第0周
- %W [00, 53]每年的第多少周,第一個星期一前被認爲是第0周
- %F %Y-%m-%d的縮寫
- %D %m/%d/%y的縮寫
- %a 星期幾簡寫 %A星期幾全寫
- %b 月份簡寫 %B月份全寫
Pandas時間片段
tmp = pd.date_range('1/1/2000', periods=1000)
longer_ts = Series(np.random.randn(1000), index=tmp)
longer_ts['2001'] #就可以把2001年的都取出來
#通過日期進行切片的方式只對規則Series有效???
longer_ts['1/6/2001':'1/11/2011'] #這裏時間戳的日期可以不存在
帶重複索引的時間序列,然後可以聚合
pd.date_range('1/1/2000', '10/1/2000', freq='BM)
BM表示每月的最後一個工作日