モーリーのメモ

アプリ開発等(プログラミング、CG作成)、興味を持ったことを実践してまとめるブログです。

モーリーのメモ

『Anaconda』のインストール→環境構築をしてプログラムを実行する!:Python

【 今回やること! 】

  • 『Anaconda(アナコンダ)』をインストールします。
  • 『Anaconda』でPythonの開発環境を構築します。
    • プログラムの作成と実行が出来る『Jupyter Notebook』をインストールします。
  • 『Jupyter Notebook』でPythonのプログラムを実行します。
 
 『Anaconda』はPythonの開発環境を簡単に構築するためのパッケージです。
 
 ここでいう開発環境とは、Python本体・ライブラリ・コードエディタ・実行環境のセットです。それぞれバージョンや種類を自由に組み合わせて環境を構築することが出来ます。
 
 Pythonのエディタとして有名な『Jupyter Notebook(ジュピター ノートブック)』も、『Anaconda』のパッケージに含まれています。『Jupyter Notebook』はドキュメント・コード・実行結果をまとめて編集出来るエディタです。『Google Colaboratory』は『Jupyter Notebook』を元に作られているそうです。
 
 これまで『Google Colaboratory』をメインで使っていましたが、やはり環境がリセットされてしまうのがネックです。また元から入っているライブラリは、Googleが知らぬ間にバージョンを変更する可能性があります。なので自分で管理出来るローカル環境を作成したいと思いました。
 
 『Anaconda』を使ってPythonのローカル環境を作成し、プログラムを実行するまでの手順を説明します。

使用環境

 私が使用している環境です。

『Anaconda』の公式サイト

『Anaconda』のインストール

  1. 下記のサイトを開きます。
    Anaconda Python/R Distribution - Free Download
  2. Windows』の『64-Bit Graphical Installer (462 MB)』をクリックします。
    f:id:mmorley:20191126091849p:plain:w550
    『Anaconda3-2019.10-Windows-x86_64.exe』がダウンロードされます。
  3. 『Anaconda3-2019.10-Windows-x86_64.exe』をダブルクリックして実行します。
  4. 『Next』をクリックします。
    f:id:mmorley:20191126105437p:plain:w400
  5. 『I Agree』をクリックします。
    f:id:mmorley:20191126105734p:plain:w400
  6. ”使用するユーザー”を選択して、『Next』をクリックします。
    この手順では『Just Me(recommended)』を選択します。
    f:id:mmorley:20191126130415p:plain:w400
  7. ”インストール先のフォルダ”を選択して、『Next』をクリックします。
    f:id:mmorley:20191126150416p:plain:w400
  8. ”高度インストールオプション”を選択して、『Install』をクリックします。
    この手順ではデフォルトのままにしています。
    f:id:mmorley:20191126152653p:plain:w400

    【 和訳 】

    • AnacondaをPATH環境変数に追加する
      おすすめしません。 代わりに、Windowsの[スタート]メニューでAnacondaを開き、[Anaconda(64-bit)]を選択します。 この「PATHに追加」オプションを使用すると、以前にインストールしたソフトウェアの前にAnacondaが検出されますが、Anacondaをアンインストールして再インストールする必要があるという問題が発生する可能性があります。
      チェックを入れると、Anaconda以外のPython環境を使う場合に不具合が起きる可能性があるらしいです。
    • AnacondaをデフォルトのPython 3.7として登録する
      これにより、Visual Studio PyCharm、Wing IDE、PyDev、MSIバイナリパッケージ用のPythonツールなどの他のプログラムが、システム上のプライマリPython 3.7としてAnacondaを自動的に検出できるようになります。
  9. インストールが開始されるので、完了まで待ちます。
    f:id:mmorley:20191126153909p:plain:w400
  10. 『Next』をクリックします。
    f:id:mmorley:20191126155925p:plain:w400
  11. 『Next』をクリックします。
    f:id:mmorley:20191126162043p:plain:w400

    【 和訳 】

    AnacondaとJetBrainsは連携して、PyCharm IDEに緊密に統合されたAnaconda搭載の環境を提供します。
    これは宣伝ですかね。
  12. 『Finish』をクリックします。
    チェックを付けるとそれぞれ下記のページが開きます。
    f:id:mmorley:20191126162731p:plain:w400

    【 和訳 】

    Anacondaは、最も人気のあるPythonデータサイエンスプラットフォームです。
    Anaconda Cloudでノートブック、パッケージ、プロジェクト、環境を共有しましょう!
    • Anaconda Cloudの詳細について学習する。チェックを入れると下記のページが開きます。
      https://anaconda.org/
    • Anacondaの始め方について学習する。チェックを入れると下記のページが開きます。
      docs.anaconda.com
インストールは以上です。

