pythonを利用した特許情報分析

株価と特許との相関分析pythonプログラム

/

# 初期化

## エラーが出たら再度「全てを実行」を選択し、再実行する。

# 書き出し図表内のファイルを全て削除

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(“終了しました”)