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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2023/12/16 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python输入年月日输出年月日_python时序分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

終于迎來了周末,能讓我有時間把這周立的flag全部解決掉。

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

剛好最近做的pandas練習系列里面剛好有一個章節是時間序列的練習的。

所以學完基礎的知識以后加上一個練習,我相信可以對這個部分能有不同的理解。

好的,讓我開始快樂的時間之旅吧。

首先申明我學習這種庫喜歡直接去啃官方的文檔,來源在這

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

有興趣的伙伴也可以自己去這幾個網址學習。

在今天回顧之前寫的文章的過程中,我發現自己有一個很大的缺點,那就是缺乏邏輯性,之前的文多有一種隨性所為的意思,所以我想從這篇文章開始,引入思維導圖,這一方面方便各位讀者,另一方面當我自己回頭看自己的寫過的文的時候,也能更加的方便的常讀常新。

一、python有很多庫可以用來處理時間,如:datetime,time,calendar等

python常用的處理時間的庫

而datetime常用的是datetime.datetime函數。我們今天就從datetime來入手了

學習任何一個模塊的時候都應該先看這個庫都有哪些模塊

同樣的使用導圖

datetime庫的基本信息

開始這個庫之前,我們要首先看兩個參數

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表示的是兩個時間之間相差的天數,delta.seconds表示的是相差的秒鐘數。也就是我輸入的這兩個時間相差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庫是因為在實際的工作中,時間格式不是統一的,不同的人會有不同的寫法。使用datetime可以按照我們想要的時間格式來實現

datetime.today()

輸出結果

獲取當前的時間

datetime.now()

輸出結果

獲取倫敦的當前時間,因為,我們知道我們是東8區,所以應該相差8個小時

datetime.utcnow()

輸出結果

可以看到確實是相差了8個小時。

下面看一個比較常用的字符串型時間轉換為常見的日期格式的操作。

有兩種操作

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

現在分別介紹一些這兩個用法

stamp

我們在來看一下第二中操作時間的做法

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

輸出結果

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

但是以上的兩種做法都有一個問題,就是每次使用時都要編寫一個格式,這個就很方便了,所以這里介紹一個第三方包dateutil 這個庫中有一個類parser 這個類種有一種做法是parser.parse

我們來看一下

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

輸出結果

再看一個例子,

parse('20140608')

輸出結果

可以看到這個處理時間非常方便,可以直接把類似于時間的格式,直接處理成數據的形式,簡單方便。

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

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

輸出結果

在國際上經常能夠看到日期出現在月份之前,可以傳遞dayfirst = True來表明這種情況

如下所示

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

輸出結果

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

parse

輸出結果

可以看到,把42這種無法直接識別的字符串識別成了2042年的當天(上面是一個很好的例子)當然了,其實也可以理解,對于時間來說,最好的當然還是有年月日了,所以這個庫還是很還用的。

各位關注我的朋友應該知道,我最近一直在寫一個系列,那就是pandas練習,了解一點pandas的應該都知道,pandas真的超級好用,不僅可以處理不同格式的數據,還可以畫圖,有一位朋友給我留言說為什么不用pandas直接繪圖,其實我知道pandas能夠繪制圖,但是這通常需要和matplotlib一起用。所以我就沒用panda繪圖。

好吧扯得有點遠,下面我們來看一下pandas處理時間時的一些應用,這個主要包含todatetime,resample,還有用來處理時間索引的data_range

下面我將重點說明這三個部分。

首先我們來看一下pandas.to_datetime,這個模塊可以很好的轉換很多不同的日期表示格式。

老規矩,還是先看一下這個模塊的參數

pandas

我專門做了一個表格來說明這些參數分別代表著什么以及怎么使用

這是我自己按照官方文檔翻譯的,可能會有一些錯誤,還請各位看官謹慎參考

下面我們看一些例子,來加深理解

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

輸出結果

這個例子中轉換的數據是DataFrame

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

輸出結果

這個例子使用的是字符串型

下面我們做一個整型數據的轉換

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時的執行順序,

#首先創建一個數據 s = pd.Series(['3/11/2000','3/12/2000','3/13/2000']*1000) s.head()

輸出結果

在看一下執行用時,這里要使用魔法函數,以及即時函數timeit

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

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

輸出結果

能夠看到著兩個語句執行速度的區別,infer_datetime_format=True的執行速度是infer_datetime_format=False的20多倍

好的到這里to_datetime這個模塊基本到位了,這個可以和to-numeric模塊聯系起來,很方便,很強大,能夠處理的數據類型很多

由于最后一部分resample的內容特別多,所以我想了想還是分兩部分來寫吧。

好的今天就到這里了,我們下期節目再見!

哈哈哈,期待朋友們的點贊!謝謝!!!

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。