『Anaconda Navigator』でPythonの開発環境を構築する

  1. Windows』の『スタートメニュー』を開き、『Anaconda3 (64-bit)』-『Anaconda Navigator (Anaconda3)』をクリックします。
    f:id:mmorley:20191126174728p:plain
  2. 下図の画面が出るので、お好みでチェックをオンオフして、『Ok, and don't show again(OK、再度表示しない)』をクリックします。
    f:id:mmorley:20191126174817p:plain:w400

    【 和訳 】

     Anaconda Navigatorは、重要なPythonアプリケーションを簡単に起動し、ローカルのAnacondaインストールのパッケージを管理するのに役立ちます。また、Python、SciPy、およびPyDataコミュニティを学習し、活用するためのオンラインリソースに接続します。
     Anaconda Navigatorの改善、バグの修正、Pythonを誰でも簡単に使用できるようにするために、ほとんどのWebブラウザーやモバイルアプリと同様に、匿名化された使用情報を収集します。
     これをオプトアウト(拒否)するには、以下のチェックを外してください(この設定は[設定]メニューでいつでも変更できます)。
    • はい、Anacondaの改善に協力したいと思います。

    ここから『Anaconda Navigator』で作業

  3. 『Environments』をクリックして、次に『Create』をクリックします。
    f:id:mmorley:20191126202151p:plain
  4. 下図のように設定して『Create』をクリックします。
    f:id:mmorley:20191127083919p:plain
    • 『Name』は自由に付けて下さい。
    • 『3.7』はPythonのバージョンです。
    • R言語を使う場合は『R』にチェックします。今回は使いません。
    Pythonの開発環境として『backtest』が作成されます。
  5. 『Home』をクリックして『backtest』を選択し、『Jupyter Notebook』の『Install』をクリックします。
    f:id:mmorley:20191128131628p:plain
  6. 『Launch』をクリックします。
    f:id:mmorley:20191127141949p:plain
    ブラウザが起動して『Jupyter Notebook』のページが開きます。

『Jupyter Notebook』でプログラムを実行する

作業フォルダを作る

    ここから『Jupyter Notebook』で作業

  1. フォルダ一覧の『Desktop』をクリックして、次に『New』→『Folder』をクリックします。
    f:id:mmorley:20191127162006p:plain
  2. 『Untitled Folder』のチェックをONにして、『Rename』をクリックします。
    f:id:mmorley:20191127165404p:plain
  3. 好きな名前を付けて、『Rename』をクリックします。
    f:id:mmorley:20191127165615p:plain
    ここでは『JupyterNotebooks』と付けています。

新規『Notebook』を作る

『Notebook』はドキュメント・コード・実行結果をまとめて保存できるファイルです。

  1. 『JupyterNotebooks』フォルダをクリックして開いて、次に『New』→『Python 3』をクリックします。
    f:id:mmorley:20191127172930p:plain
    『新規Notebook』のページが開きます。
  2. Notebookの名前の『Untilted』をクリックします。
    f:id:mmorley:20191127174255p:plain
  3. 好きな名前を付けて、『Rename』をクリックします。
    f:id:mmorley:20191127174841p:plain
    ここでは『backtest』と付けています。

コードを貼り付ける

  1. 『コードセル』に下記のコードを貼り付けます。
     これは『FXDD』というサイトから、FXのヒストリカルデータをダウンロードしてCSVファイルに変換するコードです。詳しい内容は下記の記事で説明しています。

    %%time 
    # ↑セルの処理時間を計算 %%timeはセルの最初に単独で書く
    
    import os # ディレクトリ作成、パス結合、ファイル削除
    import datetime # 日付取得
    import requests # ダウンロード処理
    import zipfile # zip解凍
    import numpy as np # 数値データ高速処理
    import pandas as pd # データ構造化
    
    # 取得・作成したデータを保存するディレクトリのパス
    hst_dir = os.path.join(os.getcwd(), 'hst_' + datetime.datetime.today().strftime('%Y%m%d'))
    
    
    if not os.path.exists(hst_dir): # ディレクトリが無い場合
        os.mkdir(hst_dir) # ディレクトリを作成
    
    # 取得する通貨ペアを指定
    list = ['USDJPY']
    
    for item in list:
        print(item)
        zip_url = 'http://tools.fxdd.com/tools/M1Data/' + item + '.zip' # ダウンロード元url
        zip_file = os.path.join(hst_dir, item + '.zip') # 保存先ファイル名
        req = requests.get(zip_url)
        with open(zip_file, 'wb') as f:
            f.write(req.content)
        print(' :ダウンロード完了')
      
        # zipファイルを解凍する
        with zipfile.ZipFile(zip_file, 'r') as f: # 読み込みモードで開く
            f.extractall(hst_dir) # zip展開 
            print(' :zip解凍完了')
        
        # hstファイルをcsvファイルに保存する
        with open(os.path.join(hst_dir, item + '.hst'), 'rb') as f:
            # hstのヘッダ(148byte)からバージョン(先頭の4byte)を取得
            # dtype='i4':符号あり32ビット整数型
            ver = np.frombuffer(buffer=f.read(148)[:4], dtype='i4') 
            if ver == 400: # バージョンが400の場合
                # 1行のデータの並びを定義
                dtype = [
                    ('DateTime', 'u4'),  # 'u4':符号なし32ビット整数型
                    ('Open', 'f8'),      # 'f8':符号あり64ビット整数型
                    ('Low', 'f8'),       #
                    ('High', 'f8'),      #
                    ('Close', 'f8'),     #
                    ('Volume', 'f8')     #
                ]
            elif ver == 401: # バージョンが401の場合
                # 1行のデータの並びを定義
                dtype = [
                    ('DateTime', 'u8'),  # 'u8':符号なし32ビット整数型
                    ('Open', 'f8'),      # 'f8':符号あり64ビット整数型
                    ('Low', 'f8'),       #
                    ('High', 'f8'),      #
                    ('Close', 'f8'),     #
                    ('Volume', 'f8')     #
                    ('Spread', 'i4'),    # 'i4':符号あり32ビット整数型
                    ('RealVolume', 'i8') #
                ]
            # バイナリデータをPandasのデータフレームに変換する
            df = pd.DataFrame(np.frombuffer(buffer=f.read(), dtype=dtype))
            # DateTime列を日付データに変換してインデックスに設定して、変換前の列を削除する
            df = df.set_index(pd.to_datetime(df['DateTime'], unit='s')).drop('DateTime', axis=1) 
    
            display(df.head(2)) # データの先頭2行を書き出す
            display(df.tail(2)) # データの末尾2行を書き出す
        
            #csvファイルに保存
            df.to_csv(os.path.join(hst_dir, item + '.csv'))
            print(' :csvに変換完了')
        
        # ファイルを削除
        os.remove(zip_file) # zipファイル削除
        os.remove(os.path.join(hst_dir, item + '.hst')) # hstファイル削除
        print(' :zip、hst削除完了')
    

