DEカテゴリの総まとめ。SQL・Python・データ基盤の試験頻出パターンを一気に振り返ります。
DE力って、要はSQLとPythonとデータ基盤、この3つを押さえりゃいいってこと?
その通り。 DS検定★ では SQLコード読解とPython(Pandas/NumPy)コード読解が必出。 文法を覚えるよりパターンを覚えるのが効率的よ。
SQL頻出パターンは(1)SELECT+WHERE+ORDER BY、(2)GROUP BY+集計関数、(3)JOINとNULL扱い、(4)CTEとサブクエリ、(5)ウィンドウ関数(ROW_NUMBER/RANK/LAG/LEAD)、の5つ。
Pythonは?
Pandas頻出は(1)DataFrame/Seriesとloc/iloc、(2)groupby・agg、(3)merge・concat、(4)isna・fillna・dropna、(5)applyとリスト内包表記。
コード読解問題のコツってある?
-- DS検定★コード読解の典型問題
WITH monthly AS (
SELECT
DATE_TRUNC('month', ordered_at) AS month,
customer_id,
SUM(amount) AS monthly_amount
FROM orders
GROUP BY 1, 2
)
SELECT
month,
customer_id,
monthly_amount,
RANK() OVER (
PARTITION BY month
ORDER BY monthly_amount DESC
) AS rank_in_month
FROM monthly
WHERE monthly_amount > 0;
このクエリは『月ごと・顧客ごとの売上合計を計算し、各月内の売上ランキングをつける』処理。 CTE で集計を準備し、その上でウィンドウ関数で順位付け、という典型2段階。
Pythonでも同じ処理は書けるけれど、データベース側で完結させる方が圧倒的に高速。 役割分担を意識して。
コード読解、慣れれば一目で分かるようになりますかぁ?
なるわよ。 コツは『1行ずつ追わず、ブロックごとに意味をつかむ』こと。 CTEなら『これは何を準備しているか』、メイン部分なら『何を最終結果として取り出しているか』。
メソッドチェーンも、最初はゴチャっと見えるけど、慣れると一気に読めるね!
# Pandas での同等処理
monthly = (
orders
.assign(month=lambda x: x['ordered_at'].dt.to_period('M'))
.groupby(['month', 'customer_id'])['amount']
.sum()
.reset_index(name='monthly_amount')
)
monthly['rank_in_month'] = (
monthly.groupby('month')['monthly_amount']
.rank(method='dense', ascending=False)
)
result = monthly[monthly['monthly_amount'] > 0]
DS検定対策のチェックリスト: (1)SQLとPandasで同じ操作が書けるか、(2)ウィンドウ関数を読めるか、(3)欠損値処理を選べるか、(4)エンコーディングと標準化の使い分け、(5)外れ値検出の閾値計算。
次は『AI社会実装・データリテラシー』。 統計・機械学習・データ基盤を経て、社会実装の話に入るわよ。
がんばりますぅ♪
確認クイズ
DS検定★ のコード読解問題に最も効果的な学習法はどれか。
- 公式リファレンスを暗記する
- 1行ずつ詳細に読み解く
- 頻出パターン(GROUP BY+集計、ウィンドウ関数、merge等)を集中的に学ぶ
- 全てのSQL関数を覚える
こたえを見る
正解: 3. 頻出パターン(GROUP BY+集計、ウィンドウ関数、merge等)を集中的に学ぶ
頻出パターンを集中的に学ぶのが最効率。 DS検定はパターン化されており、『GROUP BY+集計』『ウィンドウ関数』『merge』などの典型コードを多く読むことで、本番で素早く意味をつかめるようになります。