【1000点満点で合格できた!】Python 3 エンジニア認定データ分析試験に合格する、おすすめの勉強法とは…?

Python
この記事は約16分で読めます。

  • Python 3 エンジニア認定データ分析試験の概要を知りたい
  • おすすめの勉強法を知りたい
  • どんな問題が出題されたのか知りたい

この記事はそんな方へ向けて書いています。

ナバ
ナバ

はじめまして。

IT企業でデータ分析をしています、ナバと申します。

2019年9月20日に Python3 エンジニア認定データ分析試験(β版)に1000点満点で合格した私が、同試験の対策法をご紹介します。

【試験結果レポート】

Python 3 エンジニア認定データ分析試験ってどんな資格?

Python3エンジニア認定データ分析試験は、一般社団法人Pythonエンジニア育成推進協会という運営団体の民間資格です。

Python 3 エンジニア認定データ分析試験の概要は下記のとおりです。(以下、公式より引用)

概要:Pythonを使ったデータ分析の基礎や方法を問う試験
受験料金:1万円(外税) 学割5千円(外税)
問題数:40問(すべて選択問題)
合格ライン:正答率70%
試験センター:全国のオデッセイコミュニケーションズCBTテストセンター
主教材:「Pythonによるあたらしいデータ分析の教科書」(翔泳社)
著者:寺田 学、辻 真吾、鈴木 たかのり、福島 真太朗(敬称略)

出題範囲:主教材である翔泳社「Pythonによるあたらしいデータ分析の教科書」より以下の範囲と割合で出題する予定です

 一般社団法人Pythonエンジニア育成推進協会
問題数問題割合
1データ分析エンジニアの役割25.00%
2Pythonと環境
1実行環境構築12.50%
2Pythonの基礎37.50%
3Jupyter Notebook12.50%
3数学の基礎
1数式を読むための基礎知識12.50%
2線形代数25.00%
3基礎解析12.50%
4確率と統計25.00%
4ライブラリによる分析実践
1NumPy615.00%
2pandas717.50%
3Matplotlib615.00%
4scikit-learn820.00%
5応用: データ収集と加工00.00%

4章「ライブラリによる分析実践」から67.5%が出題されます。

短い勉強時間で合格したい方4章を優先的に勉強することをおすすめします。

Python資格を取得するメリット

Pythonは、最先端技術のAIやディープラーニングの開発言語として確固たる地位を築いています。

その証拠に、IEEE Spectrumが発表した最新のプログラミング言語人気ランキング2019年版では、Pythonが1位となっています。

最先端技術の根底となるPythonのスキルを習得することで、エンジニアやデータサイエンティストとして活躍できる場が広がるメリットがありそうです。

おすすめの勉強法

この試験は、どれだけ主教材の内容を覚えられるかがポイントになります。

時間をかけると忘れてしまいがちなので、短期集中で勉強することをおすすめします。

私は4日間で20時間勉強しました。
私はデータ分析の実務とプログラミングの経験があったため、20時間の学習で合格出来ましたが、未経験の方は、更に勉強時間が必要かもしれません。

以下、20時間の内訳です。

・休日8時間×2
・平日2時間×2

勉強方法は、主教材を3周ほど読み返し、分からないコードは実際に動かして処理内容を理解しました。

✓オススメの勉強法

  • 主教材を3周以上読み返す
  • 主教材に青太字で記載されている内容は絶対覚える
  • 分からないコードは実行して、処理内容を理解する

✓主教材をチェックする

この記事を見ているあなたはラッキーです。

なぜなら、実際に試験(ベータ版)に出た問題を知ることができるからです。

ナバ
ナバ

本番で下記の問題が出題されたら、必ず正解できるよう準備しよう!

どんな問題が出題されたか

私が受験した際に出題された問題と略解を紹介します。
下記は、あくまで略解なので、詳細は主教材の該当ページをご参照ください。
該当ページは【】に記載しています。

データエンジニアの役割

Q1. Python以外でデータ分析に使用する言語は?【p.4】←主教材の該当ページ

Rです。
Pythonは機械学習に強いのに対し、Rは統計解析に強い言語です。

Q2. 教師なし学習に分類される手法は?【p.9】

教師なし学習の1つがクラスタリングです。
クラスタリングはデータの類似度に基づき、データのクラス分けをする手法です。

Pythonと環境

Q3. venvの用途は?【p.17】

venvはPythonの仮想環境です。
同一マシン上で異なるバージョンのPythonパッケージを使い分けたいときに便利です。

Q4. Pythonのコーディング規約の名称は?【p.27】

PEP8

Q5. リスト内包表記の正しい書き方は?【p.31】

リスト内包表記は繰り返し処理の表記を短く手法です。
処理を囲む記号は[]です。
例:[len(name) for name in names]
内包表記は短く書けるだけでなく、処理速度も速くなるというメリットもあります。

