Pandsにおけるreample方法の詳細


Pandsにおけるreampleを再サンプリングすることは、従来の時間系列データの再サンプリングと周波数変換に便利な方法である。
方法の書式は:

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」、「5 min」、Second(15)
how='mean'
集合値を生成するための関数名または配列関数は、例えば、「mean」、「ohlc」、np.maxなどであり、デフォルトは「mean」であり、他の一般的な値は、「first」、「last」、「median」、「max」、「min」である。
axis=0
デフォルトは縦軸、横軸設定はaxis=1です。
fill_method=None
サンプルを上げる時はどうやって補間しますか?例えば、「ffill」、「bfill」などです。
closed="ナイト"
サンプリングを下げる時、各時間帯のどれが閉じていますか?
label=「right」
サンプリングを下げる時、重合値のラベルはどう設定しますか?例えば、9:30-9:35は9:30ですか?それとも9:35ですか?デフォルトは9:35です。
loffset=None
メタタグの時間補正値、例えば‘−1 s’またはSecond(−1)は、統合ラベルを1秒前に調整するために使用されます。
limit=None
前または後ろに塗りつぶしたときの最大期間数
kind=None
集約時期(「period」)またはタイムスタンプ(「timestamp」)には、デフォルトでは時間系列に集約されたインデックスの種類があります。
コンベンション=None
再サンプリング時には、低周波数を高周波で採用される約束(startまたはend)に変換する。デフォルト‘end’
まずSeriesを作成します。サンプリング周波数は1分間です。

>>> 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
サンプリング周波数を3分下げる

>>> 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
サンプリング周波数を3分間低減したが、各ラベルはleftの代わりにrightを使用した。注意してください。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
サンプリング周波数を3分間低減しましたが、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
サンプリング周波数を30 Sまで増加させ,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
サンプリング周波数を30 Sまで増加し,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
カスタム関数をappyで実行します。

>>> 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
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。