[英]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.