pandas中的resample,重新取樣,是對原樣本重新處理的乙個方法,是乙個對常規時間序列資料重新取樣和頻率轉換的便捷的方法。
方法的格式是:
dataframe.resample(rule, how=none, axis=0, fill_method=none, closed=none, label=none, convention='start',kind=none, loffset=none, limit=none, base=0)
引數詳解是:
引數說明
freq
表示重取樣頻率,例如『m'、『5min',second(15)
how='mean'
用於產生聚合值的函式名或陣列函式,例如『mean'、『ohlc'、np.max等,預設是『mean',其他常用的值由:『first'、『last'、『median'、『max'、『min'
axis=0
預設是縱軸,橫軸設定axis=1
fill_method = none
公升取樣時如何插值,比如『ffill'、『bfill'等
closed = 『right'
在降取樣時,各時間段的哪一段是閉合的,『right'或『left',預設『right'
label= 『right'
在降取樣時,如何設定聚合值的標籤,例如,9:30-9:35會被標記成9:30還是9:35,預設9:35
loffs程式設計客棧et = none
面元標籤的時間校正值,比如『-1s'或second(-1)用於將聚合標籤調早1秒
limit=none
在向前或向後填充時,允許填充的最大時期數
kind = none
聚合到時期(『period')或時間戳(『timestamp'),預設聚合到時間序列的索引型別
convention = none
當重取樣時期時,將低頻率轉換到高頻率所採用的約定(start或end)。預設『end'
首先建立乙個series,取樣頻率為一分鐘。
>&程式設計客棧gt;> index = pd.date_range('1/1/2000', periods=9, freq='t')
>>> series = pd.series(range(9), index=index)
>>> series
2000 00:00:00 0
2000-01-01 00:01:00 1
2000-01-01 00:02:00 2
2000-01-01 00:03:00 3
2000-01-01 00:04:00 4
2000-01-01 00:05:00 5
2000-01-01 00:06:00 6
2000-01-01 00:07:00 7
2000-01-01 00:08:00 8
freq: t, dtype: int64
降低取樣頻率為三分鐘
>>> series.resample('3t').sum()
2000-01-01 00:00:00 3
2000-01-01 00:03:00 12
2000-01-01 00:06:00 21
freq: 3t, dtype: int64
降低取樣頻率為三分鐘,但是每個標籤使用ri程式設計客棧ght來代替left。請注意,bucket中值的用作標籤。
>>> series.resample('3t', label='right').sum()
2000-01-01 00:03:00 3
2000-01-01 00:06:00 12
2000-01-01 00:09:00 21
freq: 3t, dtype: int64
降低取樣頻率為三分鐘,但是關閉right區間。
>>> series.resample('3t', label='right', closed='r程式設計客棧ight').sum()
2000-01-01 00:00:00 0
2000-01-01 00:03:00 6
2000-01-01 00:06:00 15
2000-01-01 00:09:00 15
freq: 3t, dtype: int64
增加取樣頻率到30秒
>>> series.resample('30s').asfreq()[0:5] #select first 5 rows
2000-01-01 00:00:00 0
2000-01-01 00:00:30 nan
2000-01-01 00:01:00 1
2000-01-01 00:01:30 nan
2000-01-01 00:02:00 2
freq: 30s, dtype: float64
增加取樣頻率到30s,使用pad方法填充nan值。
>>> series.resample('30s').pad()[0:5]
2000-01-01 00:00:00 0
2000-01-01 00:00:30 0
2000-01-01 00:01:00 1
2000-01-01 00:01:30 1
2000-01-01 00:02:00 2
freq: 30s, dtype: int64
增加取樣頻率到30s,使用bfill方法填充nan值。
>>> series.resample('30s').bfill()[0:5]
2000-01-01 00:00:00 0
2000-01-01 00:00:30 1
2000-01-01 00:01:00 1
2000-01-01 00:01:30 2
2000-01-01 00:02:00 2
freq: 30s, dtype: int64
通過apply執行乙個自定義函式
>>> def custom_resampler(array_like):
... return np.sum(array_like)+5
>>> series.resample('3t').apply(custom_resampler)
2000-01-01 00:00:00 8
2000-01-01 00:03:00 17
2000-01-01 00:06:00 26
freq: 3t, dtype: int64
本文標題: pandas中resample方法詳解
本文位址:
Pandas中resample方法詳解
pandas中的resample,重新取樣,是對原樣本重新處理的乙個方法,是乙個對常規時間序列資料重新取樣和頻率轉換的便捷的方法。方法的格式是 dataframe.resample rule how none axis 0 fill method none closed none label non...
Pandas中的resample,重新取樣
pandas中的resample,重新取樣,是對原樣本重新處理的乙個方法,是乙個對常規時間序列資料重新取樣和頻率轉換的便捷的方法。方法的格式是 dataframe.resample rule,how none,axis 0,fill method none,closed none,label non...
pandas的resample重取樣
pandas中的resample,重新取樣,是對原樣本重新處理的乙個方法,是乙個對常規時間序列資料重新取樣和頻率轉換的便捷的方法。降取樣 高頻資料到低頻資料 公升取樣 低頻資料到高頻資料 主要函式 resample pandas物件都會有這個方法 引數說明 freq 表示重取樣頻率,例如 m 5mi...