pandas的resample重取樣的使用

2022-10-04 14:30:43 字數 3164 閱讀 6804

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

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

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

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

resample方法的引數

引數說明

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,取樣頻率為一分鐘。 

>&g程式設計客棧t;> 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

f程式設計客棧req: 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:00www.cppcns.com: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_rwww.cppcns.comesampler(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,重新取樣,是對原樣本重新處理的乙個方法,是乙個對常規時間序列資料重新取樣和頻率轉換的便捷的方法。降取樣 高頻資料到低頻資料 公升取樣 低頻資料到高頻資料 主要函式 resample pandas物件都會有這個方法 引數說明 freq 表示重取樣頻率,例如 m 5mi...

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...