pandas的resample重取樣

2022-04-25 13:46:29 字數 3132 閱讀 5626

pandas中的resample,重新取樣,是對原樣本重新處理的乙個方法,是乙個對常規時間序列資料重新取樣和頻率轉換的便捷的方法。

降取樣:高頻資料到低頻資料

公升取樣:低頻資料到高頻資料

主要函式:resample()(pandas物件都會有這個方法)

引數說明

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

loffset = none

面元標籤的時間校正值,比如『-1s』或second(-1)用於將聚合標籤調早1秒

limit=none

在向前或向後填充時,允許填充的最大時期數

kind = none

聚合到時期(『period』)或時間戳(『timestamp』),預設聚合到時間序列的索引型別

convention = none

當重取樣時期時,將低頻率轉換到高頻率所採用的約定(start或end)。預設『end』

首先建立乙個series,取樣頻率為一分鐘。

>>> index = pd.date_range('1/1/2000', periods=9, freq='t')

>>> series = pd.series(range(9), index=index)

>>> series

2000-01-01 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

降低取樣頻率為三分鐘,但是每個標籤使用right來代替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='right').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

>>> def custom_resampler(array_like):

... return np.sum(array_like)+5

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,重新取樣,是對原樣本重新處理的乙個方法,是乙個對常規時間序列資料重新取樣和頻率轉換的便捷的方法。方法的格式是 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,重新取樣,是對原樣本重新處理的乙個方法,是乙個對常規時間序列資料重新取樣和頻率轉換的便捷的方法。方法的格式是 dataframe.resample rule,how none,axis 0,fill method none,closed none,label non...