- 問題
- 答え
- 解説
次の Python コードの出力はどれでしょうか?
Python コード:
import pandas as pd dates = pd.date_range( start='2023-01-01', periods=90, freq='D') data = range(90) df = pd.DataFrame( data, index=dates, columns=['A']) print(df.resample('M').mean())
回答の選択肢:
(A) 3か月の月あたりの平均値
(B) 月ごとの平均値
(C) 昨年と今年の月平均値
(D) 各月の最初の日と最後の日の平均値
出力例:
A 2023-01-31 15.0 2023-02-28 44.5 2023-03-31 74.0
正解: (B)
回答の選択肢:
(A) 3か月の月あたりの平均値
(B) 月ごとの平均値
(C) 昨年と今年の月平均値
(D) 各月の最初の日と最後の日の平均値
このコードは、特定の期間(ここでは日ごと)で測定される時系列データの月単位の平均を計算します。
import pandas as pd dates = pd.date_range( start='2023-01-01', periods=90, freq='D') data = range(90) df = pd.DataFrame( data, index=dates, columns=['A']) print(df.resample('M').mean())
詳しく説明します。
‘2023-01-01’から始まる日単位の日付範囲を90期間作ります。
dates = pd.date_range( start='2023-01-01', periods=90, freq='D')
dates
に格納されているデータは次のようになっています。
DatetimeIndex(['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05', '2023-01-06', '2023-01-07', '2023-01-08', '2023-01-09', '2023-01-10', '2023-01-11', '2023-01-12', '2023-01-13', '2023-01-14', '2023-01-15', '2023-01-16', '2023-01-17', '2023-01-18', '2023-01-19', '2023-01-20', '2023-01-21', '2023-01-22', '2023-01-23', '2023-01-24', '2023-01-25', '2023-01-26', '2023-01-27', '2023-01-28', '2023-01-29', '2023-01-30', '2023-01-31', '2023-02-01', '2023-02-02', '2023-02-03', '2023-02-04', '2023-02-05', '2023-02-06', '2023-02-07', '2023-02-08', '2023-02-09', '2023-02-10', '2023-02-11', '2023-02-12', '2023-02-13', '2023-02-14', '2023-02-15', '2023-02-16', '2023-02-17', '2023-02-18', '2023-02-19', '2023-02-20', '2023-02-21', '2023-02-22', '2023-02-23', '2023-02-24', '2023-02-25', '2023-02-26', '2023-02-27', '2023-02-28', '2023-03-01', '2023-03-02', '2023-03-03', '2023-03-04', '2023-03-05', '2023-03-06', '2023-03-07', '2023-03-08', '2023-03-09', '2023-03-10', '2023-03-11', '2023-03-12', '2023-03-13', '2023-03-14', '2023-03-15', '2023-03-16', '2023-03-17', '2023-03-18', '2023-03-19', '2023-03-20', '2023-03-21', '2023-03-22', '2023-03-23', '2023-03-24', '2023-03-25', '2023-03-26', '2023-03-27', '2023-03-28', '2023-03-29', '2023-03-30', '2023-03-31'], dtype='datetime64[ns]', freq='D')
0~89までの整数の範囲をデータとして、上で作成した日付をインデックスとしてデータフレームを作成します。このデータフレームは、各日付に対する一意の数値を持っています。
data = range(90) df = pd.DataFrame( data, index=dates, columns=['A'])
df
に格納されているデータは次のようになっています。
A 2023-01-01 0 2023-01-02 1 2023-01-03 2 2023-01-04 3 2023-01-05 4 ... .. 2023-03-27 85 2023-03-28 86 2023-03-29 87 2023-03-30 88 2023-03-31 89 [90 rows x 1 columns]
データフレームの`resample(‘M’)`メソッドを用いてデータを月単位にリサンプリングし(つまりデータを月単位にまとめ上げ)、その後`.mean()`を用いて各月の平均を計算します。この操作により、日ごとのデータから月ごとの平均データに変換を行います。
print(df.resample('M').mean())
A 2023-01-31 15.0 2023-02-28 44.5 2023-03-31 74.0