試験ページの出題数と各ライブラリの公式ドキュメントで確認
Python3エンジニア認定データ分析試験の要点整理(チートシート)
Python3エンジニア認定データ分析試験の40問のうち、27問はscikit-learn・pandas・NumPy・Matplotlibの4つから出ます。このページは、その4つの要点と、取り違えやすい違いを1ページにまとめたものです。
公式情報の確認
試験日、料金、申込条件、試験方式など変動する情報は、公式情報を最終確認してください。
- Python3エンジニア認定データ分析試験(オデッセイコミュニケーションズ・出題範囲と章別出題数)を確認する
- NumPy quickstart(NumPy公式)を確認する
- Quick start guide(Matplotlib公式)を確認する
- Getting Started(scikit-learn公式)を確認する
要点は各ライブラリの公式ドキュメント(pandasは公式の「10 minutes to pandas」)の記載から、試験に関わる範囲だけを抜き出しています。バージョンで挙動や既定値が変わることがあるため、受験前に最新の公式ドキュメントも確認してください。
章別の出題数(全40問)
出題範囲は、主教材の章ごとの比率で決まっています。試験ページに書かれた出題数は次のとおりです。章別の詳しい範囲は試験概要のページにあります。
| 章 | 出題数 | 出題率 |
|---|---|---|
| 1 データ分析エンジニアの役割 | 2問 | 5.0% |
| 2 Pythonと環境(実行環境構築1問・Pythonの基礎3問・Jupyter Lab1問) | 5問 | 12.5% |
| 3 数学の基礎(数式1問・線形代数2問・基礎解析1問・確率と統計2問) | 6問 | 15.0% |
| 4-1 NumPy | 6問 | 15.0% |
| 4-2 pandas | 7問 | 17.5% |
| 4-3 Matplotlib | 6問 | 15.0% |
| 4-4 scikit-learn | 8問 | 20.0% |
| 5 応用: データ収集と加工 | 0問 | 0.0% |
ライブラリ別の要点
出題数の多い順に、公式ドキュメントで確認できた要点を並べます。
scikit-learn(8問・最多)
- モデルなどの組み込みアルゴリズムを推定器(estimator)と呼び、fit でデータに当てはめる。fit に渡すのはサンプル行列 X(行がサンプル、列が特徴量)と目的変数 y で、教師なし学習では y を指定しなくてよい。
- 当てはめ済みの推定器は predict で新しいデータを予測できる。再学習は要らない。
- 前処理器・変換器には predict が無く、変換後の X を返す transform を持つ。StandardScaler().fit(X).transform(X) の形で使う。
- Pipeline は変換器と推定器を1つにまとめ、データリーク(テストデータの情報が学習データに漏れること)を防ぐ。列ごとに別の変換をかけるときは ColumnTransformer を使う。
- train_test_split は学習用とテスト用に分ける。cross_validate の既定は5分割の交差検証。パラメータ探索の RandomizedSearchCV は、最良の組み合わせを best_params_ で返す。
- RandomForestClassifier の既定値は、n_estimators=100、criterion='gini'、max_features='sqrt'、bootstrap=True、oob_score=False、class_weight=None。
pandas(7問)
- Series は1次元のラベル付き配列、DataFrame は行と列を持つ2次元の表。DataFrame は列ごとに1つの dtype を持つ。
- df['A'] は列を選んで Series を返す。loc はラベル、iloc は位置(整数)で選ぶ。iloc のスライスは終端を含まない。
- df[df['A'] > 0] は条件を満たす行を選ぶ。df[df > 0] のように表全体へ条件を使うと、形はそのままで、満たさない要素が NaN になる。
- dropna(how='any') は欠損を1つでも含む行を削除し、fillna(value=5) は欠損を指定値で埋める。pd.isna(df) は欠損の位置を True とする真偽値のマスクを返す。
- pd.concat() は連結、pd.merge() は列をキーにした SQL 形式の結合。groupby は、分割・各グループへの関数の適用・結果の結合の3段で動く。
- describe() は count・mean・std・min・25%・50%・75%・max を表示する。統計の演算は一般に欠損値を除外する。
NumPy(6問)
- 主なオブジェクトは同じ型の要素が並ぶ多次元配列 ndarray。ndim は軸の数、shape は各次元の大きさのタプル、size は要素の総数、dtype は要素の型。
- np.array は要素を1つのシーケンスで渡す。np.array(1,2,3,4) は TypeError で、np.array([1,2,3,4]) と書く。
- np.zeros は全要素 0、np.ones は全要素 1、np.empty は初期値が不定の配列を作る。既定の dtype は float64。
- 算術演算子は要素ごとに作用する。* は要素ごとの積で、行列積は @ か dot で行う。
- sum(axis=0) は列ごとの合計、min(axis=1) は行ごとの最小値。reshape で -1 を指定すると、他の次元から自動で計算される。
- スライスは元の配列のビューを返し、copy メソッドだけが完全なコピーを作る。
Matplotlib(6問)
- Figure は1つ以上の Axes を含む。Axes はデータを描く領域で、Axis(目盛りと目盛りラベルを提供する軸)とは別物。
- plt.figure() は Axes の無い空の Figure、plt.subplots() は Axes が1つの Figure、plt.subplots(2, 2) は 2×2 の Axes の格子を作る。
- 使い方は2通り。Figure と Axes を明示して描くオブジェクト指向スタイルと、pyplot に任せる pyplot スタイル。公式は複雑な図や再利用する関数に、オブジェクト指向スタイルを勧めている。
- ラベルは、オブジェクト指向スタイルでは ax.set_xlabel・ax.set_ylabel・ax.set_title、pyplot スタイルでは plt.xlabel・plt.ylabel・plt.title を使う。
- 凡例は、plot に label を付けてから ax.legend() を呼ぶと表示される。Axes.hist(x, 50, density=True) でヒストグラムを描ける。
- 対数スケールは set_yscale のほか、loglog・semilogx・semilogy でも指定できる。from pylab import * は強く非推奨。
Python3エンジニア認定データ分析試験の学習に使う書籍(Amazon)
PR紛らわしい違いの整理
| 比べるもの | 一方 | もう一方・補足 |
|---|---|---|
| NumPyの * と @ | * は要素ごとの積 | 行列積は @ か dot。A=[[1,1],[0,1]]、B=[[2,0],[3,4]] のとき A*B は [[2,0],[0,4]]、A@B は [[5,4],[3,4]] |
| b = a と view と copy | b = a は同じ配列の別名。view は同じデータを見る新しいオブジェクトで、要素を変えると元も変わる | copy だけが元と何も共有しない完全なコピー。スライスはビューを返すので、s[:] = 10 で元も変わる |
| reshape と resize | reshape は形を変えた配列を返す | ndarray.resize メソッドは配列そのものを変える |
| pandasの loc と iloc | loc はラベルで選ぶ | iloc は位置(整数)で選び、終端を含まない。df.iloc[3:5, 0:2] は行3と4・列0と1 |
| pandasの df[条件] と df[df > 0] | df[df['A'] > 0] は条件を満たす行だけを返す | 表全体に条件を使う df[df > 0] は、形をそのままにして満たさない要素を NaN にする |
| pd.concat と pd.merge | concat はオブジェクトを行方向などに連結する | merge は特定の列をキーにした SQL 形式の結合。キー foo が2行ずつなら 2×2 の4行になる |
| MatplotlibのAxesとAxis | Axes はデータを描く領域で、タイトルは set_title で付ける | Axis は軸のスケールと範囲を決め、目盛りと目盛りラベルを生成する |
| scikit-learnの fit・predict・transform | 推定器は fit で当てはめ、predict で予測する | 変換器には predict が無く、変換後の X を返す transform を使う |
| Pipeline を使う理由 | 前処理と推定器を1つにまとめ、fit と predict で通常の推定器と同じに使える | 全体に前処理をしてから交差検証すると、テストデータの情報が漏れて汎化性能を過大に見積もる。Pipeline はこれを防ぐ |
よくある質問
Python3エンジニア認定データ分析試験で出題数が最も多いのは?
オデッセイの試験ページでは、scikit-learnが8問(20.0%)で最多です。次にpandasが7問(17.5%)、NumPyとMatplotlibが各6問(15.0%)で、この4つで全40問のうち27問を占めます。
「応用: データ収集と加工」は出題される?
オデッセイの試験ページの章別出題数は0問(0.0%)です。出題範囲の表には載っていますが、対策の優先度は低くなります。
要点整理だけで合格できる?
合格基準は7割正解(40問中28問)です。このページは出題数の多い4つのライブラリの要点と、紛らわしい違いだけをまとめたもので、本文の理解や問題演習の代わりにはなりません。主教材は翔泳社「Pythonによるあたらしいデータ分析の教科書 第3版」です。
試験に電卓やメモは持ち込める?
持ち込めません。電卓・メモ用紙・筆記用具・時計は持込禁止物です。詳しくは持ち込み禁止物のページにまとめています。
