首頁  >  文章  >  後端開發  >  如何在Python Pandas中按時間間隔分組資料?

如何在Python Pandas中按時間間隔分組資料?

PHPz
PHPz轉載
2023-08-29 14:13:02911瀏覽

如何在Python Pandas中按时间间隔分组数据?

資料分析日益成為每個產業的重要面向。許多組織高度依賴資訊、制定策略決策、預測趨勢並了解消費者行為。在這樣的環境下,Python 的 Pandas 庫作為一個強大的設備應運而生,提供了不同範圍的功能來成功地控制、分解和想像訊息。這些強大的功能之一包括按時間間隔對資料進行分組。

本文將重點放在如何使用Pandas按時間間隔將資料分組。我們將探討語法、易於理解的演算法、兩種不同的方法以及基於這些方法的兩個完全可執行的實際程式碼。

文法

我們將重點關注的方法是Pandas的groupby()函數,特別是它的重採樣方法。語法如下:

df.groupby(pd.Grouper(key='date', freq='T')).sum()

在語法:

  • df − 您的DataFrame。

  • groupby(pd.Grouper()) − 用於分組資料的函數。

  • key − 您想要依照的列進行分組。在這裡,它是 'date' 列。

  • freq − 時間間隔的頻率。 ('T'代表分鐘,'H'代表小時,'D'代表天,等等。)

  • sum() - 聚合函數。

演算法

這是一種按時間間隔對資料進行分組的分步演算法 -

  • 導入必要的函式庫,即 Pandas。

  • 載入或建立您的DataFrame。

  • 25edfb22a4f469ecb59f1190150159c6e388a4556c0f65e1904146cc1a846bee將日期列轉換為datetime對象,如果尚未轉換。 94b3e26ee717c64999d7867364b1b4a3bed06894275b65c1ab86501b08a632eb
  • 使用pd.Grouper在日期列上套用groupby()函數,使用所需的頻率。

  • 應用 sum()、mean() 等聚合函數

  • #列印或儲存結果。

方法

我們將考慮兩種不同的方法 −

方法一:依日頻率分組

在這個範例中,我們建立了一個包含一系列日期和值的DataFrame。然後,我們按照每天的頻率對資料進行分組,並對每天的值進行求和。

範例

# Import pandas
import pandas as pd

# Create a dataframe
df = pd.DataFrame({
   'date': pd.date_range(start='1/1/2022', periods=100, freq='H'),
   'value': range(100)
})

# Convert 'date' to datetime object, if not already
df['date'] = pd.to_datetime(df['date'])

# Group by daily frequency
daily_df = df.groupby(pd.Grouper(key='date', freq='D')).sum()

print(daily_df)

輸出

            value
date             
2022-01-01    276
2022-01-02    852
2022-01-03   1428
2022-01-04   2004
2022-01-05    390

說明

引入 Pandas 庫是任何資料操作工作的絕對要求,也是我們在此程式碼中真正要做的主要事情。利用 pd.DataFrame() 策略是建構 DataFrame 期間的後續階段。 “日期”和“值”部分組成了此資料幀。 pd.date_range() 函數用於在「日期」欄位中建立一系列每小時時間戳,而「值」部分僅包含整數範圍。 “日期”列是此互動的結果。

儘管我們的「日期」列目前處理日期時間物件的方式不同,但我們逐漸使用 pd.to_datetime() 函數來確保它被更改。此步驟至關重要,因為收集活動的進度取決於該段是否具有日期時間物件的資訊類型。

在此之後,為了按每日('D')頻率對資料進行分組,我們使用groupby()函數與pd.Grouper()函數結合。在進行分組後,我們使用sum()函數將所有屬於同一天的'value'元素合併為一個總數。

最後,分組的 DataFrame 被寫出,顯示每天值的總和。

方法 2:以自訂頻率分組,例如 15 分鐘間隔

範例

# Import pandas
import pandas as pd

# Create a dataframe
df = pd.DataFrame({
   'date': pd.date_range(start='1/1/2022', periods=100, freq='T'),
   'value': range(100)
})

# Convert 'date' to datetime object, if not already
df['date'] = pd.to_datetime(df['date'])

# Group by 15-minute frequency
custom_df = df.groupby(pd.Grouper(key='date', freq='15T')).sum()

print(custom_df)

輸出

                     value
date                      
2022-01-01 00:00:00    105
2022-01-01 00:15:00    330
2022-01-01 00:30:00    555
2022-01-01 00:45:00    780
2022-01-01 01:00:00   1005
2022-01-01 01:15:00   1230
2022-01-01 01:30:00    945

說明

下一個技術從與第一個相似的Pandas函式庫的導入開始,然後建立一個DataFrame。這個DataFrame與先前模型中使用的相同;唯一的差異在於 'date' 列現在包含以分鐘為單位的時間戳記。

'date'列應該是一個datetime對象,以使收集活動能夠正常工作,而pd.to_datetime()函數確保會發生這種情況。

在本節中,我們使用位於 groupby() 方法內部的 pd.Grouper() 函數,利用 15 分鐘(「15T」)的專門頻率來執行分組運算。為了聚合每個 15 分鐘時間間隔的「值」條目,我們使用 sum() 函數,這與第一種方法中使用的方法相同。

透過顯示新分組的DataFrame完成了程式碼,該DataFrame顯示了每個15分鐘時間間隔內'value'列的總和。

結論

Pandas的強大功能包括各種資料操作,其中之一是按時間間隔將資料分組。透過使用groupby()函數結合pd.Grouper,我們可以根據每日頻率或自訂頻率有效地對資料進行分段,從而實現高效、靈活的資料分析。

按時間間隔對資料進行分組的功能使分析師和企業能夠從資料中提取有意義的見解。無論是計算每天的銷售額總和、獲取每小時的平均溫度,還是計算每15 分鐘的網站點擊量,按時間間隔對數據進行分組可以讓我們更好地了解數據中隨時間變化的趨勢、模式和異常值。

請記住,Python 的 Pandas 函式庫是一個強大的資料分析工具。學習如何使用其功能(例如 groupby 方法)可以幫助您成為更有效率、更熟練的資料分析師或資料科學家。

以上是如何在Python Pandas中按時間間隔分組資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除