次の 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

