<optgroup id="i0uik"></optgroup>
<optgroup id="i0uik"></optgroup>
旗下產業: A產業/ A實習/ A計劃
全國統一咨詢熱線:010-5367 2995
首頁 > 熱門文章 > 大數據分析 > 大數據分析Python的datetime日期時間教程
大數據分析Python的datetime日期時間教程
時間:2020-05-25來源:www.zhuozheng31.icu點擊量:作者:Sissi
時間:2020-05-25點擊量:作者:Sissi



  用Python處理日期和時間可能很麻煩。值得慶幸的是,有一種內置的方法可以簡化該過程:Python datetime模塊。
 

  datetime 幫助我們識別和處理與時間相關的元素,例如日期,小時,分鐘,秒,星期幾,月,年等。它提供各種服務,例如管理時區和夏時制。它可以處理時間戳數據。它可以從字符串中提取星期幾,每月幾號以及其他日期和時間格式。
 

  簡而言之,這是一種處理Python中與日期和時間相關的任何東西的強大方法。因此,讓我們開始吧!
 

  在大數據分析Python的日期時間教程中,我們將詳細了解python datetime函數,包括:
 

  a.創建日期對象

  b.從日期開始計算年月

  c.從日期獲取月日和工作日

  d.從日期獲取小時和分鐘

  e.從日期開始獲取一年中的第幾周

  f.將日期對象轉換為時間戳

  g.將UNIX時間戳字符串轉換為日期對象

  h.處理timedelta對象

  i.得到兩個日期和時間之間的差異

  g.格式化日期:strftime()和strptime()

  k.處理時區

  l.使用Pandas日期時間對象

  1)獲取年,月,日,小時和分鐘

  2)獲取工作日和一年中的某天

  3)將日期對象轉換為DataFrame索引
 

  在學習本教程時,我們建議您在自己的計算機上運行代碼。另外,如果你想在瀏覽器中運行的代碼,并以互動的方式學習與回答檢查,以確保你得到它的權利。
 

  Python日期時間類
 

  在開始編寫代碼之前,值得研究一下datetime 模塊中使用的五個主要對象類。根據我們要執行的操作,我們可能需要使用以下一個或多個不同的類:
 

  1)datetime –允許我們一起操作時間和日期(月,日,年,小時,秒,微秒)。

  2)日期 –使我們可以獨立于時間(月,日,年)操縱日期。

  3)時間 –允許我們獨立于日期(小時,分鐘,秒,微秒)操縱時間。

  4)timedelta -甲 持續時間 的用于操作的日期和測量時間。

  5)tzinfo —用于處理時區的抽象類。
 

  如果這些區別還沒有意義,請不用擔心!讓我們深入研究 datetime 并開始使用它,以更好地了解它們的應用方式。
 

  創建日期對象
 

  首先,讓我們仔細看看一個 datetime 對象。由于 datetime 既是一個模塊又是該模塊中的一個類,所以我們將從datetime 從datetime 模塊中導入該類 開始 。
 

  然后,我們將打印當前日期和時間,以仔細查看datetime 對象中包含的內容 。我們可以使用datetime的 .now() 功能來做到這一點 。我們將打印日期時間對象,然后使用來打印其類型, type() 以便我們仔細觀察。
 

大數據分析Python的日期時間教程
 

  從上面的結果我們可以看到,datetime_object 確實是 該類的一個 datetime 對象 datetime。這包括年,月,日,小時,分鐘,秒和微秒。
 

  從日期中提取年份和月份
 

  現在我們已經看到了是什么讓一個 datetime 對象,我們可能已經猜到了如何 date 和 time 對象看,因為我們知道, date 物體就像 datetime 沒有時間數據和 time 對象就像 datetime 沒有最新數據。
 

  我們還可以解決一些問題。例如,在大多數數據集中,日期和時間信息以字符串格式存儲!另外,我們可能不 想要 所有這些日期和時間數據-如果我們要進行諸如月度銷售分析之類的事情,將事情分解成微秒就不會很有用。
 

  因此,現在讓我們開始深入研究數據科學中的一項常見任務:使用來從字符串中僅提取我們實際想要的元素 datetime。
 

  為此,我們需要做一些事情。
 

  使用strptime()和strftime()處理日期和時間字符串
 

  幸運的是,datetime 包含兩個方法, strptime() 以及 strftime(),用于從字符串對象轉換成 datetime 對象,反之亦然。 strptime() 可以讀取帶有日期和時間信息的字符串并將其轉換為 datetime 對象, strftime() 并將datetime對象轉換回字符串。
 

  當然, strptime() 這不是魔術,它不能將任何 字符串轉換為日期和時間,需要我們的一點幫助來解釋它所看到的內容!但是它能夠讀取日期和時間數據的大多數常規字符串格式(有關更多詳細信息,請參閱 文檔)。讓我們給它一個日期字符串,格式為YYYY-MM-DD,看看它能做什么!

