Upgrade to Pro — share decks privately, control downloads, hide ads and more …

hannari_20191206_goto.pdf

namao510
December 06, 2019

 hannari_20191206_goto.pdf

namao510

December 06, 2019
Tweet

Other Decks in Education

Transcript

  1. みんなのはんなりPythonの会 2019/12/06
    ~環境構築 & コード作成~
    @namao

    View Slide

  2. みんなのはんなりPythonの会 2019/12/06
    自己紹介
     @namao
     Python歴:2年弱
    業務利用(データ分析)
     興味のあるIT技術 (Python以外)
    Go, Linux(Debian),セキュリティなど
     後輩などにPython指導する機会↗
    connpass

    View Slide

  3. みんなのはんなりPythonの会 2019/12/06
    概要 私の指導経験
     業務中での後輩指導
     業務外での親友への指導(タダ!)

    View Slide

  4. みんなのはんなりPythonの会 2019/12/06
    概要
    学習(つまずき)ポイント
     環境構築
    →AnacondaによるPython3.8環境構築
     コードの書き方
    →速いコード(pandas)作成
    私の指導経験
     業務中での後輩指導
     業務外での親友への指導(タダ!)

    View Slide

  5. みんなのはんなりPythonの会 2019/12/06

    View Slide

  6. みんなのはんなりPythonの会 2019/12/06
    コン
    パイ

    不要 必要
    イン

    トー
    ル元
    Anaconda独自 Python公式
    Anaconda vs pip https://www.anaconda.com/understanding-conda-and-pip/
    コンパイル: テキストからバイナリに変換 (初心者には難)
    青字:メリット

    View Slide

  7. みんなのはんなりPythonの会 2019/12/06
    コン
    パイ

    不要 必要
    イン

    トー
    ル元
    Anaconda独自 Python公式
    Anaconda vs pip https://www.anaconda.com/understanding-conda-and-pip/
    青字:メリット
    Windowsユーザーには、Anacondaがおすすめ!

    View Slide

  8. みんなのはんなりPythonの会 2019/12/06
    パッケージ情報を知る
     コマンド: conda search (パッケージ名) –c (チャンネル名)
    *動作環境: cmd (windows)
    コンパイル情報



    Pythonのversion
    AnacondaのPython version対応状況を把握可

    View Slide

  9. みんなのはんなりPythonの会 2019/12/06
    仮想環境作成
    仮想環境イメージ
     コマンド: conda create -n (仮想環境名) python=(version番号)
    (パッケージ名) –c (チャンネル名)
    実行例
    *動作環境: cmd (windows)

    View Slide

  10. みんなのはんなりPythonの会 2019/12/06
    仮想環境作成
    仮想環境イメージ
     コマンド: conda create -n (仮想環境名) python=(version番号)
    (パッケージ名) –c (チャンネル名)
    実行例
    *動作環境: cmd (windows)
    2コマンドで
    環境構築可能

    View Slide

  11. みんなのはんなりPythonの会 2019/12/06
    Jupyter notebook エラー解消 (windows)
    asyncio.pyに上記コードを追加

    View Slide

  12. みんなのはんなりPythonの会 2019/12/06
    Python以外のパッケージ1 (R)
    https://anaconda.org/conda-forge/r-essentials
    Jupyter上でのR

    View Slide

  13. みんなのはんなりPythonの会 2019/12/06
    Python以外のパッケージ2 (git, git-bash)
    https://anaconda.org/anaconda/git
    Windowsでの
    bash(Linux)環境候補として
    Git-bashもおすすめ
    https://anaconda.org/conda-forge/git-bash
    git git-bash

    View Slide

  14. みんなのはんなりPythonの会 2019/12/06

    View Slide

  15. みんなのはんなりPythonの会 2019/12/06
    少休止(人もコードも?)
    世間では・・・
    生産性向上
    (スピード)

    View Slide

  16. みんなのはんなりPythonの会 2019/12/06
    少休止(人もコードも?)
    世間では・・・
    生産性向上
    (スピード)
    コードも同じ!

    View Slide

  17. みんなのはんなりPythonの会 2019/12/06
    速いコードの書き方(一般論)
     Python(スクリプト言語)の速さはコード行数に比例
     forループを減らすことが基本
    N=10**4
    a=[]
    for i in range(N):
    if i%3==0:
    a.append(i)
    N=10**4
    a=[i for i in range(N) if i%3==0]
    ☓ ◯

    View Slide

  18. みんなのはんなりPythonの会 2019/12/06
    コードのスピード測定 (jupyter noebook)
    Jupyterでは%%timeitというマジックコマンドを使うのが簡単!
    https://ipython.readthedocs.io/en/stable/interactive/magics.html#cell-magics
    ☓ ◯

    View Slide

  19. みんなのはんなりPythonの会 2019/12/06
    処理のイメージ図
    コードの速度比較(例1:ファイル結合)
    ☓ 10000
    生徒一人の3教科の点数

    View Slide

  20. みんなのはんなりPythonの会 2019/12/06
    処理のイメージ図
    コードの速度比較(例1:ファイル結合)
    ① ②

    View Slide

  21. みんなのはんなりPythonの会 2019/12/06
    処理のイメージ図
    コードの速度比較(例1:ファイル結合)
    ① ②

    View Slide

  22. みんなのはんなりPythonの会 2019/12/06
    コードの速度比較(例2:行毎の合計)
    10000人の学生それぞれの
    3教科の合計点を算出
    10000
    Eng, Math, Japan
    sum
    処理のイメージ図

    View Slide

  23. みんなのはんなりPythonの会 2019/12/06
    コード例 (10000人の3教科の合計)
    ① data.apply(sum,axis=1)
    ② data['Eng']+data['Math']+data['Japan’]
    ③ data.eval('Eng+Math+Japan’)
    ④ data.sum(axis=1)
    ⑤ pd.Series(data.values.sum(axis=1))
    10000
    Eng, Math, Japan
    sum
    処理のイメージ図
    コードの速度比較(例2:行毎の合計)

    View Slide

  24. みんなのはんなりPythonの会 2019/12/06
    コード例 (10000人の3教科の合計)
    ① data.apply(sum,axis=1)
    ② data['Eng']+data['Math']+data['Japan’]
    ③ data.eval('Eng+Math+Japan’)
    ④ data.sum(axis=1)
    ⑤ pd.Series(data.values.sum(axis=1))
    速度結果
    ①1160 ms,②2.58 ms,③9.96 ms,④2.05 ms,⑤1.14 ms
    10000
    Eng, Math, Japan
    sum
    処理のイメージ図
    コードの速度比較(例2:行毎の合計)

    View Slide

  25. みんなのはんなりPythonの会 2019/12/06
    本日のまとめ
    環境構築
     Anaconda活用方法(python3.8環境をコマンドで作成)
     Python以外のパッケージ(例: R, git)もインストール可
    コードの書き方
     速さを意識したコードを書くことは重要
     スピード測定には、%%timeitが便利 (jupyter notebook)

    View Slide

  26. みんなのはんなりPythonの会 2019/12/06

    View Slide

  27. みんなのはんなりPythonの会 2019/12/06
    まとめ
     アイデアを確認します。
     上位の候補に投票して集約します。
     要件と制限を確認します。
     上位 5 から 10 のアイデアにリストの内容を調整します。

    View Slide