/
# 初期化
## エラーが出たら再度「全てを実行」を選択し、再実行する。
# 書き出し図表内のファイルを全て削除
import os
import shutil
import docx
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
# 削除
shutil.rmtree(‘./株価相関図表’)
# 作成
os.mkdir(‘./株価相関図表’)
# 初期化
doc = docx.Document()
npara = 0
# 図表Noを初期化
nfig = 0
fig_n = ‘図’ + str(nfig)
nhyo = 0
hyo_n = ‘表’ + str(nhyo)
#
#
# def発行件数の年別推移(折線グラフ作成)
## (nen_list, code_list, arr_nxny)に応じ、折線グラフを作成する。
import pandas as pd
import numpy as np
import openpyxl
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams[‘font.family’] = ‘MS PGothic’
import matplotlib.patches as patches
import csv
import copy
def oresen_graph02(nen_list, code_list, arr_nxny, fig_n, g_title,ylabel):
# 発行年読み込み
nnen = len(nen_list)
# print(‘nnen=’,nnen)
py_list = []
for str1 in nen_list:
str1 = str1[0:4]
py_list.append(str1)
# print(‘発行年=’,py_list)
# y軸の最大値を算出
nmax = 0
for str1 in arr_nxny:
for nn1 in str1:
if nn1 > nmax: nmax = nn1
# グラフ作成
fig = plt.figure(figsize=(12, 4), dpi=150, linewidth=10)
ax = fig.add_subplot(111)
x_datas = range(1, nnen+1)
# プロット
for str1 in arr_nxny:
plt.plot(x_datas, str1[0:])
plt.xticks(x_datas, nen_list)
plt.xlim(0, nnen+1) # ex:2011~2020の10年
plt.ylim(0, nmax*1.1) #y軸の最大値*1.1
plt.title(g_title, fontsize = 20)
plt.xlabel(‘発行年’, fontsize = 16)
plt.ylabel(ylabel, fontsize = 16)
plt.tick_params(labelsize=14)
plt.grid(True)
# 凡例を設定
hanrei_nm = code_list # コード+内容を凡例として格納
plt.legend(hanrei_nm, fontsize=12,bbox_to_anchor=(0, -0.3), loc=’upper left’) # 凡例の表示
print(fig_n)
# 図表書き出し
plt.savefig(‘株価相関図表/’ + fig_n + ‘.png’,bbox_inches=’tight’, pad_inches=0.05)
plt.show()
# 各列の合計件数リストを作成
ntot_list = []
for n1, str1 in enumerate(nen_list):
nxtot = 0
for str2 in arr_nxny:
nxtot = nxtot + float(str2[n1])
nxtot = round(nxtot,1)
ntot_list.append(nxtot)
# print(‘各列の合計件数=’,ntot_list)
# 2-3 出願人数年別推移のコメント1
# 合計ntot算出
ntot = 0
for n1 in ntot_list:
ntot = ntot + n1
# ピーク年判定
npeak = 0
pymax = 0
for n1, str1 in enumerate(ntot_list):
if str1>npeak:
npeak = str1
pymax= py_list[n1]
# 増減率を計算
bn = 0
testud_list = []
for n1,str1 in enumerate(ntot_list):
if n1>0:
if ntot > 0:
bd = ((str1 – bn)/ntot)*100
testud_list.append(bd)
else:
bd = 100 # とりあえず100に設定
testud_list.append(bd)
bn = str1
# 増減回数をカウント
ctud = 0 # 増減カウンタ
flgud = 0
for n1, str1 in enumerate(testud_list):
# 増減変化回数をカウント (ただし、件数が(平均/2)以上でかつ増減率1以上または-1以下が対象)
if ntot_list[n1] > (ntot/nnen)/2:
if flgud == 0:
if abs(str1) > 1:
ctud = ctud + 1
flgud = 1
if flgud == 1:
if str1 < -1:
ctud = ctud + 1
flgud = 0
wrd01 = “”
wrd02 = “”
return(wrd01,wrd02)
#
#
# 公報発行件数読み込み
## 公報発行件数、出願人数などの年別データを取得する
print(”)
print(‘出力サンプル’)
koho_data = pd.read_excel(‘公報data集計表.xlsx’,sheet_name=’公報data年別集計表’)
koho_nclm=(len(koho_data.columns)) # 出願人欄から最終年欄まで
print(‘koho_nclm=’,koho_nclm)
# print(‘koho_data[0:1]=’,koho_data[0:1])
head_list =list(koho_data[0:0]) # ヘッダをリスト化
ap00 = head_list[0]
print(ap00) # arrの[0][0]=出願人名を取得
# 読み込みデータ全体をDataFrameに変換
df00 = pd.DataFrame(koho_data)
# dataframeをarrayに変換
koho_arr00 = df00.values
# print(koho_arr00.index)
# 発行年読み込み
koho_nen_data = koho_data.columns[1:koho_nclm] # 発行年のminからmaxまで
koho_nen_list = []
for str1 in koho_nen_data:
str1 = str(str1)
koho_nen_list.append(str1)
koho_nnen = len(koho_nen_list)
print(‘発行年リスト=’,koho_nen_list,len(koho_nen_list))
# Y軸項目名読み込み
koho_ylist =[]
for n2, str1 in enumerate(koho_arr00):
koho_ylist.append(str1[0])
print(‘Y軸項目名=’,koho_ylist)
## 表内数値読み込み
koho_arr_nxny = []
for n1, str1 in enumerate(koho_arr00):
list01 = []
for n2, str2 in enumerate(koho_nen_list):
# if n2 > 0:
str3 = str1[n2+1]
list01.append(str3)
koho_arr_nxny.append(list01)
# print(‘arr_nxny=’,arr_nxny)
print(‘koho_arr_nxny[0:1]=’,koho_arr_nxny[0:1])
# 公報dataの%化
pkoho_list = []
for n2, str2 in enumerate(koho_arr_nxny):
ntot = 0
for n3, str3 in enumerate(str2):
if str(str3) == ‘nan’: str3 = 0
ntot = ntot + str3
# 公報dataの%化
list01 = []
for n4, str4 in enumerate(str2):
if str(str4) == ‘nan’: str4 = ntot
pkoho = (str4/ntot)*100
pkoho = round(pkoho,1)
list01.append(pkoho)
pkoho_list.append(list01)
print(‘pkoho_list=’,pkoho_list)
#
#
# 全出願人の株価リスト読み込み
import numpy as np
print(”)
print(‘出力サンプル’)
# 株価読み込み
kabuka_data = pd.read_excel(‘株価集計表.xlsx’,sheet_name=’企業別年別集計’)
kabu_nclm=(len(kabuka_data.columns)) # 出願人欄から最終年欄まで
print(‘kabu_nclm=’,kabu_nclm)
# 読み込みデータ全体をDataFrameに変換
df00 = pd.DataFrame(kabuka_data)
# dataframeをarrayに変換
kabu_arr00 = df00.values
# 発行年読み込み
nen_data = kabuka_data.columns[1:kabu_nclm] # 発行年のminからmaxまで
kabu_nen_list = []
for str1 in nen_data:
str1 = str(str1)
kabu_nen_list.append(str1)
kabu_nnen = len(kabu_nen_list)
print(‘株価年data=’,kabu_nen_list,len(kabu_nen_list))
# 企業名読み込み
kabu_ap_list =[]
for n2, str1 in enumerate(kabu_arr00):
kabu_ap_list.append(str1[0])
print(‘企業名=’,kabu_ap_list)
## 表内数値読み込み
kabu_arr_nxny = []
for n1, str1 in enumerate(kabu_arr00):
list01 = []
for n2, str2 in enumerate(kabu_nen_list):
str3 = str1[n2+1]
list01.append(str3)
kabu_arr_nxny.append(list01)
print(‘kabu_arr_nxny[0:1]=’,kabu_arr_nxny[0:1])
print(len(kabu_arr_nxny))
# 出願人別の株価リスト作成
kabu_list_nxny = []
for n1, str1 in enumerate(kabu_ap_list):
kabu_list_nxny.append(str1)
# 株価の%化
pkabu_list = []
for n2, str2 in enumerate(kabu_arr_nxny):
ntot = 0
for n3, str3 in enumerate(str2):
if str(str3) == ‘nan’: str3 = 0
ntot = ntot + str3
# 株価の%化
list01 = []
for n4, str4 in enumerate(str2):
if str(str4) == ‘nan’: str4 = 0
pkabu = (str4/ntot)*100
pkabu = round(pkabu,1)
list01.append(pkabu)
pkabu_list.append(list01)
print(‘pkabu_list=’,pkabu_list)
#
#
# 分析対象出願人の株価リストを取得
# import pandas as pd
import numpy as np
import sys
print(”)
print(‘出力サンプル’)
# データ確認
# koho_data = pd.read_excel(‘公報data集計表.xlsx’,sheet_name=’公報data年別集計表’)
# koho_nclm=(len(koho_data.columns)) # 出願人欄から最終年欄まで
# print(‘koho_nclm=’,koho_nclm)
# head_list =list(koho_data[0:0]) # ヘッダをリスト化
# ap00 = head_list[0]
print(‘対象出願人名=’,ap00) # arrの[0][0]=出願人名を取得
# 当該出願人の株価リスト取得
flg = 0
for n1, str1 in enumerate(kabu_ap_list):
if str1 == ap00:
kabuka = kabu_arr_nxny[n1]
# print(‘株価=’,kabuka)
pkabu_list00 = pkabu_list[n1]
# print(‘株価(%)=’,pkabu)
flg = 1
break
# 確認
if flg == 1:
print(‘株価の集計年=’,len(kabu_nen_list),kabu_nen_list)
print(‘株価リスト=’,kabuka)
print(‘株価(%)リスト=’,pkabu_list00)
print(‘公報発行年=’,len(koho_nen_list),koho_nen_list)
else:
print(‘株価データが見つかりません’)
sys.exit()
#
#
print(‘公報発行年=’,len(koho_nen_list),koho_nen_list)
#
#
# 株価と公報dataとの相関判定
## 公報data集計表.xlsxから読み取った公報data(出願人、公報発行件数、出願人数など)と、
## 当該出願人の株価との相関が強いシフト年数を判定する。
### 株価dataのシフト年数が例えば+1なら、公報発行年の1年後に株価に反映されると想定する。
### 株価dataの年数をシフトし、株価(%)と公報発行件数(%)との差分が最小のシフト年数を相関が強いシフト年数としている。
# import pandas as pd
import numpy as np
# テスト設定
# nfig = 1
print(”)
print(‘出力サンプル’)
# 株価と公報発行件数との相関判定(一括処理)
# 株価と公報発行件数との相関係数集計
kap_list = []
khtitle_list = [] # 公報dataの比較項目(公報発行件数、出願人数、・・・)
kbnx_list = [] # 株価dataのシフト年数(+は右シフト、例えば+1なら発行年の1年後に株価に反映)
dif_list = [] # 年毎の公報発行件数(%)と株価(%)の差分リスト
nykoho = len(koho_ylist)
# print(‘公報data項目数=’,nykoho)
for ny in range(nykoho):
# データ確認
# print(‘株価=’,kabu_arr_nxny[ny])
print(‘公報data項目名=’,koho_ylist[ny]) # 公報発行件数、出願人数、・・・
print(‘発行件数・人数=’,koho_arr_nxny[ny])
print(‘発行件数・人数(%)=’,pkoho_list[ny])
print(‘pkabu_list00=’,pkabu_list00)
# 株価と公報data項目を比較するグラフ作成
# グラフ作成用に株価リストを公報発行年の範囲に絞り込み
# print(‘pkabu_list=’,pkabu_list)
gpkabu_list = []
for n1, str1 in enumerate(koho_nen_list):
for n2, str2 in enumerate(kabu_nen_list):
if str1 == str2:
pkabu = pkabu_list00[n2]
gpkabu_list.append(pkabu)
print(‘gpkabu_list=’,gpkabu_list)
# 結合
nxny_list = []
nxny_list.append(pkoho_list[ny])
nxny_list.append(gpkabu_list)
print(‘nxny_list=’,nxny_list)
# ヘッダ長さを制限(長過ぎるとグラフが小さくなるため)
code_list = []
code_list.append(‘株価’)
code01 = koho_ylist[ny]
if len(code01) > 15:
code02 = code01[0:10] + ‘・・・’
else:
code02 = code01
# code_list.append(koho_ylist[ny] ) # 公報発行件数、出願人数、・・・
code_list.append(code01 ) # 公報発行件数、出願人数、・・・
print(‘code_list=’,code_list)
# 図表Noを加算
nfig = nfig + 1
fig_n = ‘図’ + str(nfig)
# def実行
nen_list = koho_nen_list
# code_list = [‘株価’,’件数・人数’]
arr_nxny = nxny_list
# fig_n = ‘図0’
# g_title = ‘発行件数の年別推移’
g_title = ap00 + ‘の「株価」と「’ + code02 + ‘」の年別推移’
flg = 0
if koho_ylist[ny] == ‘出願人数’: flg =1
if koho_ylist[ny] == ‘発明者数’: flg =1
if flg == 0: ylabel = ‘株価・件数(%)’
if flg == 1: ylabel = ‘株価・人数(%)’
wrd01,wrd02 = oresen_graph02(nen_list,code_list,arr_nxny,fig_n, g_title,ylabel)
# 株価(%)と公報発行件数(%)の年別比較
# 差分算出
nnen = len(koho_nen_list)
# print(nnen)
mindif = 100
bdif = 0
for k in range(6):
nx = k – 3
# print(‘シフト年=’,nx,’年’)
dntot = 0
for n1, str1 in enumerate(koho_nen_list):
if n1 > nnen + nx-1: break
for n2, str2 in enumerate(kabu_nen_list):
if str1 == kabu_nen_list[n2]:
# print(n1,n2, pkoho_list[n1],pkabu_list00[n2-nx])
dnn = abs(pkoho_list[ny][n1] – pkabu_list00[n2-nx])
dntot = dntot + dnn
if nx < 0:
dnsub = dntot/(nnen+nx)
else:
dnsub = dntot/nnen
dnsub = round(dnsub,2)
print(‘シフト年=’,nx,’年//’,’差分値=’,dnsub)
if dnsub < mindif:
mindif = dnsub
bmsg = koho_ylist[ny] + ‘の判定結果: シフト年=’ + str(nx) + ‘年//差分値=’ + str(dnsub)
bnx = nx
bdif = dnsub
print(bmsg)
print(”)
# 保存
kap_list.append(ap00)
khtitle_list.append(koho_ylist[ny]) # 公報dataの比較項目(公報発行件数、出願人数、・・・)
kbnx_list.append(bnx) # 株価dataのシフト年数(+は右シフト、例えば+1なら発行年の1年後に株価に反映)
dif_list.append(bdif) # 年毎の公報発行件数(%)と株価(%)の差分リスト
# DataFrame化
df1 = pd.DataFrame(data=kap_list, columns=[‘出願人’])
df2 = pd.DataFrame(data=khtitle_list, columns=[‘比較項目’])
df3 = pd.DataFrame(data=kbnx_list, columns=[‘シフト年数’])
df4 = pd.DataFrame(data=dif_list, columns=[‘平均差分値’])
# 結合
df20=pd.concat([df1,df2,df3, df4], axis=1)
# dataframeをarrayに変換
arr1 = df20.values
# シートを追加
bk = pd.ExcelFile(‘公報data集計表.xlsx’)
print(bk.sheet_names)
if ‘株価と公報dataとの相関’ not in bk.sheet_names:
book = openpyxl.load_workbook(‘公報data集計表.xlsx’)
ws = book.create_sheet(title=’株価と公報dataとの相関’)
# 保存
book.save(‘公報data集計表.xlsx’)
kabuka_data = pd.read_excel(‘株価集計表.xlsx’,sheet_name=’企業別年別集計’)
# Exce(xlsx)に書き出し
# ヘッダ作成
header_list =[[‘出願人’,’比較項目’,’シフト年数’,’平均差分値’]]
file_name = ‘公報data集計表.xlsx’
wb = openpyxl.load_workbook(file_name)
def write_list_1d(sheet, l_1d, start_row, start_col):
for y, row in enumerate(l_1d):
for x, cell in enumerate(row):
sheet.cell(row=start_row + y,
column=start_col + x,
value=l_1d[y][x])
sheet = wb[‘株価と公報dataとの相関’]
write_list_1d(sheet, header_list, 1, 1) # ヘッダを1行目1列目に書き込み
write_list_1d(sheet, arr1, 2, 1) # シート名「sheet」の1行目1列目からarr1の内容を書き込み
wb.save(file_name) # ファイル「file_name」に保存
print(‘公報data集計表.xlsxのシート「公報data集計表」に「株価と公報dataとの相関係数」を書き出しました’)
#
#
# 相関係数算出
## 分析項目の公報発行件数年別推移と株価年別推移との相関係数を算出
## 算出した相関係数を相関係数集計表.xlsxに書き出し
print(”)
print(‘出力サンプル’)
# 発行年読み込み
koho_nen_data = koho_data.columns[1:koho_nclm] # 発行年のminからmaxまで
koho_nen_list = []
for str1 in koho_nen_data:
str1 = str(str1)
koho_nen_list.append(str1)
koho_nnen = len(koho_nen_list)
print(‘発行年リスト=’,koho_nen_list,len(koho_nen_list))
print(‘公報data項目名=’,koho_ylist[0]) # 公報発行件数、出願人数、・・・
print(‘公報発行年=’,koho_nen_list)
print(‘年別公報発行件数’,pkoho_list[0])
print(‘株価集計年=’,kabu_nen_list)
print(‘年別株価’,pkabu_list00)
# ブックを作成
book = openpyxl.Workbook()
# 保存する
book.save(‘相関係数集計表.xlsx’)
# シートを作成
ws = book.create_sheet(‘分析対象別の相関係数’)
for ny in range(nykoho):
print(‘公報data項目名=’,koho_ylist[ny]) # 公報発行件数、出願人数、・・・
btitle = koho_ylist[ny].split(‘:’) # コード切り出し
print(‘btitle=’,btitle)
ws = book.create_sheet(title=btitle[0]) # コードをシート名としてシート追加
# 不要な「Sheet」を削除
del book[‘Sheet’]
# 保存
book.save(‘相関係数集計表.xlsx’)
print(‘相関係数集計表.xlsxをクリアしました’)
print(‘公報data項目数=’,nykoho)
for ny in range(nykoho):
print(‘公報data項目名=’,koho_ylist[ny]) # 公報発行件数、出願人数、・・・
btitle = koho_ylist[ny].split(‘:’) # コード切り出し
print(‘btitle=’,btitle)
# シフトしながら8年単位のリストを作成
tag_list = []
pykh00 = []
nkh00 = []
pykb00 = []
nkb00 = []
coef_list = []
for n1, str1 in enumerate(koho_nen_list):
if len(koho_nen_list[n1:n1+8]) < 8: break
x = np.array(pkoho_list[ny][n1:n1+8]) # 相関係数比較用のX
for n2, str2 in enumerate(kabu_nen_list):
if len(kabu_nen_list[n2:n2+8]) < 8: break
tag_list.append(koho_ylist[ny]) # 分析対象項目(公報発行件数、出願人数、・・・)
pykh00.append(koho_nen_list[n1:n1+8]) # 公報発行年リスト
nkh00.append(pkoho_list[ny][n1:n1+8]) # 公報発行件数リスト
# print(‘株価集計年=’,kabu_nen_list[n2:n2+8])
pykb01_list = “”
nkb01_list = “”
for str1 in kabu_nen_list[n1+n2:n1+n2+8]:
pykb01_list = pykb01_list + “,” + str1
pykb00.append(pykb01_list) # 株価集計年リスト
nkb00.append(pkabu_list00[n1+n2:n1+n2+8]) # 株価リスト
y = np.array(pkabu_list00[n2:n2+8]) # 相関係数比較用のY
# 相関行列を計算
coef = np.corrcoef(x, y)
# 相関行列を表示
print(‘相関係数=’,coef[0][1])
coef_list.append(coef[0][1]) # 相関係数
# 公報発行年を一重[]に修正
print(pykh00)
print(‘pykh00[0]=’,pykh00[0])
list11 = []
for n1,str1 in enumerate(pykh00):
list12 = “”
for n2,str2 in enumerate(str1):
if n2 == 0:
list12 = str(str2)
else:
list12 = str(list12) + “,” + str(str2)
list11.append((list12))
# print(list11)
# 公報発行件数を一重[]に修正
print(‘nkh00[0]=’,nkh00[0])
list21 = []
for n1,str1 in enumerate(nkh00):
list22 = “”
for n2,str2 in enumerate(str1):
if n2 == 0:
list22 = str(str2)
else:
list22 = str(list22) + “,” + str(str2)
list21.append((list22))
# print(list21)
# 株価集計年を一重[]に修正
print(‘pykb00[0]=’,pykb00[0])
list31 = []
for n1,str1 in enumerate(pykb00):
str1=str1[1:] # 1文字目の’;’を削除
# print(str1)
list31.append(str1)
list32 = “”
for n2,str2 in enumerate(str1):
if n2 == 0:
list32 = str(str2)
else:
list32 = str(list32) + “,” + str(str2)
# print(list31)
# 株価を一重[]に修正
print(‘nkb00[0]’,nkb00[0])
list41 = []
for n1,str1 in enumerate(nkb00):
# print(str1)
list42 = “”
for n2,str2 in enumerate(str1):
if n2 == 0:
list42 = str(str2)
else:
list42 = str(list42) + “,” + str(str2)
list41.append((list42))
# print(list41)
# DataFrame化
df1 = pd.DataFrame(data=tag_list,columns=[‘分析項目’])
df2 = pd.DataFrame(data=list11,columns=[‘公報発行年’])
df3 = pd.DataFrame(data=list21,columns=[‘公報発行件数’])
df4 = pd.DataFrame(data=list31,columns=[‘株価集計年’])
df5 = pd.DataFrame(data=list41,columns=[‘株価’])
df6 = pd.DataFrame(data=coef_list,columns=[‘相関係数’])
# 結合
df20=pd.concat([df1,df2,df3,df4,df5,df6], axis=1)
print(‘df20[0:1]=’,df20[0:1])
# dataframeをarrayに変換
arr1 = df20.values
# Exce(xlsx)に書き出し
# ヘッダ作成
header_list =[[“分析項目”,”公報発行年”,”公報発行件数”,”株価集計年”,”株価”,”相関係数”]]
file_name = “相関係数集計表.xlsx”
wb = openpyxl.load_workbook(file_name)
def write_list_1d(sheet, l_1d, start_row, start_col):
for y, row in enumerate(l_1d):
for x, cell in enumerate(row):
sheet.cell(row=start_row + y,
column=start_col + x,
value=l_1d[y][x])
print(‘btitle[0]=’,btitle[0])
sheet = wb[btitle[0]]
write_list_1d(sheet, header_list,1,1) # ヘッダを1行目1列目から書き込み
write_list_1d(sheet, arr1, 2, 1) # シート名「sheet」の2行目1列目からarr1の内容を書き込み
wb.save(file_name) # ファイル「file_name」に保存
print(‘相関係数を相関係数集計表.xlsxのシートに書き出しました。’)
print(”)
#
#
# 最大相関係数の公報発行件数推移と株価年別推移をグラフ化(折線)
print(”)
print(‘出力サンプル’)
print(‘公報data項目数=’,nykoho)
btitle_list = []
khkbk_nen_list = []
maxcoef_list = []
nn0_list = []
for ny in range(nykoho):
print(‘公報data項目名=’,koho_ylist[ny]) # 公報発行件数、出願人数、・・・
btitle = koho_ylist[ny].split(‘:’) # コード切り出し
print(‘btitle=’,btitle)
btitle_list.append(btitle)
#coef_data = pd.read_excel(‘相関係数集計表.xlsx’,sheet_name=’相関係数集計表’)
coef_data = pd.read_excel(‘相関係数集計表.xlsx’,sheet_name=btitle[0])
head_list =list(coef_data[0:0]) # ヘッダをリスト化
coef00 = head_list[0:4]
print(coef00) # ヘッダ確認
# 読み込みデータ全体をDataFrameに変換
df00 = pd.DataFrame(coef_data)
# dataframeをarrayに変換
coef00_arr = df00.values
# print(coef00_arr.index)
# 最大相関係数のdata読み込み
koho_nen_list = []
tag01 = “”
pykh01 = “”
nkh01 = “”
pykb01 = “”
nkb01 = “”
maxcoef = 0
for str1 in coef00_arr:
if str1[3].count(“,”) == 7:
str2 = float(str1[5])
if str2 > maxcoef:
maxcoef = str2
tag01 = str1[0]
pykh01 = str1[1] # 公報発行年
nkh01 = str1[2] # 公報発行件数
pykb01 = str1[3] # 株価集計年
nkb01 = str1[4] # 株価
if maxcoef > 0:
print(‘最大相関係数=’,maxcoef)
print(‘公報発行年=’,pykh01)
print(‘公報発行件数=’,nkh01)
print(‘株価集計年=’,pykb01)
print(‘株価=’,nkb01)
print(”)
else:
print(koho_ylist[ny],’の公報発行件数と株価との間に相関は無かった。’)
khkbk_nen_list.append(“0000年”)
nn0_list.append(10)
print(”)
maxcoef_list.append(maxcoef)
# 最大相関係数の折線グラフ作成
if maxcoef > 0:
# X軸(年)作成(公報発行年2桁と株価集計年2桁を組み合わせて年dataとする)
khnen_list = pykh01.split(‘,’) # 公報発行年
print(‘公報発行年=’,khnen_list,type(khnen_list))
kbnen_list = pykb01.split(‘,’) # 株価集計年
print(‘株価集計年=’,kbnen_list,type(kbnen_list))
nen2_list = []
for n1, str1 in enumerate(khnen_list):
str1 =str1[2:4]
str2 =kbnen_list[n1][2:4]
str3 = str1 + str2 + “年”
if n1 == 0: nn0 = int(str1) – int(str2)
nen2_list.append(str3)
print(‘公報発行年2桁+株価集計年2桁=’,nen2_list)
khkbk_nen_list.append(nen2_list[0])
print(‘ずれ年数=’,nn0)
nn0_list.append(nn0)
# 公報発行件数を数値化
nkh_list01 = nkh01.split(‘,’) # 公報発行件数
# print(nkh_list01,type(nkh_list01))
nkh_list02 = []
for str1 in nkh_list01:
str2 = float(str1)
nkh_list02.append(str2)
print(‘公報発行件数=’,(nkh_list02))
# 株価を数値化
nkb_list01 = nkb01.split(‘,’) # 株価
print(nkb_list01,type(nkb_list01))
nkb_list02 = []
for str1 in nkb_list01:
str2 = float(str1)
nkb_list02.append(str2)
print(‘株価=’,nkb_list02)
# arr_nxny作成
arr_nxny = []
arr_nxny.append(nkh_list02)
arr_nxny.append(nkb_list02)
print(‘arr_nxny=’,arr_nxny)
# 変数名修正
nen_list = nen2_list
code_list = [“株価”,”公報発行件数”]
# arr_nxny = arr_nxny
fig_n = “図0”
npos = koho_ylist[ny].find(“:”)
if npos > 0:
print(‘最大相関係数=’,maxcoef)
btitle = koho_ylist[ny].split(‘:’) # コード切り出し
btitle0 = btitle[0]
print(‘btitle0=’,btitle0)
g_title =”コード” + btitle0 + “の最大相関係数の公報発行件数と株価の年別推移”
else:
btitle0 = koho_ylist[ny]
g_title =btitle0 + “の最大相関係数の公報発行件数と株価の年別推移”
ylabel = “公報発行件数と株価(%)”
# 図表Noを加算
nfig = nfig + 1
fig_n = ‘図’ + str(nfig)
# def実行
wrd01,wrd02 = oresen_graph02(nen_list,code_list,arr_nxny,fig_n, g_title,ylabel)
# 書き出し
# 分析項目を一重[]に修正
print(‘btitle_list[0]’,btitle_list[0])
list11 = []
for n1,str1 in enumerate(btitle_list):
list12 = “”
for n2,str2 in enumerate(str1):
if n2 == 0:
list12 = str(str2)
else:
list12 = str(list12) + “,” + str(str2)
list11.append((list12))
print(list11)
print(khkbk_nen_list)
print(maxcoef_list)
print(nn0_list)
# DataFrame化
df1 = pd.DataFrame(data=list11,columns=[‘分析項目’])
df2 = pd.DataFrame(data=khkbk_nen_list,columns=[‘公報発行年2桁+株価集計年2桁’])
df3 = pd.DataFrame(data=maxcoef_list,columns=[‘相関係数’])
df4 = pd.DataFrame(data=nn0_list,columns=[‘ずれ年’])
# 結合
df20=pd.concat([df1,df2,df3,df4], axis=1)
print(‘df20[0:1]=’,df20[0:1])
# dataframeをarrayに変換
arr1 = df20.values
# Exce(xlsx)に書き出し
# ヘッダ作成
header_list =[[“分析項目”,”公報発行年2桁+株価集計年2桁”,”相関係数”,”ずれ年”]]
file_name = “相関係数集計表.xlsx”
wb = openpyxl.load_workbook(file_name)
def write_list_1d(sheet, l_1d, start_row, start_col):
for y, row in enumerate(l_1d):
for x, cell in enumerate(row):
sheet.cell(row=start_row + y,
column=start_col + x,
value=l_1d[y][x])
sheet = wb[‘分析対象別の相関係数’]
write_list_1d(sheet, header_list,1,1) # ヘッダを1行目1列目から書き込み
write_list_1d(sheet, arr1, 2, 1) # シート名「sheet」の2行目1列目からarr1の内容を書き込み
wb.save(file_name) # ファイル「file_name」に保
print(‘分析対象別の相関係数を相関係数集計表.xlsxのシートに書き出しました。’)
#
#
# 図表書き出し
## 保存した図表を株価相関まとめ.docxに書き出す。
print(”)
print(‘出力サンプル’)
for n1 in range(nfig):
fig_n = ‘図’ + str(n1+1)
doc.add_picture(‘./株価相関図表/’ + fig_n + ‘.png’)
figwrd = fig_n
para = doc.add_paragraph(‘ ’ + figwrd)
para.alignment = WD_ALIGN_PARAGRAPH.CENTER # 中央揃え
para.runs[npara].font.size = docx.shared.Pt(14)
doc.save(‘株価相関まとめ.docx’)
# doc.add_page_break() # 改頁
print(“保存した図表を株価相関まとめ.docxに書き出しました”)
#
#
print(“終了しました”)