大數據分析Python的日期時間教程
 

  請注意,它strptime() 帶有兩個參數:字符串(my_string)和 "%Y-%m-%d"另一個告訴 strptime() 如何解釋輸入字符串的字符串 my_string。 %Y,例如,告訴它期望字符串的前四個字符為年份。
 

  文檔中提供了這些模式的完整列表 ,我們將在本教程的后面部分更深入地介紹這些方法。
 

  您可能還注意到, 00:00:00 日期中已經添加了時間。這是因為我們創建了一個 datetime 對象,其中必須包含日期 和 時間。 00:00:00 是在我們輸入的字符串中未指定時間的情況下將分配的默認時間。
 

  無論如何,我們希望將日期的特定元素分開進行分析。一種方法可以做到這一點使用內置的DateTime對象的類屬性,像 .month 或 .year:

大數據分析Python的日期時間教程
 

  從日期獲取每月的某天和一周的某天
 

  讓我們做更多的提取,因為這是一個非常普通的任務。這次,我們將嘗試從中獲取每月的某天和一周的某天 my_date。Datetime使用它的.weekday() 函數將星期幾作為數字,但是我們可以使用calendar 模塊和稱為方法將其 轉換為文本格式(即,星期一,星期二,星期三…) day_name。
 

  我們將從導入開始 calendar,然后使用 .day and .weekday() on my_date。從那里,我們可以像這樣獲取文本格式的星期幾:

大數據分析Python的日期時間教程
 

  等一下,看起來有點奇怪!一周的第三天應該是星期三,而不是星期四,對吧?
 

  讓我們day_name 使用for循環仔細查看該 變量:

大數據分析Python的日期時間教程
 

  現在我們可以看到Python從星期一開始,從索引0開始計數,而不是從1開始計數。因此,將數字3轉換為“ Thursday”是有道理的。
 

  從Python日期時間對象獲取小時和分鐘
 

  現在,讓我們深入研究時間,并從datetime對象中提取小時和分鐘。就像我們上面對月份和年份所做的操作一樣,我們可以使用類屬性 .hour 并 .minute 獲取一天中的小時和分鐘。
 

  讓我們使用.now() 函數設置新的日期和時間。截至撰寫本文時,它是2019年10月25日上午10:25。當然,根據選擇運行此代碼的時間,您將獲得不同的結果!

大數據分析Python的日期時間教程
 

  從日期時間對象獲取一年中的星期
 

  我們也可以用來做更奇特的事情 datetime。例如,如果我們想知道一年中的哪一周?


  我們可以從datetime 具有該.isocalendar() 功能的對象中 獲取年,年中的星期幾和星期幾 。
 

  具體來說, isocalendar() 返回具有ISO年,周號和工作日的元組。在 ISO日歷 是基于公歷廣泛使用的標準日歷。您可以在該鏈接上詳細了解它,但是出于我們的目的,我們需要知道的是它作為常規日歷運行,從每周的星期一開始。

大數據分析Python的日期時間教程
 

  請注意,在ISO日歷中,星期從1開始計數,因此這里5代表星期中的正確日期:星期五。
 

  從上面我們可以看到,這是一年的第43周,但是如果我們想隔離該數字,則可以像對其他任何Python列表或元組那樣使用索引來實現:

大數據分析Python的日期時間教程
 

  將日期對象轉換為Unix時間戳和反之
 

  在編程中,遇到作為時間戳存儲的時間和日期數據,或者想以Unix時間戳格式存儲自己的數據并不少見。
 

  我們可以使用datetime的內置timestamp() 函數來做到這一點 ,該函數將一個 datetime 對象作為參數并以時間戳格式返回該日期和時間:

