python输入年月日输出年月日_python时序分析
終于迎來了周末,能讓我有時間把這周立的flag全部解決掉。
在上一篇pandas練習中,我有提到要把python的時間處理單獨寫一篇,如果有讀者仔細觀察的話,可以看到我用的圖片就是時間模塊datetime里面的一些操作。那么我們今天的要學習的內容就是datetime內建模塊和pandas庫中處理時間的幾個函數(shù),以及resample, re-sample是重新采集的意思,也可以理解為把時間按照一定的約定重置。
剛好最近做的pandas練習系列里面剛好有一個章節(jié)是時間序列的練習的。
所以學完基礎的知識以后加上一個練習,我相信可以對這個部分能有不同的理解。
好的,讓我開始快樂的時間之旅吧。
首先申明我學習這種庫喜歡直接去啃官方的文檔,來源在這
datetime - Basic date and time types - Python 3.7.4rc1 documentation?docs.python.org以及
pandas.to_datetime - pandas 0.24.2 documentation?pandas.pydata.org還有
Resampling - pandas 0.24.2 documentation?pandas.pydata.org有興趣的伙伴也可以自己去這幾個網址學習。
在今天回顧之前寫的文章的過程中,我發(fā)現(xiàn)自己有一個很大的缺點,那就是缺乏邏輯性,之前的文多有一種隨性所為的意思,所以我想從這篇文章開始,引入思維導圖,這一方面方便各位讀者,另一方面當我自己回頭看自己的寫過的文的時候,也能更加的方便的常讀常新。
一、python有很多庫可以用來處理時間,如:datetime,time,calendar等
python常用的處理時間的庫而datetime常用的是datetime.datetime函數(shù)。我們今天就從datetime來入手了
學習任何一個模塊的時候都應該先看這個庫都有哪些模塊
同樣的使用導圖
datetime庫的基本信息開始這個庫之前,我們要首先看兩個參數(shù)
datetime.MINYEAR=1
datetime.MAXYEAR=9999
這兩個類表示的是datetime從1到9999,這對于我們的處理來說足夠了,畢竟看到這篇文章的沒有人可以到9999年。LOL
通過上面的圖形,能夠清楚的看到,datetime庫最常用的是timedelta和datetime這兩個類。
我們首先看一下timedelta
from datetime import datetime now = datetime.now() now輸出結果求解一個時間差
delta = datetime(2000,1,7) - datetime(1998,6,23,7,16) delta輸出結果delta.days輸出結果delta.seconds輸出結果這兩個語句就是表示的兩個時間的差值,其中delta.days表示的是兩個時間之間相差的天數(shù),delta.seconds表示的是相差的秒鐘數(shù)。也就是我輸入的這兩個時間相差562天,60240微秒
我們再來看一下timedelta的一些基本操作
from datetime import timedelta year = timedelta(days=365) another_year = timedelta(weeks=40,days=84,hours=23,minutes=50,seconds=600) year.total_seconds()輸出結果year == another_year輸出結果時間的相加
start 輸出結果時間相減
start 輸出結果好的,下面主要來看一下datetime.datetime,我們之所以學習datetime庫是因為在實際的工作中,時間格式不是統(tǒng)一的,不同的人會有不同的寫法。使用datetime可以按照我們想要的時間格式來實現(xiàn)
datetime.today()輸出結果獲取當前的時間
datetime.now()輸出結果獲取倫敦的當前時間,因為,我們知道我們是東8區(qū),所以應該相差8個小時
datetime.utcnow()輸出結果可以看到確實是相差了8個小時。
下面看一個比較常用的字符串型時間轉換為常見的日期格式的操作。
有兩種操作
1 strftime(format) 2datetime.strptime(string,format)現(xiàn)在分別介紹一些這兩個用法
stamp我們在來看一下第二中操作時間的做法
dt = datetime.strptime('21/11/06 16:30','%d/%m/%y %H:%M') dt輸出結果能夠看到這兩個的做法的區(qū)別是什么,1第一種做法是直接操作一個字符串的,而第二種的做法是把字符串傳遞給模塊,然后根據(jù)格式操作。
但是以上的兩種做法都有一個問題,就是每次使用時都要編寫一個格式,這個就很方便了,所以這里介紹一個第三方包dateutil 這個庫中有一個類parser 這個類種有一種做法是parser.parse
我們來看一下
from dateutil.parser import parse parse('2001-01-03')輸出結果再看一個例子,
parse('20140608')輸出結果可以看到這個處理時間非常方便,可以直接把類似于時間的格式,直接處理成數(shù)據(jù)的形式,簡單方便。
基本所有的日期表示dateutil都能夠解析,比如下面這個
parse('Jan 31,1997 10:45 PM')輸出結果在國際上經常能夠看到日期出現(xiàn)在月份之前,可以傳遞dayfirst = True來表明這種情況
如下所示
parse('6/12/2011',dayfirst=True)輸出結果以上是介紹了datetime以及一個非常好用的庫dateutil,但是要注意的是,dateutil是一個好用但是不完美的工具,比如可能將一些字符串識別為不想要的日期
parse輸出結果可以看到,把42這種無法直接識別的字符串識別成了2042年的當天(上面是一個很好的例子)當然了,其實也可以理解,對于時間來說,最好的當然還是有年月日了,所以這個庫還是很還用的。
各位關注我的朋友應該知道,我最近一直在寫一個系列,那就是pandas練習,了解一點pandas的應該都知道,pandas真的超級好用,不僅可以處理不同格式的數(shù)據(jù),還可以畫圖,有一位朋友給我留言說為什么不用pandas直接繪圖,其實我知道pandas能夠繪制圖,但是這通常需要和matplotlib一起用。所以我就沒用panda繪圖。
好吧扯得有點遠,下面我們來看一下pandas處理時間時的一些應用,這個主要包含todatetime,resample,還有用來處理時間索引的data_range
下面我將重點說明這三個部分。
首先我們來看一下pandas.to_datetime,這個模塊可以很好的轉換很多不同的日期表示格式。
老規(guī)矩,還是先看一下這個模塊的參數(shù)
pandas我專門做了一個表格來說明這些參數(shù)分別代表著什么以及怎么使用
這是我自己按照官方文檔翻譯的,可能會有一些錯誤,還請各位看官謹慎參考下面我們看一些例子,來加深理解
df = pd.DataFrame({'year':[2015,2016],'month':[4,3],'day':[4,5]}) pd.to_datetime(df)輸出結果這個例子中轉換的數(shù)據(jù)是DataFrame
dt = '2016-07-08' pd.to_datetime(dt)輸出結果這個例子使用的是字符串型
下面我們做一個整型數(shù)據(jù)的轉換
dt1 = 20190807 pd.to_datetime(dt1,unit='s')輸出結果我們在看一下errors的用法
#把dt1轉換成想要的時間格式 pd.to_datetime(dt1,format='%Y%m%d',errors='ignore')輸出結果再來一個
pd.to_datetime('13000101',format='%Y%m%d',errors='coerce')輸出結果NaT=Not a Time是時間里面的空值
我們再來看一下infer_datetime_format等于True時的執(zhí)行順序,
#首先創(chuàng)建一個數(shù)據(jù) s = pd.Series(['3/11/2000','3/12/2000','3/13/2000']*1000) s.head()輸出結果在看一下執(zhí)行用時,這里要使用魔法函數(shù),以及即時函數(shù)timeit
%timeit pd.to_datetime(s,infer_datetime_format=True)輸出結果%timeit pd.to_datetime(s,infer_datetime_format=False)輸出結果能夠看到著兩個語句執(zhí)行速度的區(qū)別,infer_datetime_format=True的執(zhí)行速度是infer_datetime_format=False的20多倍
好的到這里to_datetime這個模塊基本到位了,這個可以和to-numeric模塊聯(lián)系起來,很方便,很強大,能夠處理的數(shù)據(jù)類型很多
由于最后一部分resample的內容特別多,所以我想了想還是分兩部分來寫吧。
好的今天就到這里了,我們下期節(jié)目再見!
哈哈哈,期待朋友們的點贊!謝謝!!!
總結
以上是生活随笔為你收集整理的python输入年月日输出年月日_python时序分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java实现获取当前日期、农历、周
- 下一篇: 解锁!95%的Android程序员做性能