初心者プログラマのひとり勉強部屋

若葉マークのプログラマー☺️

【python入門】Python3エンジニア認定データ分析試験に合格したので勉強時間と教材など

こんにちは。

今回はpython3エンジニア認定データ分析試験に合格しましたので勉強時間など記載しようと思います。

【前提】
・python3エンジニア認定試験合格すみ(ただし7ヶ月前)
・(数学知識)大学は理系ですが何年も前なので数学的知識はほぼありません
・(プログラミング経験)python業務未経験、他の言語もスクール卒業した程度、プログラムの基本的な流れはわかる
・(pythonデータ関連)データ分析のライブラリは初めて触る(numpyだけUdemyで写経したことがある)


結果的に、800点/1000点で合格でした。
今回、教科書の写経は一切していません。
目的は趣味でデータ分析はどんなことをしているのか学んでみたいだけだったので、とにかく写経が面倒で暗記合格で良しとしました。

勉強期間は約2週間で22時間程度、使用教材は指定教材と模擬試験2種です。
今回はその勉強時間と、勉強法と感想を記載します。

エンジニア認定試験はこちらです

mocomo012.hatenablog.com


1.python3エンジニア認定データ分析試験の概要

2.勉強法と教材

3.結果・勉強時間

4.感想


1.python3エンジニア認定データ分析試験の概要

受験料:11,000円(税込)
出題数:40問
時間:1時間
合格ライン:700/1000(28問正解で合格ライン)


受験方法や概要、出題範囲が記載されています。

www.pythonic-exam.com

ライブラリの出題、特にscikit-learnが多いです。
ただ基本的に教科書の範囲から出題されるので教科書をマスターすれば大丈夫だと思います。


2.勉強法と教材

使用した教材は指定教材と模擬試験のみですが、その前に図らずにUdemyで数学の講座を途中まで受けています。
指定教材はキャンペーンで無料でいただいたきました。(おすすめです)

受験宣言して教科書のPython本をもらおう!(応募は2021年11月末日まで) | 一般社団法人Pythonエンジニア育成推進協会


結局私が手につけたのはUdemy・「pythonによるデータ分析の教科書」(指定教材)・模擬試験の3つです。
UdemyでNumpyなど使用した数学の基礎講義を受け、指定教材を流し読みしたらひたすら模擬試験とその復習をしていました。

 ◾️Udemy(数学の事前知識)

これは資格試験勉強を始める直前まで、資格関係なく受けていたのですが、思わぬところで役に立ちました。
機械学習に使用される数学の基礎が網羅(基礎・線形代数微分・確率)されています。
Jupyterインストールから数学の公式の紹介と、簡単な演習があります。
私にとってはnumpy・matplotlibの理解になりました。また微分の途中までしか受けていませんが数学のいい復習にもなりました。
ただそこまで難しい数学は出ないので、Udemyがなくとも教科書で大丈夫だと思います。
逆に数学が全くの初心者の方はもう少し噛み砕いた講座の方が良いかもしれません。

AIのための数学講座:少しづつ丁寧に学ぶ人工知能向けの線形代数/確率・統計/微分

www.udemy.com


Udemyの講義を購入する場合はセール中に購入するのが良いです。


 ◼️「pythonによるデータ分析の教科書」

Pythonによるあたらしいデータ分析の教科書 (AI&TECHNOLOGY) | 寺田 学, 辻 真吾, 鈴木 たかのり, 福島 真太朗 |本 | 通販 | Amazon


指定教材です。
ひたすらメソッドや関数が紹介されていて、説明は少ない印象を受けました。

試験範囲についてはよくまとまっていると思います。ただインデックスから逆引きできないのが非常に使いづらいです。
私の場合はほぼ1ページごとに付箋を貼ってインデックス代わりに使用しました。

これは1度目は流し読みで、模擬試験に力を入れました。


 ◼️模擬試験2種
study.prime-strategy.co.jp →比較的実践的な方のテスト

こちらの1回目の回答に説明がついています。
この説明が非常にわかりやすい!
このおかげで何をしているのか、ひいてはデータ分析とは何かを理解できました。
指定教材は素早く1週し、この回答の説明を早めに観ることをおすすめします。