大數據分析Python的日期時間教程
 

  同樣,我們可以使用進行反向轉換fromtimestamp()。此 datetime 函數以時間戳(浮點格式)作為參數并返回一個 datetime 對象,如下所示:

大數據分析Python的日期時間教程
 

  使用Timedelta對象測量時間跨度
 

  通常,我們可能想使用Python datetime測量時間跨度或持續時間。我們可以使用其內置timedelta 類來做到這一點 。甲 timedelta 對象表示的兩個日期或時間之間的時間量。我們可以使用它來測量時間跨度,或者通過對日期或時間進行加減來操縱日期或時間,等等。
 

  默認情況下,timedelta對象的所有參數均設置為零。讓我們創建一個新的timedelta對象,該對象長兩個星期,然后看一下它的外觀:

大數據分析Python的日期時間教程
 

  請注意,我們可以使用timedelta class屬性獲得以天為單位的持續時間.days。正如我們在其文檔中看到的那樣 ,我們還可以以秒或微秒為單位獲取該持續時間。
 

  讓我們創建另一個timedelta持續時間以進行更多練習:

大數據分析Python的日期時間教程
 

  現在,讓我們開始使用timedelta對象和datetime對象來做一些數學運算!具體來說,讓我們在當前時間和日期上添加一些不同的持續時間,以查看15天后(兩周前的日期)后的日期。
 

  為此,我們可以使用 + 或 - 運算符在datetime對象中添加timedelta對象或從中減去。結果將是datetime對象,加上或減去我們的timedelta對象中指定的持續時間??岚?
 

  (注意:在下面的代碼中,它是10月25日上午11:12;由于我們datetime 使用該.now() 函數獲取對象 ,因此您的結果將根據運行代碼的時間而有所不同 )。

大數據分析Python的日期時間教程
 

  請注意,這些數學運算的輸出仍然是一個datetime 對象。
 

  找出兩個日期和時間之間的差異
 

  與上面的操作類似,我們還可以從另一個日期中減去一個日期,以使用datetime找出它們之間的時間跨度。
 

  由于此數學運算的結果是一個 持續時間,因此當我們從另一個日期減去一個日期時產生的對象將是一個 timedelta 對象。
 

  在這里,我們將創建兩個 date 對象(注意,這些datetime 對象與對象的工作原理相同 ,只是不包含時間數據),并從另一個對象中減去一個對象以找到持續時間:

大數據分析Python的日期時間教程
 

  上面,為了清楚起見,我們僅使用日期,但是我們可以對datetime 對象執行相同的操作以獲取更精確的度量,包括小時,分鐘和秒:

大數據分析Python的日期時間教程
 

  格式化日期:有關strftime()和strptime()的更多信息
 

  我們在 前面strftime() 和 strptime()前面進行了簡要介紹 ,但讓我們仔細研究這些方法,因為它們對于Python中的數據分析工作通常很重要。
 

  strptime() 是我們之前使用的方法,您會記得它可以將以文本字符串格式設置的日期和時間轉換為datetime對象,格式如下:
 

  time.strptime(string, format)
 

  請注意,它帶有兩個參數:
 

  1)string-我們要轉換的字符串格式的時間
 

  2)format-字符串中時間的特定格式,以便strptime()可以正確解析它
 

  這次嘗試轉換另一種日期字符串。 該站點 對于查找有助于strptime() 解釋我們的字符串輸入所需的格式代碼是非常有用的參考 。

大數據分析Python的日期時間教程
 

  現在,讓我們做一些更高級的操作,以實踐到目前為止所學的一切!我們將從字符串格式的日期開始,將其轉換為datetime對象,然后看一下幾種不同的格式化方式(dd / mm和mm / dd)。
 

  然后,堅持使用mm / dd格式,將其轉換為Unix時間戳。然后,我們將它轉換成一個 datetime 對象,并轉換 是使用一些不同的回字符串 的strftime模式 來控制輸出:

大數據分析Python的日期時間教程


  這是您可以使用備忘單保存的圖像,用于常見的,有用的strptime和strftime模式:

大數據分析Python的日期時間教程
 

  讓我們用這些做更多的練習:

大數據分析Python的日期時間教程
 

  處理時區
 

  當涉及時區時,在Pythin中處理日期和時間會變得更加復雜。值得慶幸的是,該 pytz 模塊可以幫助我們處理跨時區轉換。它還可以在使用夏令時的地點處理夏令時。
 

  我們可以使用該 localize 函數向Python日期時間對象添加時區位置。然后,我們可以使用該函數 astimezone() 將現有的本地時區轉換為我們指定的任何其他時區(它將要轉換成的時區作為參數)。
 

  例如:

大數據分析Python的日期時間教程
 

  使用包含多個不同時區的數據集時,此模塊可以幫助簡化工作。
 

  使用熊貓Datetime對象
 

  數據科學家之所以喜歡 pandas ,有很多原因。其中之一是它包含用于處理時間序列數據的廣泛功能。與datetime 自身非常相似 ,熊貓同時具有 datetime 和 timedelta 對象,分別用于指定日期,時間和持續時間。
 

  我們可以使用以下功能將日期,時間和持續時間文本字符串轉換為pandas Datetime對象:
 

  1)to_datetime():將字符串日期和時間轉換為Python datetime對象。

  2)to_timedelta():以天,小時,分鐘和秒為單位查找時間差異。
 

  正如我們將看到的那樣,這些函數實際上非常擅長于通過自動檢測其格式將字符串轉換為Python datetime對象,而無需我們使用strftime模式對其進行定義。
 

  讓我們看一個簡單的例子:

大數據分析Python的日期時間教程
 

  請注意,即使我們給它提供了一個包含一些復雜因素的字符串,例如“ th”和“ sep”,而不是“ Sep”?;?ldquo; 9月”,pandas能夠正確解析字符串并返回格式化日期。
 

  我們還可以使用熊貓(及其一些附屬的numpy功能)將日期范圍自動創建為熊貓系列。例如,下面我們從上面定義的日期開始創建一系列十二個日期。然后,我們使用pd.date_range()以下命令從預定義日期開始創建一系列不同的日期 :

大數據分析Python的日期時間教程
 

  以熊貓為單位獲取年,月,日,小時,分鐘
 

  使用dt 所有列的屬性,我們可以輕松地從熊貓數據框的列中的日期獲取年,月,日,小時或分鐘。例如,我們可以 df['date'].dt.year 用來僅從包含完整日期的熊貓列中提取年份。
 

  為了探索這一點,讓我們使用上面創建的系列之一來制作一個快速的DataFrame:

大數據分析Python的日期時間教程
 

  現在,讓我們使用相關的Python datetime(通過訪問dt)屬性為日期的每個元素創建單獨的列 :
 

大數據分析Python的日期時間教程

  獲取工作日和一年中的某天
 

  熊貓還能夠從其datetime對象中獲取其他元素,例如星期幾和一年中的一天。同樣,我們可以使用 dt 屬性來執行此操作。請注意,這里與Python一般一樣,星期從星期一的索引0開始,所以星期5是 星期六。

大數據分析Python的日期時間教程
 

  將日期對象轉換為DataFrame索引
 

  我們還可以使用pandas將datetime列添加到DataFrame的索引中。這對于諸如探索性數據可視化之類的任務可能非常有用,因為matplotlib將識別出DataFrame索引是一個時間序列,并相應地繪制數據。
 

  為此,我們要做的就是重新定義 df.index:

大數據分析Python的日期時間教程
 

  結論
 

  在大數據分析Python的日期時間教程中,我們深入研究了Python日期時間,并且還對熊貓和日歷模塊做了一些工作。我們已經介紹了很多內容,但是請記?。鹤詈玫膶W習方法是親自編寫代碼!
 

  如果您想練習datetime 使用交互式答案檢查來編寫代碼,請查看我們的 大數據分析Python課程 , 以通過交互式答案檢查和瀏覽器內代碼運行來學習Python中的日期時間。



 

?2007-2019/北京漫動者教育科技有限公司版權所有
備案號:京ICP備12034770號

?2007-2019/ www.zhuozheng31.icu 北京漫動者教育科技有限公司 備案號:京ICP備12034770號 監督電話:010-62568622 郵箱:bjaaa@aaaedu.cc

久久久大香菇精品