Python 3 エンジニア認定データ分析試験に合格したので対策や勉強法など

## この記事について
この記事は【Python 3 エンジニア認定データ分析試験】受験しようとしている方に向けて書いています。試験合格した私の経験をもとにおすすめの勉強方法やこのレベルまでくれば受験しても良さそうといったことを書きます。

### 筆者のレベル
強み
・経験10年目のプログラマ
・仕事では主にコーディングをしている
・Pythonは仕事で2〜3年使っている
・半年前にPython 3 エンジニア認定基礎試験合格

弱み
・データ分析という分野は学んだことがない
・数学の知識がない

【試験結果 2024年9月受験】
![スクリーンショット 2024-09-24 13.41.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308422/0a4daf4a-3d62-589a-bf96-73190d37fef4.png)



## 試験概要

◆受験方法
受験日：通年
試験センター：全国のオデッセイコミュニケーションズCBTテストセンター
受験料金：1万円（税別）　学割5千円（税別）
試験時間：60分
問題数：40問（すべて選択問題）
合格ライン：正答率70％

【出題範囲】
![スクリーンショット 2024-09-24 11.43.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308422/6859371b-f7b7-067f-0f2f-6ec2e3dae2e5.png)
※[PRIME STADY](https://study.prime-strategy.co.jp/)より

## 合格率について
[こちら](https://mynavi-agent.jp/knowledge/it/765.html)の記事で
>分析試験の受験者は2021年6月末時点で3,158名です。そのうち合格者数は2,726人と発表しています。
合格率は約86%で、高めとなっています。

と記載があります。
個人的な感想は、高すぎるように感じます。現役のデータエンジニアが腕試しに受験しているのでしょうか？データ分析が素人の場合はしっかりと対策しないと合格しないと思います。

## 勉強方法
まずは翔泳社「[Pythonによるあたらしいデータ分析の教科書 第2版](https://amzn.to/47G3iQE)」を書いましょう。
こちらは公式の教科書となっており、試験はこの本から出題されます。
まずは何周か読んでみてください。

その後、[PRIME STADY](https://study.prime-strategy.co.jp/)が無料公開している模擬試験の第1回を解いてみてください。第1回のみ詳細な解説がありますので間違えた箇所は解説を見ながら復習してください。
もし80%以上取れているなら申し込んでよいでしょう。
この記事もこれ以降読まなくてよいです。

## ↑そんな上手くいくかよ！と思ったあなた
私の場合、「Pythonによるあたらしいデータ分析の教科書」を2〜3周した後に模擬試験を解いたところ30%くらいの正答率でした。
ということで以下から私が実戦した方法を記載します。

### PRIME STADY
模試の解説がとても丁寧でわかりやすいです。動画での解説もあるので好きな方で勉強してください。
模試自体も本番に近い感じだと思います。

良い点
・模試の解説がわかりやすい
・動画での解説がある

イマイチな点
・模試が３つあるが、問題の内容はほぼ同じ（良くも悪くも）
・問題数が少なくちょっと物足りない

### ExamApp
PRIME STADYの模試を2〜３回解いてみましたが50〜60%しかとれず、基礎がほとんど身についていないことを実感しました。
そのため[ExamApp](https://python-basic.com/)のデータ分析模擬試験を解きまくりました。
初級〜中級を何度も解いているうちに知識が定着していく感覚がありました。時間制限がないため細切れで進めることができたのもよかったです。
試験勉強中の大半はこのサイトで問題を解き、間違えた箇所はNotionにまとめて見返していました。
一方で、基礎を身につけるにはよかったですが本番と似た問題はあまり出なかった印象でした。

良い点
・時間制限がない
・すべての問題に解説がある
・初級〜上級のレベルに分かれていて自分のレベルがわかりやすい。

イマイチな点
・本番の試験とあまり似た問題がない（※個人の感想です）
・初級〜中級は簡単で上級は重箱の隅を突くような問題な印象（※個人の感想です）


### ディープロ
本番に近い問題を調べると[ディープロ](https://diver.diveintocode.jp/dive_into_exam/2)がいいという意見が多かったので申し込みました。有料（980円）ですが、一週間の無料期間もあるので試してみてください。
私の場合、このディープロの問題が本番でもとても効きました。ディープロはめちゃくちゃおすすめです。
<b>この模試がコンスタントに8〜9割取れるようでしたら受験していいと思います。

良い点
・本番試験と似たような問題が出る
・模試後、間違えた分野の解説とミニテストがリンクで表示されるので復習しやすい
・模試以外の解説が丁寧

イマイチな点
・有料（素晴らしい教材なので有料なのは仕方ない）

## 出題分野の各対策

### データエンジニアの役割
ここは教科書を読んで覚えました。
[PRIME STADY](https://study.prime-strategy.co.jp/coverage/py3an1-02/)の模試解説に出てくる図が整理されていてわかりやすかったです。

### Pythonと環境
ここはJupyterLabの使い方を教科書を読んで覚えました。Python自体はすでに知っていることばかりなので対策はしませんでした。

### 数学の基礎
数学はほぼ捨てました。
出題範囲をみるとわかりますが、大半がライブラリから出題されます。
数学対策するくらいならライブラリの使い方を覚えたほうがいいだろうという考えです。
行列の計算、各数学の記号は覚えて臨みましたが計算系が出たら万事休すでした。

ただ、本番ではたまたま対策した以下のような問題が出たので幸運でした。
・行列の計算ができるパターンとできないパターン
・数学の記号について（例 ドット積の記号は？　答え：@）

### NumPyとpandas
暗記分野と割り切って教科書に出てくる全てのメソッドをNotionにまとめて覚えました。

その中でも下記の問題のようなデータの抽出方法は基本中の基本なので覚えないとダメです。
```
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([1, 2, 3])
print(a[-1:, [1, 2]])

## 出力  [[5 6]]
```
```
import pandas as pd
df = pd.DataFrame([[15, “a”, True],[20, “b”, False],[10, “c”, False]])
df.index = [“01”, “02”, “03”]
df.columns = [“A”, “B”, “C”]
a = df.iloc[“A”, “03”]
print(a)

## 出力  10
```

また、引数で使われる行と列の方向はちょっとややこしかったです。
>axis=0：行方向（vstack）
>axis=1：列方向（hstack）


### Matplotlib
グラフごとに引数などが違っていてややこしかったので教科書に載っているコードをすべて写経しました。これは時間がかかりましたが、頭の中で整理がついてここは得意分野になりました。

本番では「色の指定方法で誤っているものを選べ」や「この円グラフで誤っている記述は？」といった問題が出ました。
その辺も覚えておいたほうがいいと思います。
```
# 線の色を指定

fig, ax = plt.subplots()

# 名前で指定
ax.plot([1, 3], [3, 1], label='aqua', color='aqua')

# 16新数のRGBで指定
ax.plot([1, 3], [3, 1], label='#0000FF', color='#0000FF')

# RGBをfloatで指定
ax.plot([1, 3], [3, 1], label='(0.1, 0.2, 0.5, 0.3)', color='(0.1, 0.2, 0.5, 0.3)')

ax.legend()
```
```
explode = [0, 0.2, 0] # 1番目の要素(ham)を切り出す
fig, ax = plt.subplots()

ax.pie(
			x, 
			labels=labels, 
			startangle=90, 　　　# 12時から描画
			counterclock=False,　# 時計回りに描画
			shadow=True, 　　　　# 影をつける
			autopct='%1.2f%%',　# ％表記を追加
			explode=explode　　　# explodeを指定する	
) 
```

### scikit-learn
一番ややこしいところです。
結局教科書を熟読するのがいいと思いますが、教科書に書いてあることは難しく、ディープロの解説を読むことでようやく理解ができました。
機械学習の流れを覚えることは前提として「教師あり/教師なし」「回帰/分類」「次元削減/決定木」などどこの話なのか意識していくと覚えやすいと思います。
ここの勉強に一番時間をかけました。

### 上記完了後
あとはディープロでひたすら問題を解く＆解説を読み返すを繰り返しました。


## 勉強期間
2か月ほどでした。
最初の1カ月で教科書周回をして2カ月目は模試を解きまくりました。

## 受験してみて
受験してよかったです。
普段Pythonを使用してコーディングをしていますが、Pythonってこんな使い方もできるんだなーと率直に思いました。
普段手を出さない分野のことなので新鮮で楽しかったです。
ただ、この試験を通じて数学の知識をつけられたらと思っていたのですが思ったより時間がかかりそうというのと難しかったので受験してしまいました。そこは反省点です。