次の Python コードの出力はどれでしょうか?
Python コード:
import pandas as pd import numpy as np np.random.seed(5) dates = pd.date_range( '2023-01-01', periods=6, freq='D') df = pd.DataFrame( np.random.randn(6, 1), index=dates, columns=['A']) print(df.resample('3D').sum())
回答の選択肢:
(A) 3日ごとの合計値
(B) 各日のランダムな値
(C) 週ごとの合計値
(D) 月ごとの合計値
出力例:
A 2023-01-01 2.541129 2023-01-04 1.439999
正解:
(A)
解説:
このコードは、ランダムな値を含む時系列データフレームを作成し、そのデータを3日ごとにリサンプリングしています。リサンプリングの際には、各3日間の合計値が計算されます。
詳しく説明します。
まず、’2023-01-01’から始まる日ごとの日付範囲を6期間作成します。
dates = pd.date_range( '2023-01-01', periods=6, freq='D')
dates
に格納されているデータは次のようになっています。
DatetimeIndex(['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05', '2023-01-06'], dtype='datetime64[ns]', freq='D')
次に、この日付範囲をインデックスとして、6行1列のランダムな値を含むデータフレームを作成します。このデータフレームの列名は ‘A’ となっています。
df = pd.DataFrame( np.random.randn(6, 1), index=dates, columns=['A'])
例えば、df
に格納されているデータは次のようになっています。ランダムな値を入れているため、人によって値は異なります。
A 2023-01-01 0.441227 2023-01-02 -0.330870 2023-01-03 2.430771 2023-01-04 -0.252092 2023-01-05 0.109610 2023-01-06 1.582481
最後に、データフレームの`resample`メソッドを使って、3日ごとにデータをリサンプリングします。
print(df.resample('3D').sum())
この場合、リサンプリングの操作は合計値の計算(`sum()`)です。つまり、各3日間のデータの合計が新しいデータフレームの値となります。
A 2023-01-01 2.541129 2023-01-04 1.439999