快樂學習Python,如何正確使用pandas處理時間型別資料?

Mondo 科技 更新 2024-02-02

在日常資料分析中,資料通常按日期進行分析。 例如,我們需要通過使用者的下單時間來分析使用者在不同時間段對產品的偏好; 例如,使用訪問日誌的訪問時間來分析系統的訪問週期和負載,為不同時間段的資源分配提供依據。 例如,通過使用者較短的刷牙時間分析使用者的行為特徵和工作時間和工作型別; 可以看出,在資料分析中,基於日期(時間)進行分析的情況還有很多。

同時,根據資料的記錄方式,儲存時間的格式也不同。 例如,一些系統記錄以 2024 2 1 的格式記錄; 部分系統記錄格式為2024-02-01 09:31:52; 有些會直接儲存時間戳(1698724307189)進行記錄; 儲存時間的方法有很多種,所以我們在這裡就不舉例了。

如果想要完全實現對不同格式的相容性,往往需要寫很多瑣碎的**。 而這只是最簡單的提取年、月和日。 其他的,如時間的加法和減法,就不容易完成。 作為最強大的資料分析工具集,熊貓自然也提供了一套非常強大的時間資料處理工具,下面我們一起來看看吧。

timestamp:表示某個時間點,例如使用者下單的時間,或者訪問系統的時間。 DateTimeIndex:表示時間點的序列,相當於由多個時間戳組成的列表。 Timedelta:單個持續時間。 例如,3 分鐘、5 分鐘等都被視為持續時間,並且持續時間具有不同的單位。 常見的是天、小時、分鐘等。 TimeDeltaIndex:一系列多個持續時間,類似於 DateTimeIndex 和 Timestamp 之間的關係。 dataOffset:日曆維度中時間的偏移量。 例如,如果時間是 2024 年 2 月 1 日,日曆偏移了一天,則為 2024 年 1 月 31 日。 資料偏移提供了多種偏移方法,例如按工作日偏移,以便從周五上午 10 點到下乙個工作日的偏移時間為周一上午 10 點。 在 pandas 中進行時間處理時,最常使用以下場景:

1.將各種格式的時間資料轉換為時間戳型別。

2.使用timestamp型別獲取時間的各種屬性。 例如日期、時間、星期幾等。

3.使用時間戳和時間增量來計算時間,例如加法和減法。 例如,將當前時間增加 3 分鐘。 如果需要偏移日曆尺寸,則需要將其與偏移一起使用。

4. 按時間過濾資料幀中的記錄。 您需要將時間列設定為 datetimeindex,然後像使用普通索引一樣按時間進行篩選。

在Python中,解析時間資料本質上是先將資料轉換為pandas的時間戳型別,因為只有在轉換之後才能進行後續操作。

Pandas 提供了一種 datetime 方法,用於將不同型別的時間資料轉換為時間戳型別。

字串是一種常見的時間儲存格式,to datetime 函式支援幾乎所有主要表示法,例如。

import pandas as pd

表示日期 + 時間的常用方法。

pd_time = pd.to_datetime("2023-08-29 17:17:22")

print(type(pd_time),pd_time)

時間縮寫並以 12 小時格式表示。

pd_time1 = pd.to_datetime("2023-08-29 5:17pm")

print(type(pd_time1), pd_time1)

表示法。

pd_time2 = pd.to_datetime("08/29/2023")

print(type(pd_time2), pd_time2)

結合英語表示的月份。

pd_time3 = pd.to_datetime("aug 29, 2023")

print(type(pd_time3), pd_time3)

執行後輸出:

從上面的輸出中可以看出,To DateTime 函式返回時間戳型別。 如果是中文環境,也可以解析“February 1, 2024”這樣的格式,我們可以通過自定義格式字串解析到datetime。 例如,以下 **:

使用自定義格式字串解析任意時間字串。 

pd_time4 = pd.to_datetime("2月 1, 2024", format="%ymmmm%dday")

print(type(pd_time4), pd_time4)

輸出如下:

