日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python输入年月日输出年月日_python时序分析

發(fā)布時(shí)間:2023/12/16 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python输入年月日输出年月日_python时序分析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

終于迎來(lái)了周末,能讓我有時(shí)間把這周立的flag全部解決掉。

在上一篇pandas練習(xí)中,我有提到要把python的時(shí)間處理單獨(dú)寫(xiě)一篇,如果有讀者仔細(xì)觀察的話,可以看到我用的圖片就是時(shí)間模塊datetime里面的一些操作。那么我們今天的要學(xué)習(xí)的內(nèi)容就是datetime內(nèi)建模塊和pandas庫(kù)中處理時(shí)間的幾個(gè)函數(shù),以及resample, re-sample是重新采集的意思,也可以理解為把時(shí)間按照一定的約定重置。

剛好最近做的pandas練習(xí)系列里面剛好有一個(gè)章節(jié)是時(shí)間序列的練習(xí)的。

所以學(xué)完基礎(chǔ)的知識(shí)以后加上一個(gè)練習(xí),我相信可以對(duì)這個(gè)部分能有不同的理解。

好的,讓我開(kāi)始快樂(lè)的時(shí)間之旅吧。

首先申明我學(xué)習(xí)這種庫(kù)喜歡直接去啃官方的文檔,來(lái)源在這

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

有興趣的伙伴也可以自己去這幾個(gè)網(wǎng)址學(xué)習(xí)。

在今天回顧之前寫(xiě)的文章的過(guò)程中,我發(fā)現(xiàn)自己有一個(gè)很大的缺點(diǎn),那就是缺乏邏輯性,之前的文多有一種隨性所為的意思,所以我想從這篇文章開(kāi)始,引入思維導(dǎo)圖,這一方面方便各位讀者,另一方面當(dāng)我自己回頭看自己的寫(xiě)過(guò)的文的時(shí)候,也能更加的方便的常讀常新。

一、python有很多庫(kù)可以用來(lái)處理時(shí)間,如:datetime,time,calendar等

python常用的處理時(shí)間的庫(kù)

而datetime常用的是datetime.datetime函數(shù)。我們今天就從datetime來(lái)入手了

學(xué)習(xí)任何一個(gè)模塊的時(shí)候都應(yīng)該先看這個(gè)庫(kù)都有哪些模塊

同樣的使用導(dǎo)圖

datetime庫(kù)的基本信息

開(kāi)始這個(gè)庫(kù)之前,我們要首先看兩個(gè)參數(shù)

datetime.MINYEAR=1

datetime.MAXYEAR=9999

這兩個(gè)類表示的是datetime從1到9999,這對(duì)于我們的處理來(lái)說(shuō)足夠了,畢竟看到這篇文章的沒(méi)有人可以到9999年。LOL

通過(guò)上面的圖形,能夠清楚的看到,datetime庫(kù)最常用的是timedelta和datetime這兩個(gè)類。

我們首先看一下timedelta

from datetime import datetime now = datetime.now() now

輸出結(jié)果

求解一個(gè)時(shí)間差

delta = datetime(2000,1,7) - datetime(1998,6,23,7,16) delta

輸出結(jié)果delta.days

輸出結(jié)果delta.seconds

輸出結(jié)果

這兩個(gè)語(yǔ)句就是表示的兩個(gè)時(shí)間的差值,其中delta.days表示的是兩個(gè)時(shí)間之間相差的天數(shù),delta.seconds表示的是相差的秒鐘數(shù)。也就是我輸入的這兩個(gè)時(shí)間相差562天,60240微秒

我們?cè)賮?lái)看一下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()

輸出結(jié)果year == another_year

輸出結(jié)果

時(shí)間的相加

start

輸出結(jié)果

時(shí)間相減

start

輸出結(jié)果

好的,下面主要來(lái)看一下datetime.datetime,我們之所以學(xué)習(xí)datetime庫(kù)是因?yàn)樵趯?shí)際的工作中,時(shí)間格式不是統(tǒng)一的,不同的人會(huì)有不同的寫(xiě)法。使用datetime可以按照我們想要的時(shí)間格式來(lái)實(shí)現(xiàn)

datetime.today()

輸出結(jié)果

獲取當(dāng)前的時(shí)間

datetime.now()

輸出結(jié)果

獲取倫敦的當(dāng)前時(shí)間,因?yàn)?#xff0c;我們知道我們是東8區(qū),所以應(yīng)該相差8個(gè)小時(shí)

datetime.utcnow()

輸出結(jié)果

可以看到確實(shí)是相差了8個(gè)小時(shí)。

下面看一個(gè)比較常用的字符串型時(shí)間轉(zhuǎn)換為常見(jiàn)的日期格式的操作。

有兩種操作

1 strftime(format) 2datetime.strptime(string,format)

現(xiàn)在分別介紹一些這兩個(gè)用法

stamp

我們?cè)趤?lái)看一下第二中操作時(shí)間的做法

dt = datetime.strptime('21/11/06 16:30','%d/%m/%y %H:%M') dt

輸出結(jié)果

能夠看到這兩個(gè)的做法的區(qū)別是什么,1第一種做法是直接操作一個(gè)字符串的,而第二種的做法是把字符串傳遞給模塊,然后根據(jù)格式操作。

