PythonのモジュールPandasを使って、
Yahoo!ファイナンスからドイツのDAX株価指数と、その構成銘柄データを取得、
そのうち、株式分割調整後終値をプロットし、pngファイル化。
ついでにモジュールxlsxwriterを使って、Excelファイルにプロットした結果を挿入してみます。
実行環境と、必要なモジュールは、以下の通り。
実行環境
Windows 8(64ビット)
Python 2.7(32ビット)
必要モジュール
pandas (データ取得、データフレーム作成モジュール)
matplotlib (図表作成モジュール)
xlsxwriter (エクセルファイル作成モジュール)
Yahooファイナンスから得た株価指数をExcelへエキスポート
# -*- coding: utf-8 -*-
'''
Created on 2015/10/03
@author: yukitake-miyamoto
'''
import sys
import os.path
import numpy as np
from glob import glob
import pandas.io.data as web
import matplotlib.pyplot as plt
from xlsxwriter.workbook import Workbook
# ドイツ主要銘柄とドイツ株価指数のYahooファイナンス上の略号
symbols = ['ADS.DE', 'ALV.DE', 'BAS.DE', 'BAYN.DE', 'BEI.DE', 'BMW.DE', 'CBK.DE','CON.DE', 'DAI.DE', 'DB1.DE','DBK.DE',
'DPW.DE','DTE.DE', 'EOAN.DE', 'FME.DE', 'FRE.DE', 'HEI.DE', 'HEN3.DE', 'IFX.DE', 'LHA.DE', 'LIN.DE', 'LXS.DE',
'MRK.DE', 'MUV2.DE', 'RWE.DE', 'SAP.DE', 'SDF.DE', 'SIE.DE', 'TKA.DE', 'VOW3.DE', '^GDAXI']
DAX_list = []
# 主要銘柄をYahooより読み込み(2000-1-1から現在まで)
for sym in symbols:
DAX_df = web.DataReader(name=sym, data_source='yahoo' , start='2000-1-1')
DAX_df['company'] = sym
DAX_list.append(DAX_df)
i = 0
plt.hold(False)
# 主要銘柄ごとに、株式分割調整後終値をプロット実施(pngファイルに書き出す)
for dx in DAX_list:
dx['Close'].plot(figsize=(8,5))
stock_name = dx['company'][0]
plt.savefig(os.path.dirname(os.path.abspath(sys.argv[0])) + "\\" + "DAX-" + stock_name + ".png")
i = i + 1
# プロットした株式分割調整後終値(pngファイル)をグロブ
img_list = glob(os.path.dirname(os.path.abspath(sys.argv[0])) + "/DAX-*.png")
workbook = Workbook('DAX.xlsx')
worksheet = workbook.add_worksheet('DAX-List')
i = 0
worksheet.set_column('A:A', 20)
# pngファイルをエクセルへ挿入
for img in img_list:
stock_name = os.path.basename(img).split('.')[0] + '.' + os.path.basename(img).split('.')[1]
worksheet.write('A' + str(1 + i * 25), stock_name)
worksheet.insert_image('A' + str(2 + i * 25), img)
i = i + 1
workbook.close()
出力イメージ