Q6. loggingモジュールで出力されるエラーで上から2番目の危険度を表すものは?【p.37】

ERROR
CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET

Q7. Jupyter Notebookの機能として正しいものは?【p.43】

Jupyter Notebook はグラフ描写の機能を持っています。

数学の基礎

Q8. {1,2,3}U {2,4} の集合は?【p.53】

{1,2,3,4}
双方の集合から重複を除いた組み合わせが返されます。

Q9. ベクトルで演算できないのはどんなとき?【p.61】

次元数が異なるベクトル同士では、足し算はできません。

Q10. 行列の演算でできないのはどんなとき?【p.65】

行列では、割り算ができません。

Q11. 微分を表さない記号はどれ?【p.70】

∫(インテグラル)は積分を表す記号です。

Q12. 6目サイコロの出目の期待値は?【p.84】

期待値は起こりうる事象とその発生確率を掛け合わせたものです。
サイコロの場合、起こりうる事象は1~6で、各目が発生確率は1/6です。
よって期待値は、1×1/6 + 2×1/6 + 3×1/6 + 4×1/6 + 5×1/6 + 6×1/6 = 3.5
となります。

Q13. 中央値より平均値が大きくなるデータの構造は?【p.76】

平均値は外れ値に引っ張られやすいという特性を持っています。
1が5個並んだデータを想像してください。このデータの中央値と平均値はどちらも1です。
そこに100という大きな値(外れ値)を追加したとき、
中央値と平均値はどう変わるでしょうか。
中央値は1のままですが、平均値は17.5になります。
このように、データの一部が高い値で、大部分が低い値を占める場合は
中央値より平均値が大きくなりやすいです。

ライブラリによる分析実践

Numpy

Q14. a = np.array([[1 , 2], [3 , 4], [5 , 6]]).shape の出力は?【p.97】

(3,2)
shapeは配列の形状(行数、列数)を返します。

Q15. a = np.array([[1 , 2], [3 , 4], [5 , 6]]) a[ : , 1] の出力は?【p.104】

array([2,4,6])
すべての行と1番目の列要素を返します。
Pythonの要素番号は、0から始まります。

Q16. np.arrange(1 , 5)の出力は?【p.109】

array([1,2,3,4])
第1引数の値から (第2引数の値)-1 までの連番を返します。

Q17. 任意の値で配列を埋める関数は?【p.120】

full関数
第一引数に生成したい配列の形状を、第二引数に任意の埋める値を渡します。

print(np.full(3, 100))
# [100 100 100]

Q18. ユニバーサルファンクションの説明で正しいのは?【p.126】

ユニバーサルファンクションとは配列要素内のデータを一括で変換する関数です。
下のコード例では、 配列要素内のデータ1~3を三角関数(sin)で一括変換しています。

x = np.arange(1, 4)
# array([1, 2, 3])
 
np.sin(x)
# array([ 0.84147098,  0.90929743,  0.14112001]) 

Q19. ドット積を表す演算子は?【p.140】

@ (アットマーク)

pandas

Q20. データフレームの1行目1列目を参照するには?【p.140】

df.iloc[0,0]
Pythonの要素番号は、0から始まることに注意です。

Q21. データを直列化して保存する形式は?【p.147】

pickle形式
オブジェクト(配列や変数)をpickleというバイナリファイルにすることで、
プログラムが終了した後もオブジェクトの状態を保存できます。
pickleの複数形はpickles(ピクルス)、つまり漬け物です。
「オブジェクトを漬け物にして、いつでも食べられる(読み込める)ようにする」
というイメージです。

Q22. sort_valuesメソッドに関しては正しいものは?【p.153】

sort_valuesメソッドのデフォルトの並び順は昇順です。

Q23. pd.date_range()の誤ったコードは?【p.158】

×:pd.date_range(start=’2019-04-01′, period=”M”)
pd.date_range() は日時の連続値を生成する関数です。
period=オプションには生成したいデータ数を指定するので、上記の period= “M” はおかしいです。
例えば、2019-04-01以降の月末日付を5個生成したい場合は、
pd.date_range(start=’2019-04-01′, period=5, freq=”M”)
とします。

Q24. psndasの欠損値表記は?【p.164】

NaN

Q25. 中央値を計算するメソッドは?【p.171】

median()

Q26. 散布図行列プロットの説明で誤っているものは?【p.173】

pandasではscatter_matrixで散布図行列が作成できます。
対角線上にヒストグラム、非対角要素に散布図が表示されます。
箱ひげ図は表示されません。

#scatter_matrixのサンプルコード
df = pd.DataFrame(np.random.randn(1000, 4), columns=['A','B','C','D'])
scatter_matrix(df, alpha=0.2)

Matplotlib

