データ分析・中級問題チェック
問題 24 /40
pandasで、1年間の日毎の売上データに対し、次のコードを実行した結果として正しいものはどれか。
df.groupby(pd.Grouper(freq='W-SAT')).sum()
選択 1
土曜締めで週毎の売上を合計する。
選択 2
日曜締めで週毎の売上を合計する。
選択 3
毎月の第1土曜日で売上を合計する。
選択 4
毎月の第1日曜日で売上を合計する。
解説
選択肢1が正解です。
次のような1年間の日毎の売上データがある場合を考えます。
df = pd.DataFrame(
np.random.randint(100, 1000, 365),
index=pd.date_range('2023-01-01', periods=365),
columns=['売上'])
▶︎
問題文のコードを実行して先頭5行を表示すると、以下の結果になります。
df.groupby(pd.Grouper(freq='W-SAT')).sum().head()
▶︎
groupby関数はデータを「分割→適用→結合」する関数です。日付の場合は、Grouperオブジェクトを引数にすることで周期を指定できます。ここでは「freq='W-SAT'」を指定して日曜〜土曜の周期で「分割」し、それぞれにsum関数を「適用」し、DataFrameとして「結合」しています。
週次の「W」のデフォルトは日曜締めですが、「W-SAT」のように曜日を組み合わせることで、締める曜日を指定できます。上のDataFrameの「2023-01-07」や「2023-01-14」は土曜日です。
周期として指定できる主な引数は以下となります。
-------------------------------
D 日次
W 週次
M 月末ごと
Q 四半期末ごと
A 年末ごと
H 毎時
T 毎分
S 毎秒
-------------------------------
(公式書籍 p.165)

