時間數(shù)據(jù)咋處理?介紹6款超好用的 Python 時間庫數(shù)據(jù)分析1480關(guān)注共 3049字,需瀏覽 7分鐘 ·2020-08-29 12:05 開源最前線(ID:OpenSourceTop)鏈接:https://opensource.com/article/18/4/python-datetime-libraries寫過Python程序的人都知道,Python日期和時間的處理非常繁瑣和麻煩。除了將字符串轉(zhuǎn)換為更有用的 Python 對象之外,還有許多庫具有一些有用的方法和工具,可以讓你更輕松地進(jìn)行時間測試、將時間轉(zhuǎn)換為不同的時區(qū)、以人類可讀的格式輸出時間信息,本文將介紹以下六個Python的時間日期庫:● Dateutil● Arrow● Moment● Maya● Delorean● Freezegun內(nèi)建的 datetime 模塊在介紹其他庫之前,讓我們回顧以下如何使用datetime模塊將日期字符串轉(zhuǎn)換為Python日期時間對象。假設(shè)我們從API接收到這個日期字符串,并且需要它作為Python datetime對象存在:2018-04-29T17:45:25Z該字符串包括:● YYYY-MM-DD格式的日期● 字母“T”表示即將到來的時間● HH:II:SS的時間格式● 指示此時間的時區(qū)指示符“Z”采用UTC要使用該datetime模塊將此字符串轉(zhuǎn)換為Python datetime對象,你可以首先從strptime開始。datetime.strptime接收日期字符串和格式化字符并返回一個Python datetime對象。我們必須手動將日期時間字符串的每個部分轉(zhuǎn)換為Python datetime.strptime可以理解的格式化字符串。四位數(shù)的年份表示為%Y。兩位數(shù)的月份是%m。兩位數(shù)的日期是%d。24小時制的時間,%H表示小時數(shù),分鐘數(shù)用%M表示,秒用%S表示。由于字符串中的“Z”表示此日期時間字符串采用UTC,所以我們可以在格式中忽略此項。此轉(zhuǎn)換的代碼如下所示:格式化字符串很難閱讀和理解。有些人不太了解閱讀datetime代碼的人就會發(fā)現(xiàn)這很難理解,盡管其含義已有文檔說明,但仍然很難閱讀。讓我們看看其他庫如何處理這種轉(zhuǎn)換。1、DateutilDateutil模塊為datetime模塊提供了一些擴(kuò)展,依然以上面的示例為例,實(shí)現(xiàn)相同的結(jié)果則要簡單得多:dateutil解析后可以自動返回字符串的時區(qū)。由于我們采用UTC,你可以看到返回了datetime對象。如果你想parse完全忽略時區(qū)信息,并返回一個原生的DateTime對象,你可以傳遞參數(shù)?ignoretz=True?給parse,像這樣:Dateutil還可以解析更多可讀的日期字符串:dateutil還提供了relativedelta,用于計算兩個日期時間之間的時差或從日期時間添加/刪除,rrule用于創(chuàng)建重復(fù)日期時間,tz用于處理時區(qū)以及其他工具。2、ArrowArrow是另一個庫,其目標(biāo)是進(jìn)行操作,格式化,并處理更合理的日期和時間。它包括dateutil模塊,根據(jù)其文檔描述Arrow旨在“幫助你使用更少的代碼來處理日期和時間”。要返回我們的解析示例,下面介紹如何使用 Arrow 將日期字符串轉(zhuǎn)換為 Arrow 的 datetime 類的實(shí)例:你也可以在第二個參數(shù)中指定get() 格式,就像使用strptime一樣,Arrow會盡力解析你提供的字符串,get() 返回 Arrow 的 datetime 類的一個實(shí)例。要使用Arrow來獲取 Python datetime對象,可以如下所示:通過Arrow datetime類的實(shí)例,你還可以訪問Arrow的其他有用方法。例如,它的humanize()方法將日期時間解析成可讀的短語,如下所示:你可以在Arrow文檔中閱讀更多有用的方法3、MomentMoment的創(chuàng)作者認(rèn)為它是“測試版”,但即使它處于早期階段,卻非常受歡迎的,因此它出現(xiàn)在推薦名單內(nèi)Moment將字符串轉(zhuǎn)換的方法很簡單,類似于我們之前提到的庫:和其他庫一樣,它最初返回它自己的datetime類的實(shí)例。要返回Python datetime對象,請?zhí)砑右粋€date()調(diào)用。這會將Moment datetime類轉(zhuǎn)換為Python日期時間對象。Moment還提供了使用人類可讀語言創(chuàng)建新日期的方法。如為明天創(chuàng)建一個日期:它add()和subtract()命令采取關(guān)鍵字參數(shù),使日期的操作變得簡單,以及為了獲得后天的日期,Moment會使用下面的代碼:4、MayaMAya包含了其他流行的庫,諸如Humanize,pytz和pendulum等等。該項目的目標(biāo)是讓人們更容易處理日期。Maya的README包含幾個有用的示例。以下是如何使用Maya重現(xiàn)上面解析示例:請注意,我們必須在.datetime()之后調(diào)用maya.parse()。如果我們跳過這一步,Maya將返回MayaDT類的一個實(shí)例:。由于Maya有許多方法和datetime庫中的一樣,因此它可以使用其MayaDT類的實(shí)例來執(zhí)行諸如使用slang_time()方法將timedeltas轉(zhuǎn)換為純文本語言,以及將日期時間間隔保存在單個類的實(shí)例操作中。以下是如何使用Maya將日期時間表示為人類可讀的短語:很顯然,slang_time()的輸出結(jié)果會根據(jù)你與datetime對象的距離長短而改變。5、DeloreanDelorean以《Back to the Future》電影中的時間旅行汽車命名的,適用于操縱日期時間:將日期時間轉(zhuǎn)換為其他時區(qū),并添加或減去時間。Delorean需要有效的Python Datetime才能執(zhí)行,所以如果你需要使用日期時間字符串,最好將其與上述庫中的一個配合使用。例如,將Maya與Delorean一起使用:現(xiàn)在,在日期時間對象d_t可供您使用的情況下,你可以使用Delorean進(jìn)行操作,例如將日期時間轉(zhuǎn)換為美國東部時區(qū):你看小時數(shù)已經(jīng)從17變?yōu)?3了,你還可以使用自然語言方法來操作 datetime 對象。2018年4月29日之后的下個星期五(我們使用的日期):6、FreezegunFreezegun是一個可以幫助你在Python代碼中測試特定日期的庫。使用@freeze_time裝飾器,你可以設(shè)置測試條件下的具體日期和時間,所有datetime.datetime.now(),datetime.datetime.utcnow()等都會返回你指定的日期和時間。例如:要跨時區(qū)進(jìn)行測試,可以將tz_offset參數(shù)傳遞給裝飾器。該freeze_time裝飾同樣能夠處理更通俗易懂的語言日期,例如@freeze_time( April 4, 2017 )。上面提到的每個庫都有各自不同的功能。可能很難確定哪一個最適合你的需求。正如Maya的創(chuàng)作者 Kenneth Reitz說:“所有這些項目相互補(bǔ)充,它們都很友好。”這些庫各自都具備一些功能,但并不都是完美的。有些擅長時間操作,有些擅長解析。但他們都有共同的目標(biāo),即讓時間日期相關(guān)的操作都變得簡單。當(dāng)你發(fā)現(xiàn)Python的內(nèi)置datetime模塊已經(jīng)不夠用的時候,你可以選擇以上的某一個庫嘗試看看。- 完 - 瀏覽 30點(diǎn)贊 評論 收藏 分享 手機(jī)掃一掃分享分享 舉報 評論圖片表情視頻評價全部評論推薦 6 款 超好用的 Python 時間庫Python 知識大全06 款 超好用的 Python 時間庫Python亂燉06 款 超好用的 Python 時間庫小詹學(xué)Python06 款 超好用的 Python 時間庫戀習(xí)Python06 款 超好用的 Python 時間庫Python網(wǎng)絡(luò)爬蟲與數(shù)據(jù)挖掘06 款 超好用的 Python 時間庫數(shù)據(jù)管道0Python Delorean時間處理庫Delorean 可以是你用非常方便的方法來處理數(shù)據(jù)和時間。設(shè)置時區(qū),截取到秒,分,小時,或者甚至使Python Delorean時間處理庫Delorean可以是你用非常方便的方法來處理數(shù)據(jù)和時間。設(shè)置時區(qū),截取到秒,分,小時,或者甚至使用特殊方法從一個數(shù)據(jù)迭代到另一個。瀏覽下文檔,里面有很多示例。示例代碼:from?datetime?i今天分享 6 款超好用的 Python 時間庫Crossin的編程教室06款超好用的數(shù)據(jù)可視化工具1、Napkin AI這是一個能將你的想法、知識、商業(yè)故事進(jìn)行可視化表達(dá)的AI工具。它支持文本轉(zhuǎn)圖表、流程圖、信息圖等視覺元素,生成的圖表還支持二次編輯,支持多格式導(dǎo)出,包括PNG、SVG、PDF格式。基礎(chǔ)功能免費(fèi)、高級功能收費(fèi)。傳送門:https://app.napkin.ai/2、Flouris點(diǎn)贊 評論 收藏 分享 手機(jī)掃一掃分享分享 舉報