例如,我們上面談到的資料來源儲存是有時間戳的,所以我們的轉換方法如下:

time_value = 1620565604

將數字時間戳轉換為時間戳型別,並指定單位(以秒為單位)。

pd_time5 = pd.to_datetime(time_value, unit="s")

print(type(pd_time5), pd_time5)

輸出如下:

這裡需要注意的是:如果我們需要加入乙個時區,我們可以使用 tz localize("asia/shanghai") 指定。

通過分別指定年、月、日等資訊來建立時間戳物件。 

pd_time7 = pd.timestamp(year=2024, month=2, day=1, hour=21)

print(type(pd_time7),pd_time7)

獲取當前時間。

pd_time8 = pd.timestamp("now")

print(type(pd_time8),pd_time8)

輸出如下:

當我們得到timestamp物件時,我們可以使用timestamp物件提供的方法來獲取各種時間屬性,獲取屬性的常用方法如下:

print("當前時間物件:", pd_time8)

print("星期幾,星期一是 0:", pd_time8.dayofweek)

print("星期幾,字串表示:", pd_time8.day_name())

print("一年中的幾天:", pd_time8.dayofyear)

print("每個月有幾天:",pd_time8.daysinmonth)

print("今年是不是閏年", pd_time8.is_leap_year)

print("當前日期是否為當月的最後一天", pd_time8.is_month_end)

print("當前日期是否為該月的第一天", pd_time8.is_month_start)

print("當前日期是否為季度的最後一天", pd_time8.is_quarter_end)

print("當前日期是否為季節的第一天", pd_time8.is_quarter_start)

print("當前日期是否為當年的最後一天", pd_time8.is_year_end)

print("當前日期是否為當年的第一天", pd_time8.is_year_start)

print("當前季度:", pd_time8.quarter)

print("當前時區:", pd_time8.tz)

print("一年中的週數:", pd_time8.week)

print("年:", pd_time8.year)

print("月:", pd_time8.month)

print("日:",pd_time8.day)

print("小時:", pd_time8.hour)

print("紀要:", pd_time8.minute)

print("秒:", pd_time8.second)

輸出如下:

簡單來說,時間的計算方式是當前時間之後的分鐘、小時或秒。因為時間的資料計算比較特殊,所以月份涉及的天數和分鐘數需要除以60,小時數換算成分鐘,也需要除以60。 然後我們就可以用熊貓來計算時間了。 pandas 的時間計算是通過 timestamp 物件和 timedelta 物件的混合實現的。

從字串。

delta1 = pd.timedelta('0.5 days')

print("半天:", delta1)

delta2 = pd.timedelta("2 days 3 hour 20 minutes")

print("2 天 3 小時 20 分鐘", delta2)

delta3 = pd.timedelta("1 days 20:36:00")

print("1 天 8 小時 36 分鐘:", delta3)

從單位時間建立。

delta4 = pd.timedelta(days = 1.5)

print("1天半:", delta4)

delta5 = pd.timedelta(days = 10, hours= 9)

print("十天九小時:", delta5)

由時間縮寫建立。

W:代表周、周。

d:代表日期。

h:表示小時數。

m:表示分鐘。

s:代表秒。

delta6 = pd.timedelta("2w3d")

print("兩周零三天:", delta6)

delta7 = pd.timedelta("6h30m12s")

print("6小時30分12秒:", delta7)

獲取當前時間。 

current_time = pd.timestamp("now")

print("當前時間:", current_time)

獲取當前時間減去兩周時間。

two_week_ago = current_time - pd.timedelta("2w")

print("兩周前:", two_week_ago)

獲取當前時間 30 天和 7 小時後的時間。

future_time = current_time + pd.timedelta("30d7h")

print("30 天零 7 小時後的時間:",future_time)

執行後的輸出如下:

除了計算時間增量和時間戳外,還可以減去兩個時間戳來獲得持續時間:

去年國慶節早上八點建立。 

national_day = pd.to_datetime("2023-10-01 08:00:00")

計算當前時間與國慶時間的時間增量

