目錄
文法
演算法
方法
方法一:依日頻率分組
範例
輸出
說明
方法 2:以自訂頻率分組,例如 15 分鐘間隔
結論
首頁 後端開發 Python教學 如何在Python Pandas中按時間間隔分組資料?

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

Aug 29, 2023 pm 02:13 PM

如何在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。

  • 將日期列轉換為datetime對象,如果尚未轉換。

  • 使用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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何解決Linux終端中查看Python版本時遇到的權限問題? 如何解決Linux終端中查看Python版本時遇到的權限問題? Apr 01, 2025 pm 05:09 PM

Linux終端中查看Python版本時遇到權限問題的解決方法當你在Linux終端中嘗試查看Python的版本時,輸入python...

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到? 如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到? Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

在Python中如何高效地將一個DataFrame的整列複製到另一個結構不同的DataFrame中? 在Python中如何高效地將一個DataFrame的整列複製到另一個結構不同的DataFrame中? Apr 01, 2025 pm 11:15 PM

在使用Python的pandas庫時,如何在兩個結構不同的DataFrame之間進行整列複製是一個常見的問題。假設我們有兩個Dat...

Uvicorn是如何在沒有serve_forever()的情況下持續監聽HTTP請求的? Uvicorn是如何在沒有serve_forever()的情況下持續監聽HTTP請求的? Apr 01, 2025 pm 10:51 PM

Uvicorn是如何持續監聽HTTP請求的? Uvicorn是一個基於ASGI的輕量級Web服務器,其核心功能之一便是監聽HTTP請求並進�...

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎? 如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎? Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

在Linux終端中使用python --version命令時如何解決權限問題? 在Linux終端中使用python --version命令時如何解決權限問題? Apr 02, 2025 am 06:36 AM

Linux終端中使用python...

如何繞過Investing.com的反爬蟲機制獲取新聞數據? 如何繞過Investing.com的反爬蟲機制獲取新聞數據? Apr 02, 2025 am 07:03 AM

攻克Investing.com的反爬蟲策略許多人嘗試爬取Investing.com(https://cn.investing.com/news/latest-news)的新聞數據時,常常�...

See all articles