K_YOSHI’s プログラミング備忘録

プログラミング関係、その他のメモ

Python2からPython3への移行メモ

  • byte型からstr型への変換

以下のコードが動かなくなったのを修正:

# 処理するCSVファイルのリストを取得
file_name = np.genfromtxt("file_list",delimiter=",",dtype="S20" )

for csv_file in file_name:
    # それぞれのCSVファイル中のデータを取得し処理
    data         = np.genfromtxt( csv_file , delimiter=",")
 

"data=..."のところで、”AttributeError: 'int' object has no attribute 'split'”と言われてしまう。

以下を参照し、byte型からstr型への変換を明示することで修正:
python3のbytes型とstr型の比較と変換方法 | Python Snippets

以下修正コード:

# 処理するCSVファイルのリストを取得
file_name = np.genfromtxt("file_list",delimiter=",",dtype="S20" )

for csv_file in file_name:
    # それぞれのCSVファイル中のデータを取得し処理
    data         = np.genfromtxt( (csv_file.decode('utf-8')) , delimiter=",")    # decodeを追加
 

Mac 開発環境構築

[Mac] 開発環境構築

  1. Visual Studio for Macのダウンロード

www.visualstudio.com

  1. ダウンロードしたdmgをダブルクリックしてインストール

Androidもターゲットに含めておく

  1. EditorをVim

Visual Studio Community - 拡張機能vimを検索しインストール
が、コマンドモードが使えないようだ。

以下(英語)の2番目の回答を参照し、MacVimを外部ツールとして設定してみる。
stackoverflow.com

MacVimのインストールは以下を参照:
shinogasa.hatenablog.com

Pythonで偏自己相関係数を計算する

[Python] 偏自己相関係数

株価(日次または週次の終値)の時系列データを取得し、偏自己相関係数を求める。

参考にしたのはこちら:

logics-of-blue.com

# 株価(日次または週次の終値)の時系列データを取得し、偏自己相関係数を求める
# usage: python pacf.py code duration d_or_w (1: Per day/Else: Per week)

# ライブラリのインポート
import sys
import urllib.request
import bs4

import matplotlib.pyplot as plt

# 統計モデル
import statsmodels.api as sm

# Constants

# Arguments
# 証券コード
code            = sys.argv[1]
# 20 x duration (日または週)分のデータを取得
duration        = int(sys.argv[2])
# 日次または週次の選択
d_or_w          = int(sys.argv[3])
if d_or_w == 1:
        d_flag = "d"
else:
        d_flag = "w"

# Variables
# 株価時系列データ
price   = []

for i in range(1,duration+1):
        # Web上のリソースからsoupを作成
        url = "http://info.finance.yahoo.co.jp/history/?code="+code+"&sy=2000&sm=1&sd=1&tm="+d_flag+"&p="+str(i)
        soup = bs4.BeautifulSoup(urllib.request.urlopen(url).read() , "lxml" )
        # 株価時系列のテーブルの各行を参照
        for j in range(1,len(soup.findAll('table')[1].findAll('tr'))):
                # 株式分割・併合等の表示を除外
                if len(soup.findAll('table')[1].findAll('tr')[j].findAll('td')) == 7:
                        # print(soup.findAll('table')[1].findAll('tr')[j].findAll('td'))
                        # タグ、カンマ等を取り除く
                        src     = str(soup.findAll('table')[1].findAll('tr')[j].findAll('td')[6])
                        dst     = src.replace("<td>","")
                        dst     = dst.replace("</td>","")
                        dst     = dst.replace(",","")
                        # 株価時系列データ、過去→現在の順になるように追加(挿入)していく
                        price.insert( 0 , float(dst) )


# 自己相関
# price_acf = sm.tsa.stattools.acf(price, nlags=40)

# 偏自己相関
price_pacf = sm.tsa.stattools.pacf(price, nlags=40, method='ols')
# 偏自己相関の出力
#print( price_pacf )
plt.plot( price_pacf )
plt.show()