但是以上的兩種做法都有一個(gè)問(wèn)題,就是每次使用時(shí)都要編寫(xiě)一個(gè)格式,這個(gè)就很方便了,所以這里介紹一個(gè)第三方包dateutil 這個(gè)庫(kù)中有一個(gè)類parser 這個(gè)類種有一種做法是parser.parse

我們來(lái)看一下

from dateutil.parser import parse parse('2001-01-03')

輸出結(jié)果

再看一個(gè)例子,

parse('20140608')

輸出結(jié)果

可以看到這個(gè)處理時(shí)間非常方便,可以直接把類似于時(shí)間的格式,直接處理成數(shù)據(jù)的形式,簡(jiǎn)單方便。

基本所有的日期表示dateutil都能夠解析,比如下面這個(gè)

parse('Jan 31,1997 10:45 PM')

輸出結(jié)果

在國(guó)際上經(jīng)常能夠看到日期出現(xiàn)在月份之前,可以傳遞dayfirst = True來(lái)表明這種情況

如下所示

parse('6/12/2011',dayfirst=True)

輸出結(jié)果

以上是介紹了datetime以及一個(gè)非常好用的庫(kù)dateutil,但是要注意的是,dateutil是一個(gè)好用但是不完美的工具,比如可能將一些字符串識(shí)別為不想要的日期

parse

輸出結(jié)果

可以看到,把42這種無(wú)法直接識(shí)別的字符串識(shí)別成了2042年的當(dāng)天(上面是一個(gè)很好的例子)當(dāng)然了,其實(shí)也可以理解,對(duì)于時(shí)間來(lái)說(shuō),最好的當(dāng)然還是有年月日了,所以這個(gè)庫(kù)還是很還用的。

各位關(guān)注我的朋友應(yīng)該知道,我最近一直在寫(xiě)一個(gè)系列,那就是pandas練習(xí),了解一點(diǎn)pandas的應(yīng)該都知道,pandas真的超級(jí)好用,不僅可以處理不同格式的數(shù)據(jù),還可以畫(huà)圖,有一位朋友給我留言說(shuō)為什么不用pandas直接繪圖,其實(shí)我知道pandas能夠繪制圖,但是這通常需要和matplotlib一起用。所以我就沒(méi)用panda繪圖。

好吧扯得有點(diǎn)遠(yuǎn),下面我們來(lái)看一下pandas處理時(shí)間時(shí)的一些應(yīng)用,這個(gè)主要包含todatetime,resample,還有用來(lái)處理時(shí)間索引的data_range

下面我將重點(diǎn)說(shuō)明這三個(gè)部分。

首先我們來(lái)看一下pandas.to_datetime,這個(gè)模塊可以很好的轉(zhuǎn)換很多不同的日期表示格式。

老規(guī)矩,還是先看一下這個(gè)模塊的參數(shù)

pandas

我專門(mén)做了一個(gè)表格來(lái)說(shuō)明這些參數(shù)分別代表著什么以及怎么使用

這是我自己按照官方文檔翻譯的,可能會(huì)有一些錯(cuò)誤,還請(qǐng)各位看官謹(jǐn)慎參考

下面我們看一些例子,來(lái)加深理解

df = pd.DataFrame({'year':[2015,2016],'month':[4,3],'day':[4,5]}) pd.to_datetime(df)

輸出結(jié)果

這個(gè)例子中轉(zhuǎn)換的數(shù)據(jù)是DataFrame

dt = '2016-07-08' pd.to_datetime(dt)

輸出結(jié)果

這個(gè)例子使用的是字符串型

下面我們做一個(gè)整型數(shù)據(jù)的轉(zhuǎn)換

dt1 = 20190807 pd.to_datetime(dt1,unit='s')

輸出結(jié)果

我們?cè)诳匆幌耬rrors的用法

#把dt1轉(zhuǎn)換成想要的時(shí)間格式 pd.to_datetime(dt1,format='%Y%m%d',errors='ignore')

輸出結(jié)果

再來(lái)一個(gè)

pd.to_datetime('13000101',format='%Y%m%d',errors='coerce')

輸出結(jié)果

NaT=Not a Time是時(shí)間里面的空值

我們?cè)賮?lái)看一下infer_datetime_format等于True時(shí)的執(zhí)行順序,

#首先創(chuàng)建一個(gè)數(shù)據(jù) s = pd.Series(['3/11/2000','3/12/2000','3/13/2000']*1000) s.head()

輸出結(jié)果

在看一下執(zhí)行用時(shí),這里要使用魔法函數(shù),以及即時(shí)函數(shù)timeit

%timeit pd.to_datetime(s,infer_datetime_format=True)

輸出結(jié)果%timeit pd.to_datetime(s,infer_datetime_format=False)

輸出結(jié)果

能夠看到著兩個(gè)語(yǔ)句執(zhí)行速度的區(qū)別,infer_datetime_format=True的執(zhí)行速度是infer_datetime_format=False的20多倍

好的到這里to_datetime這個(gè)模塊基本到位了,這個(gè)可以和to-numeric模塊聯(lián)系起來(lái),很方便,很強(qiáng)大,能夠處理的數(shù)據(jù)類型很多

由于最后一部分resample的內(nèi)容特別多,所以我想了想還是分兩部分來(lái)寫(xiě)吧。

好的今天就到這里了,我們下期節(jié)目再見(jiàn)!

哈哈哈,期待朋友們的點(diǎn)贊!謝謝!!!

總結(jié)

以上是生活随笔為你收集整理的python输入年月日输出年月日_python时序分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。