## やりたい事
google colabからpythonを利用した処理で、
1)yahooの株価情報をスクレイピングしてきて、データフレームに格納
2)株価コードを追加したり、銘柄名を補正するなどのデータ変換
3)上記のデータをローカルにCSV保存する
1)yahooの株価情報をスクレイピングしてきて、データフレームに格納
#ライブラリの読み込み import pandas import datetime # プログラム def scraping_yahoo(code, start, end, term): base = "http://info.finance.yahoo.co.jp/history/?code={0}.T&{1}&{2}&tm={3}&p={4}" start = str(start) start = start.split("-") start = "sy={0}&sm={1}&sd={2}".format(start[0], start[1], start[2]) end = str(end) end = end.split("-") end = "ey={0}&em={1}&ed={2}".format(end[0], end[1], end[2]) page = 1 result = [] while True: url = base.format(code, start, end, term, page) df = pandas.read_html(url, header=0) if len(df[1]) == 0: break result.append(df[1]) page += 1 result = pandas.concat(result) result.columns = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close'] return result if __name__ == "__main__": company = 9683 ### 銘柄コードを指定する EndDate = datetime.date.today() StartDate = EndDate - datetime.timedelta(days=180) data = scraping_yahoo(company, StartDate, EndDate, "d") print(data)
上記のコードはこちらのサイトのものを参考にさせていただいています。
http://www.stockdog.work/entry/2016/08/28/180911
2)株価コードを追加したり、銘柄名を補正するなどのデータ変換
## スクレイピングデータを一時退避 df = data ## 日付項目をソートできるようにフォーマット変換 df['Date'] = pd.to_datetime(df['Date'], format='%Y年%m月%d日') ## adj CloseをDBに項目取り込みする為、スペース情報を_に変更 df = df.rename(columns={'Adj Close': 'Adj_Close'}) ## 銘柄コードを追加 df['bond_cd'] = company ## 移動平均算出の為、Date順にソートする df = df.sort_values(by=["Date"], ascending=True) ## 7日移動平均を算出して追加 df['avg_7day_Close'] = df["Close"].rolling(window=7).mean() ## indexをDateに変更 df.set_index("Date",inplace=True)
3)上記のデータをローカルにCSV保存する
from google.colab import files filename = "bond.csv" df.to_csv(filename) files.download(filename)