delta8 = current_time - national_day

print("去年的國慶節已經過去了:", delta8)

輸出為:

讓我們看一下我們如何利用時間來查詢資料幀中的資料。

你可以自己準備示例資料,也可以直接建立乙個新的csv檔案來做模擬資料,如果你不想做,可以留言!

將示例資料載入到 DataFrame 中後,需要將 time 字段設定為 datetimeindex。 轉換分為兩個步驟:

第 1 步:將時間列轉換為時間戳物件。

將時間列轉換為時間戳物件。 

df_log["time"] = pd.to_datetime(df_log["time"])

檢視時間列。

df_log["time"]

執行後,輸出:

name: time, length: 1000, dtype: datetime64[ns]

第 2 步:將新的時間列設定為索引。

設定時間列以索引 df 日誌。 

df_log.set_index("time", inplace=true)

檢視最新的資料幀

df_log

執行後輸出:

從圖中可以看出,時間列已經取代了之前的序列號,成為了資料幀的索引。

完成上述步驟後,我們可以按時間過濾 DataFrame 中的資料。

查詢9月1日至9月15日的資料。

df_log.loc["2018-09-01" : "2018-09-15",:]

選擇 8 月至 9 月的資料。

df_log.loc["2018-08" : "2018-09", :

選擇 8 月 1 日至 9 月 2 日下午 2 點前的資料。

df_log.loc["2018-08-01" : "2018-09-02 14:00:00", :

執行上述**後,我們可以看到按時間過濾的資料幀對應的資料。

歡迎閱讀 *** 伺服器技術選擇 2024 答案書

相關問題答案

    快樂學習Python,資料分析方法獲取資料公共資料或爬蟲

    學習python資料分析的第一步是先獲取資料,為什麼資料採集是資料分析的第一步,很明顯 資料分析,必須有資料才能分析。作為個人,您如何獲得用於分析的資料集?獲取資料集的第一種方法是獲取業內有人編譯的資料集。目前,大資料行業持續火爆,資料本身已經成為乙個行業,其中自然包括資料集。這些由某人組合在一起的...

    如何正確使用基肥?植物營養指南

    底肥是指在作物種植或定苗前與土壤結合施用的肥料,其主要作用是為作物提供良好的土壤條件和基本養分需求。基肥的使用和用量直接影響作物的生長發育和產量和品質。那麼,如何正確使用基肥呢?本文將從以下幾個方面為您介紹 基肥的種類應根據作物的需要和土壤的性質來選擇,以達到最佳的施肥效果。一般來說,基肥的主要成分...

    如何在Python中高效編寫程式碼?Python實用程式設計技巧分享!

    Python 是一種高效 易學且功能強大的程式語言,具有許多實用的程式設計技巧,可以幫助開發人員更高效地編寫。以下是一些實用的 Python 程式設計技巧的細分和示例 .列表推導式 列表推理是一種在 Python 中建立和操作列表的簡潔 易於閱讀的方法。它可以使 更簡潔,減少冗餘。例如,將列表中的所...

    如何正確使用PVA海綿?

    正確使用PVA海綿。PVA海綿是一種廣泛應用於各個行業的高分子材料,具有優良的吸水性 柔韌性 耐磨性和耐腐蝕性。然而,正確使用PVA海綿對於確保其效能和壽命至關重要。下面詳細介紹了如何正確使用PVA海綿。 了解PVA海綿的特性。在使用PVA海綿之前,首先需要了解其特性。PVA海綿具有吸水性強 柔韌性...

    如何正確使用三九貼紙?

    昨天 月日 時分,迎來了冬至節氣,這個節氣之後,氣溫會急劇下降,自古以來我們鄉下民間就有 數九 的習俗,從冬至開始,每九天數一 九 數 九十九 八十一天,出九 後寒冷的冬天就快結束了,然後是溫暖的春天。冬至後的第三個九天是 三個九 是節日中的 大寒 也是一年中最冷的一天,但也是夏病冬防 冬病冬治的最...