必要なライブラリを追加する

  1. 必要なライブラリが足りないのですが、試しに『Run』をクリックして実行します。
    f:id:mmorley:20191127180713p:plain
  2. 実行した『コードセル』の下に"必要なライブラリ名"がエラー表示されるので、その下の『コードセル』に下図のように入力して、『Run』をクリックします。
    f:id:mmorley:20191127234537p:plain

    !pip install requests
    

    『requests』ライブラリがインストールされます。

  3. 『コードセル』で下図のコマンドを実行し、他に必要なライブラリをインストールします。
    先程と同様にエラーメッセージで必要なライブラリ名を確認しています。
    f:id:mmorley:20191127235451p:plain

    !pip install numpy
    !pip install pandas
    

  4. 再び最初の『コードセル』を実行します。
    下図のように結果が表示され、デスクトップの『JupyterNotebooks/hst_(日付)』フォルダ内に『USDJPY.csv』が保存されます。
    f:id:mmorley:20191128001049p:plain

補足

『Jupyter Notebook』の起動フォルダを変更する

    ここから『Anaconda Navigator』で作業

  1. 『Environments』をクリックして、『backtest』の『▶』→『Open Terminal』をクリックします。
    f:id:mmorley:20191128124356p:plain
  2. 『コマンド プロンプト』が起動するので、下記のコマンドを貼り付けて実行します。

    jupyter notebook --generate-config
    

  3. 『jupyter_notebook_config.py』が作成されて、その場所が表示されます。

    Writing default config to: C:\Users\(ユーザー名)\.jupyter\jupyter_notebook_config.py
    

    ここから『Windows アクセサリ』の『メモ帳』で作業

  4. エクスプローラー』で『jupyter_notebook_config.py』を含むフォルダを開き、『jupyter_notebook_config.py』をメモ帳にドラッグ&ドロップします。
  5. メモ帳で『Ctrl + f』キーを押して、『c.NotebookApp.notebook_dir』を検索します。
  6. 下図の部分を変更して上書き保存します。
    • 変更前

      ## The directory to use for notebooks and kernels.
      #c.NotebookApp.notebook_dir = ''
      

    • 変更後

      ## The directory to use for notebooks and kernels.
      c.NotebookApp.notebook_dir = 'C:\Users\(ユーザー名)\Desktop\JupyterNotebooks'
      

      • 先頭の”#(シャープ)”を削除します。
      • 好きなフォルダを設定します。
    • 『Jupyter Notebook』を再起動して、起動フォルダが変更されていることを確認します。

『コードセル』の幅をブラウザの幅に合わせる

 ブラウザの幅を変更したときに、『コードセル』の幅も合わせて変更されるようにします。
 『Notebook』ごとに一度実行する必要があります。

    ここから『Jupyter Notebook』で作業

  1. 『コードセル』に下記のコードを貼り付けて、『Run』をクリックします。

    %%HTML
    <style>
        div#notebook-container    { width: 95%; }
        div#menubar-container     { width: 65%; }
        div#maintoolbar-container { width: 99%; }
    </style>
    

あとがき

 『Jupyter Notebook』以外にもエディタがありますが、『JupyterLab』を使ったときにグラフが上手く表示されないケースがあったので『Jupyter Notebook』を使っています。