亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

重新采樣數據以保持 Python 數據真實性的更好方法?

重新采樣數據以保持 Python 數據真實性的更好方法?

炎炎設計 2023-05-09 10:55:13
我想重新采樣我的數據,以便每個索引的日期時間之間的每個間隔有 512 秒。找到了resample方法pandas,但是不能正常使用,因為最后會修改太多原始數據(原始數據的真實性不一樣)。但是,我想到了一種可能性,如果在日期時間之內,間隔只有2個數字,它們也可以相互劃分(512:4 = 128)。問題是它們的出現可以計算任意數量。使用以下代碼計算索引的間隔:intervals = np.array(round(df.index.to_series().diff().dt.total_seconds().fillna(0)))我的索引的間隔是這樣的:(因為我的數據每 4 或 512 秒記錄一次){4, 4, 4, 4, 4, 4, 4, 4, 4, 512,512, 512, 512, 512, 512, 512, 4, 4, 4, 4, 4, 512, 512, 512, 4, 4, 4, 4, 4, 4, 4, 4, 512, 4, 4, 4, 4, 512, 512, 521, 512, ...}問題是有時數據每 4 秒記錄一次,持續 5 分鐘(因此沒有足夠的時間來達到 512)然后它可能會出現 512 等等,如上例所示。這是一個問題,因為我首先想到也許我應該每 512 秒循環一次,然后刪除所有不在該間隔內的行。(我刪除它們是因為我只需要每512秒記錄一次數據,實際上沒有必要知道它在間隔內是什么。它可能會增加,但它會改變很多。)我需要使其成為每 512 個,但不使用重采樣方法,因為如果我觀察得好,它會破壞數據的真實性??偠灾瑑蓚€主要條件是:一是尊重并保持數據的真實性;二是最終每512秒記錄一次數據。所以,我問你們,這個領域的專家,你們認為最適合我的情況的方法或算法是什么?PS:我一直在尋找其他方法,比如 resample 但更好,但我沒有找到合適的方法。但是,我愿意接受新想法!讓我知道是否應該添加有關該問題的其他詳細信息。非常感謝。
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

不會丟失數據的真實性resample()

  1. 已經重新創建了一個示例數據集,我在其中以128 秒的間隔模擬了源數據

  2. 然后resample()512s

  3. 這可能意味著存在空桶,其中最后一個NaN并且基礎值列表為

  4. 你需要決定在這些情況下你想做什么。對于我對溫度數據進行上采樣的情況,我的dropna()其他選擇顯然是fillna()

  5. 由于存在NaN您應該考慮dfr = df.resample("512s")["val"].agg(last="last", vals=lambda s: list(s)).astype({"last":"Int64"})維護列的數據類型(即從int64更改為float64


總之,源數據的完整性沒有損失。您需要決定如何處理沒有適合 *bin* 的基礎數據的情況

d = [d for d in pd.date_range(dt.datetime(2019,5,1,2), 

                          dt.datetime(2019,5,1,4), freq="128s") 

     if random.randint(0,3) < 2 ] # miss some sample times... so resampling will give NaNs


df = pd.DataFrame({"ts":d, "val":[random.randint(0,50) for x in d]}).set_index("ts")

dfr = df.resample("512s")["val"].agg(last="last", vals=lambda s: list(s))

dfr

輸出


                     last          vals

ts                                     

2019-05-01 01:59:28  27.0   [1, 41, 27]

2019-05-01 02:08:00  48.0  [14, 14, 48]

2019-05-01 02:16:32  43.0   [2, 49, 43]

2019-05-01 02:25:04  43.0          [43]

2019-05-01 02:33:36  44.0          [44]

2019-05-01 02:42:08  38.0      [39, 38]

2019-05-01 02:50:40  37.0          [37]

2019-05-01 02:59:12  25.0      [39, 25]

2019-05-01 03:07:44   1.0    [29, 8, 1]

2019-05-01 03:16:16  35.0  [12, 20, 35]

2019-05-01 03:24:48  33.0      [20, 33]

2019-05-01 03:33:20   5.0       [11, 5]

2019-05-01 03:41:52   NaN            []

2019-05-01 03:50:24   9.0           [9]


查看完整回答
反對 回復 2023-05-09
  • 1 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號