Q27. オブジェクト指向スタイルの返り値は?【p.177】

サブプロットと描画オブジェクトです。
サブプロットが個々のグラフに対応し、描画オブジェクトが全体に対応します。

Q28. subplotsの指定で誤っているものは?【p.180】

×:subplots(ncol=2)で2行1列のグラフを作成
2行1列のサブプロットで構成されるグラフを作成したい場合は、subplots(2)と指定するのが正しいです。

Q29. ビン数を5に指定してヒストグラムをプロットするコードは?【p.193】

 ⇒ax.hist(x, bins=5)
 bins=オプションでビン数を指定します。

import numpy as np
import matplotlib.pyplot as plt

mu, sigma = 100, 10
x = mu + sigma * np.random.randn(1000)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

ax.hist(x, bins=50) #ビン数:50
fig.show()

Q30. 次のコードでプロットされる円グラフの説明で正しいものは?【p.198】

import numpy as np
import matplotlib.pyplot as plt
 
x = np.array([100, 200, 300, 400, 500])
plt.pie(x, counterclock=False, startangle=90)

counterclock=False:データが反時計回りで出力されます。
startangle=90:円グラフの始まりの位置が90度頂点になります。

Q31. フォント設定に関する説明で誤っているものは?【p.206】

×:辞書にフォント設定をまとめて登録し、上書きを禁止することができる
辞書に登録しておいたフォント設定を呼び出すことで、フォント設定の手間が省けますが、上書きを禁止することはできません。
辞書登録したフォント設定よりも上書き(個別)で指定されたフォント設定が優先されます。

Q32. フォント設定に関する説明で正しいものは?【p.206】

辞書にフォント設定をまとめて登録した後、個別でフォント指定ができる。
辞書登録したフォント設定よりも上書き(個別)で指定されたフォント設定が優先されます。

scikit-learn

Q33. One-hotエンコーディングについて正しいものは?【p.217】

ある列だけ1で他のカラムは0とする行列の表現です。
カテゴリ変数を数値変数に変換する際に使用されます。

Q34. 分類モデル構築の流れとして誤っているものは?【p.224】

×:交差検証は複数のモデルに対して学習・検証を繰り返す。
複数のモデルではなく、複数に分割した学習用データと検証用データで学習・検証を繰り返します。

Q35. 決定木に関する説明で正しいものは?【p.234】

決定木はノードとエッジから構成されます。
データの分類ルールを木構造で表現できるため、分析結果の可読性が高いことが決定木の最大のメリットです。

Q36. 回帰の例として正しいものは?【p.242】

数学の点数を英語の点数で説明する。

Q37. 次元削減について正しいものは?【p.244】

次元削減とはデータが持っている情報を損ねることなく、別のデータに変換することです。
次元削減の方法の1つに、主成分分析があります。
オーバーフィッティング対策に使用されます。

Q38. モデルの評価指標の説明で誤っているものは?【p.250】

×:F値は適合率と再現率の算術平均
正しくは、「F値は適合率と再現率の調和平均」です。
再現率は、実際に正であるものを、正であると予測できた割合です。
適合率は、正と予測したものが、実際に正であった割合です。
両者はトレードオフ(一方が高ければ、もう一方は低くなる)の関係です。
再現率と適合率のバランスを取った指標がF値です。

Q39. ROCとAUCの説明で正しいものは?【p.254】

ROC曲線(Receiver Operating Characteristic Curve)の下部面積をAUCといい、AUCが1に近づくほど予測精度が良いモデルとされます。

Q40. 教師なし学習の説明で誤っているものは?【p.???】

×:正解率を評価しながら学習する
「教師なし=正解なし」なので、正解率は評価できません。

まとめ

試験勉強を通じて、Pythonで実践するデータ分析の基礎を理解することができます。

主教材を熟読して理解できていれば、満点合格も夢じゃないです。

あなたが合格されることを心よりお祈りしております。

✓主教材をチェックする

あわせて読みたい記事

試験の主教材について知りたい方はこちら!

Python 3 エンジニア認定データ分析試験の申込手順を知りたい方はこちら!

AI・機械学習について学びたい方にオススメの講座

[TechAcademy]自宅で学べるオンラインのプログラミングスクール

あなたの現在の実力をもとに、もっとも効果的で無駄のないトレーニングメニューをご用意!
パーソナルメンターのメンタリングとオリジナル学習システムで目標到達まで最短距離で進みます。

こんな方にオススメ

機械学習を学びエンジニアとして活躍したい方
忙しい社会人の方でも、平日の夜、休日を使って学習することで働きながらでもジョブチェンジに挑戦することが可能です。

・将来の技術を学びたい学生の方
これからの時代に必要となる機械学習のスキルを身につければ、就職にも必ず役立ちます。

コメント

タイトルとURLをコピーしました