首頁 > 後端開發 > Python教學 > 如何使用 Groupby 和 diff() 計算 Pandas DataFrames 中基於時間的差異?

如何使用 Groupby 和 diff() 計算 Pandas DataFrames 中基於時間的差異?

Barbara Streisand
發布: 2024-10-30 07:45:27
原創
529 人瀏覽過

How to Calculate Time-Based Differences in Pandas DataFrames Using Groupby and diff()?

Pandas Groupby 多個欄位以實現基於時間的差異

在資料分析領域,比較隨時間的變化是一項至關重要的任務。 Pandas 是一個多功能的 Python 函式庫,提供了處理此類操作的強大功能。當處理按多個分類欄位和時間組織的資料時,groupby.diff() 方法被證明是無價的。

考慮像提供的那樣的 DataFrame,其中每個站點在不同國家/地區和日期都有不同的分數。目標是計算每個站點/國家/地區組合的 1/3/5 天分數差異。

問題解決

為了實現這一目標,我們利用以下步驟:

  1. 對DataFrame 進行排序:
  2. 對DataFrame 進行排序: 使用sort_values() 依網站、國家/地區和日期以一致的順序排列資料。
  3. 按站點和國家/地區分組: 利用 groupby() 根據網站和國家/地區欄位建立群組。
計算差異:
<code class="python">df = df.sort_values(by=['site', 'country', 'date'])
df['diff'] = df.groupby(['site', 'country'])['score'].diff().fillna(0)</code>
登入後複製
在每組中應用 diff() 來計算分數連續行的差異。

輸出:

date site country score diff
2018-01-01 fb es 100 0.0
2018-01-02 fb gb 100 0.0
2018-01-01 fb us 50 0.0
2018-01-02 fb us 55 5.0
2018-01-03 fb us 100 45.0
2018-01-01 google ch 50 0.0
2018-01-02 google ch 10 -40.0
2018-01-01 google us 100 0.0
2018-01-02 google us 70 -30.0
2018-01-03 google us 60 -10.0

結果是一個顯示計算分數差異的DataFrame:

高階排序

如果需要任意順序,例如優先考慮“google”而不是“fb”,可以建立一個分類列並將其指定為排序參數。這可確保維持指定的順序。

以上是如何使用 Groupby 和 diff() 計算 Pandas DataFrames 中基於時間的差異?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板