exam.diveintocode.jp →比較的簡単な方のテスト
腕試しのようなイメージ


1つ目の模擬試験を1回ずつ3試験(3試験受けられます)、
2つ目の模擬試験を2回受けました。

どちらも1度も合格点達していないまま、試験に臨みました。。(6割程度)



3. 結果・勉強時間
◾️結果
800/1000 合格

◾️勉強時間
計 2週間で約22時間 (Udemyでの数学の勉強込みで25hほど)
方法:毎日1〜2時間の勉強で2週間ちょっと
 ・教科書を1章ずつ・numpy1日・pandas1日・matplotlib1日・scikit-learn2日(1-2時間/日) 計8hほど
 ・教科書を1週後、模擬試験と教科書の復習 計12hほど
 ・教科書に載っているメソッドと関数一覧・使い方などをエクセルに作成して、受験前にスマホで確認する(2h)

4. ◾️感想
受けた所感ですが、pythonエンジニア認定試験よりは簡単でした。
ポイントは、prime studyさまの模擬試験の解説がとにかくわかりやすいこと。
私はあまり受験に乗り気ではなかったのですが、この解説のおかげで意外と理解でき、データ分析面白いと感じることができました!
復習中心の勉強方法で、模擬試験を受けて、復習で教科書を逆引きしながら確認するという方法でした。
(前にも書いてあるようにINDEXがひどすぎて逆引きできなかったため、私の場合は付箋でいっぱいになりました。。) 今回は写経もしていないで暗記で乗り切りましたが、興味本位で受けるには十分とします!


今回は、python3エンジニア認定データ分析試験の体験記でした☺️
データ分析については今回意外と面白かったので別の本も購入し、本格的にそちらで勉強しようと思います。 データ分析と言っても触りだけのため費用対効果はありませんが、勉強が楽しかったので結果的に満足です。 これから受験される方のお役に立てれば幸いです。

今後の資格取得予定(2021年7月)

こんにちは。

資格の勉強はほぼ趣味ですが、今後の資格取得予定と、
キャンペーンを見つけましたのでお知らせ(自分の受験宣言)しようと思います。

今後とる予定の資格

◼️ python3エンジニア認定データ分析試験
 →2021年9月までにPython3エンジニア認定データ分析試験を受験します。

◼️ 基本情報技術者試験
 →2021年10月に受験予定です。

と、宣言します!

なぜここで宣言なのかというと、、

キャンペーンがあります(python3エンジニア認定データ分析試験)。

www.pythonic-exam.com

なんと、指定図書が先着順で配布されるとのこと。 また延長されるかもしれませんが、受験を考えている方は早めに応募して見てください。

他にもキャンペーンは更新されているようなので、都度お知らせはチェックしていた方がいいかもしれません。

お知らせ | 一般社団法人Pythonエンジニア育成推進協会

現在はリベンジ無料キャンペーンもあります。

→Python3エンジニア基礎認定試験の不合格→合格体験談も記載しています。
mocomo012.hatenablog.com




今は在宅でのお仕事もあるのですが宣言したからには両立して勉強頑張ります。

【python入門】pythonチュートリアルで詰まった点(位置引数とキーワード引数について)

今回は、チュートリアルで詰まった位置引数・キーワード引数(*args **kwargs)の解説です。

  1. その他の制御フローツールの
    4.7. 関数定義についてのところです。

docs.python.org






位置引数
指定した引数の順で渡されます。
例えば以下のような文のX,Yは位置引数です。

def test(X,Y):   #2つの位置引数
        print('位置引数:',X,Y)
    
test(1,2)   #X=1,Y=2

結果

位置引数: 1 2




キーワード引数
引数の前に*をつけるとキーワード引数になります。

例)*args , **kwargs (*の後は何の文字でもいい)

*が1つだとタプル型・**と2つだとディクショナリ型として渡されます。

def test(*argsY,**kwardsZ):
        print(argsY,kwardsZ)
    
test(1,2,3,4,5,dic=6,dicdic=7)

結果

(1, 2, 3, 4, 5) {'dic': 6, 'dicdic': 7}

ディクショナリ型の場合はキーとキーワードを指定できます。


混合した場合

