簡體   English   中英

如何重新采樣數據框

[英]How resample dataframe

我有問題,當我對數據幀索引重新采樣時,日期會改變!!。

>>>dpvis=dpvi.Puissance.resample('10min').mean()


>>> dpvi.head()
                     Puissance
Date                          
2016-05-01 00:00:00          0
2016-05-01 00:05:00          0
2016-05-01 00:10:00          0
2016-05-01 00:15:00          0
2016-05-01 00:20:00          0


>>> dpvis.head()
Date
2015-06-14 00:00:00    0.0
2015-06-14 00:10:00    0.0
2015-06-14 00:20:00    0.0
2015-06-14 00:30:00    0.0
2015-06-14 00:40:00    0.0
Freq: 10T, Name: Puissance, dtype: float64


>>>

這是一個演示,假設dtypes正確,那么resample()可以正確使用您提供的數據。 這並非完全解決您的問題,但可以作為一種健全性檢查。

首先,以5min間隔生成兩個月的樣本數據:

import pandas as pd

Date = pd.date_range("2016-05-01", "2016-07-01", freq="5min", name='Date')
Puissance = {'Puissance': np.zeros(len(Date), dtype=int)}
df = pd.DataFrame(Puissance, index=Date)

df.head()
                     Puissance
Date                          
2016-05-01 00:00:00          0
2016-05-01 00:05:00          0
2016-05-01 00:10:00          0
2016-05-01 00:15:00          0
2016-05-01 00:20:00          0

df.shape           # (17569, 1)
df.index.dtype     # datetime64[ns]
df.Puissance.dtype # int64

現在以10min間隔重新采樣:

resampled = df.Puissance.resample('10min').mean()

resampled.shape # (8785,)

注意: df.resample('10min').mean()也提供相同的結果。

resampled.head()
Date
2016-05-01 00:00:00    0
2016-05-01 00:10:00    0
2016-05-01 00:20:00    0
2016-05-01 00:30:00    0
2016-05-01 00:40:00    0
Freq: 10T, Name: Puissance, dtype: int64

resampled.tail()
Date
2016-06-30 23:20:00    0
2016-06-30 23:30:00    0
2016-06-30 23:40:00    0
2016-06-30 23:50:00    0
2016-07-01 00:00:00    0
Freq: 10T, Name: Puissance, dtype: int64

重采樣按預期進行。
這表明您的dtype聲明存在某個問題,或者head()輸出中未顯示的觀察結果的格式存在問題。

一個線索可能是您的Puissance值以整數( 0 )開始,但被重新采樣為浮點數( 0.0 )。 如果所有Puissance值都是零值整數,則mean輸出dtype也將為int64 ,如上所示。 (如果平均的值不完全相同, mean()通常將返回dtype float64 。)您的示例數據可能無法代表您要解決的實際問題-如果是這樣,請考慮使用更具代表性的更新您的帖子例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM