次の Python コードの出力はどれでしょうか?
Python コード:
import pandas as pd import numpy as np np.random.seed(2) dates = pd.date_range( '2023-01-01', periods=12, freq='M') df = pd.DataFrame( np.random.randn(12, 1), index=dates, columns=['A']) print(df.diff(periods=4))
回答の選択肢:
(A) 4ヶ月ごとの差分のランダムな値
(B) 各月のランダムな値
(C) すべてNaN
(D) 最初の4行がNaN、残りがランダムな値
出力例:
A 2023-01-31 NaN 2023-02-28 NaN 2023-03-31 NaN 2023-04-30 NaN 2023-05-31 -1.376678 2023-06-30 -0.785481 2023-07-31 2.639078 2023-08-31 -2.885559 2023-09-30 0.735483 2023-10-31 -0.067260 2023-11-30 0.048573 2023-12-31 3.537496
正解:
(D)
解説:
diff(periods=4)
メソッドは、指定された期間(ここでは4ヶ月)前の値との差分を計算します。このコードでは、各月のデータに対して、4ヶ月前のデータとの差分を計算しています。最初の4ヶ月は比較する過去のデータが存在しないため、その値は NaN
(非数)となります。5ヶ月目以降は、4ヶ月前の値との差分が計算され、ランダムに生成されたデータに基づく値が表示されます。
df
に格納されているデータは次のようになっています。ランダムな値を入れているため、人によって値は異なります。
A 2023-01-31 -0.416758 2023-02-28 -0.056267 2023-03-31 -2.136196 2023-04-30 1.640271 2023-05-31 -1.793436 2023-06-30 -0.841747 2023-07-31 0.502881 2023-08-31 -1.245288 2023-09-30 -1.057952 2023-10-31 -0.909008 2023-11-30 0.551454 2023-12-31 2.292208