一年多來,我一直在從連接到船舶柴油發動機的流量計中收集燃料消耗資料。每隔 1 分鐘捕獲一次資料,并以逗號分隔的 .csv 格式呈現給我。我正在使用 python/pandas/jupyter 筆記本來分析資料。這是讀入 juypter notebook 的資料示例。
import pandas as pd
df = pd.read_csv('C:/Users/NETE/Desktop/Test.csv', parse_dates=['Date_Time'], index_col='Date_Time')
df
Out[1]:
Fuel Consumption
Date_Time
2022-01-13 15:30:00 10.3
2022-01-13 15:31:00 10.5
2022-01-13 15:32:00 10.6
2022-01-13 15:33:00 10.3
2022-01-13 15:34:00 10.5
2022-01-13 15:35:00 10.4
2022-01-13 16:35:00 0.1
2022-01-13 16:36:00 20.5
2022-01-13 16:37:00 6.0
2022-01-13 16:38:00 18.0
2022-01-13 17:15:00 15.3
2022-01-13 17:16:00 15.7
2022-01-13 17:17:00 15.7
2022-01-13 17:18:00 15.4
2022-01-13 17:19:00 15.5
2022-01-13 17:20:00 15.7
2022-01-13 22:03:00 26.8
2022-01-13 22:04:00 27.1
我希望能夠按時間戳間隔對資料進行分組,以便時間戳僅相隔 1 分鐘的每個資料塊組合在一起。一旦遇到大于一分鐘的時間增量,就應該創建一個新塊。最終,我想.value_counts()在組上使用該方法,以便我可以洗掉持續時間少于 5 分鐘的組。
我已經考慮過.diff(),.groupby()和pd.Grouper方法,但我是一個 python(和一般編碼)新手,不知道該去哪里。我花了很多時間研究這個問題無濟于事。任何指導將不勝感激。
uj5u.com熱心網友回復:
訣竅是計算每行之間的時間差。為此,您可以使用shift()方法。當您知道差異時,您可以簡單地確定差異是否滿足預定義的條件 - 在您的情況下,如果差異大于 1 分鐘。此操作產生一個布爾特征。cumsum()在此之上應用會生成您正在尋找的組識別符號。
這段代碼
# import libraries
import pandas as pd
import numpy as np
# read the data
df = pd.read_csv('./data.csv')
df.columns = ['dt', 'consumption']
# do the processing
df['dt'] = pd.to_datetime(df.dt)
df['dt_diff_in_min'] = (df.dt - df.dt.shift()) / np.timedelta64(1, 'm')
df['group_id'] = df.dt_diff_in_min.gt(1).cumsum()
# show the result
print(df)
回傳以下輸出。
dt consumption dt_diff_in_min group_id
0 2022-01-13 15:30:00 10.3 NaN 0
1 2022-01-13 15:31:00 10.5 1.0 0
2 2022-01-13 15:32:00 10.6 1.0 0
3 2022-01-13 15:33:00 10.3 1.0 0
4 2022-01-13 15:34:00 10.5 1.0 0
5 2022-01-13 15:35:00 10.4 1.0 0
6 2022-01-13 16:35:00 0.1 60.0 1
7 2022-01-13 16:36:00 20.5 1.0 1
8 2022-01-13 16:37:00 6.0 1.0 1
9 2022-01-13 16:38:00 18.0 1.0 1
10 2022-01-13 17:15:00 15.3 37.0 2
11 2022-01-13 17:16:00 15.7 1.0 2
12 2022-01-13 17:17:00 15.7 1.0 2
13 2022-01-13 17:18:00 15.4 1.0 2
14 2022-01-13 17:19:00 15.5 1.0 2
15 2022-01-13 17:20:00 15.7 1.0 2
16 2022-01-13 22:03:00 26.8 283.0 3
17 2022-01-13 22:04:00 27.1 1.0 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/412611.html
標籤:
