次の Python コードの出力はどれでしょうか?
Python コード:
import pandas as pd dates = pd.date_range( '2023-01-01', periods=10, freq='D') df = pd.DataFrame( {'A': range(10)}, index=dates) wednesdays = df[ df.index.weekday == 2] print(wednesdays)
回答の選択肢:
(A) すべての水曜日のデータ
(B) すべての月曜日のデータ
(C) すべての日曜日のデータ
(D) データフレームには何も表示されない
出力例:
A 2023-01-04 3
正解:
(A)
解説:
このコードは、指定した期間の日付範囲でデータフレームを作成し、その中から特定の曜日(水曜日)の日付だけを抽出しています。
詳しく説明します。
‘2023-01-01’から始まる日単位の日付範囲を10期間生成します。
dates = pd.date_range( '2023-01-01', periods=10, 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'], dtype='datetime64[ns]', freq='D')
生成した日付をインデックスに持つデータフレームを作成します。データフレームの列’A’には0~9までの範囲の整数が格納されています。
df = pd.DataFrame( {'A': range(10)}, index=dates)
df
に格納されているデータは次のようになっています。
A 2023-01-01 0 2023-01-02 1 2023-01-03 2 2023-01-04 3 2023-01-05 4 2023-01-06 5 2023-01-07 6 2023-01-08 7 2023-01-09 8 2023-01-10 9
データフレームのインデックス(日付)から曜日を取得し、それが2(Pythonでは月曜日が0、日曜日が6なので2は水曜日を表します)と等しい場合のみのデータを新たなデータフレーム`wednesdays`に格納します。
wednesdays = df[ df.index.weekday == 2]
抽出した水曜日のデータを持つデータフレーム`wednesdays`を表示します。
print(wednesdays)
結果として、’2023-01-01’から始まる10日間のうちの水曜日の日付とその’A’列の値が表示されます。
A 2023-01-04 3