位置引数とキーワード引数を使う場合、チュートリアルにも記載あるように、
位置引数の後にキーワード引数を指定しなければいけません。

def test(X,*argsY,**kwardsZ):  #位置引数Xの後にキーワード引数argsY,kwardsZ
        print(X,argsY,kwardsZ)
    
test(1,2,3,4,5,dic=6,dicdic=7)


結果

1 (2, 3, 4, 5) {'dic': 6, 'dicdic': 7} #位置引数が1つなので、位置引数として渡されるのは1つのみ




※参考にさせていただきました🙏
Pythonの可変長引数(*args, **kwargs)の使い方 | note.nkmk.me

【便利ツール】ブログのキーワード設定について

こんにちは。

SEO対策が気になる方も多いと思います。
私自身は、ワードプレスでもう一つブログを運営しています。
そちらの方はPC関連の便利技をこまごまと記載してSEOも意識して頑張っているのですが、 さすがに分野が広範囲すぎて質の良い記事が多くあまり意味をなしていません。。

そんな時にキーワード設定・カテゴリ設定で役に立ったのが「検索順位チェッカー」です。

checker.search-rank-check.com
キーワードで入力して検索順位が表示されます。便利!

他にもチェックツールがあるようですが、こちらが無料で使いやすいです。
他のチェックツールは以下のサイト様が参考になります。

seolaboratory.jp

ちなみにこのブログは内容がニッチすぎて狭い範囲の検索用語で探すと上位に表示されてびっくりしています。

他にも

◾️ブログテーマを専門領域にする
参考

rainote.net

◾️オリジナルコンテンツ(コピペを避ける)にする(コンテンツが重視されるようです)
参考

www.seo-pro.jp

◾️SEOに強いテーマを選ぶ
参考

service.plan-b.co.jp

など参考になりました。
でもやっぱり内容が一番です。やっぱり検索で上位に表示されるブログはそれだけ有益な情報を提示しているということです。
このブログはただの備忘録ですが、もう一つのブログで頑張ってみようと思います。

【python入門】pythonチュートリアルで詰まった点(エラーと例外・継承の実行順序)

今回は、pythonチュートリアルで試験でも出題数の多い「エラーと例外」で詰まった点です。

docs.python.org

チュートリアルで以下の例文があります。

class B(Exception):
    pass

class C(B):
    pass

class D(C):
    pass

for cls in [B, C, D]:
    try:
        raise cls()
    except D:
        print("D")
    except C:
        print("C")
    except B:
        print("B")


結果

B
C
D



流れはこのようになります。

f:id:mocomo012:20210122162351p:plain
例外の順番

B①→B②→B③
C①→C②→C③
D①→D②→D③

こちらのExceptionの順番を逆にすると結果が「BBB」になります。

class B(Exception):
    pass

class C(B):
    pass

class D(C):
    pass

for cls in [B, C, D]:
    try:
        raise cls()
    except B:
        print("B")
    except C:
        print("C")
    except D:
        print("D")


結果

B
B
B

疑問
なぜ「BCD」にならないのか

答えは、継承にあります。

◾️継承
親クラスのメソッドや属性を派生クラスで使用できるようにすることです。 下記サイト様が大変参考になります。

Pythonのクラス(class)の継承に関する知識と方法のまとめ | HEADBOOST

上のチュートリアルの例文ではclassCはclassBを継承していて、classDはclassBを継承しているclassCを継承しています。
この場合のコードの派生クラスDの実行順序をmro()関数で見てみます

class B(Exception):
    pass

class C(B):
    pass

class D(C):
    pass

for cls in [B, C, D]:
    try:
        raise cls()
    except B:
        print("B")
    except C:
        print("C")
    except D:
        print("D")
        
print(D.mro())

結果

B
B
B
[<class '__main__.D'>, <class '__main__.C'>, <class '__main__.B'>, <class 'Exception'>, <class 'BaseException'>, <class 'object'>]

派生クラスD→派生クラスC→親クラスB→基底クラス
の順で実行されていることが分かります。
チュートリアルで記載されているように、「最初に一致した except 節が駆動されるのです。」ので、D・C・Bのなかで最初のexceptであるBになるのでした。

継承の順番はこちらの記事を参考にさせていただきました。

www.sejuku.net