Python 証券コードから銘柄名を取得する方法

まくまく
まくまく
証券コードを入力して銘柄名を取得してみようと思います。

出力


左側に証券コードを入力して「銘柄名取得」ボタンを押すと、右側に名前がでてきます。


デタラメな数字を入力すると「銘柄はありません」と表示されます。

処理の流れ

データは、JPXが公開している「東証上場銘柄一覧」を取得して、それをデータフレームに格納しています。

入力された証券コードに対応する銘柄名をデータフレームから取得して表示しています。

サンプルプログラム

#ライブラリのインポート
import tkinter as tk
import requests
import pandas as pd

def load_data():
    global df
    url = "https://www.jpx.co.jp/markets/statistics-equities/misc/tvdivq0000001vg2-att/data_j.xls"
    r = requests.get(url)
    with open('data_j.xls', 'wb') as output:
        output.write(r.content)
    df = pd.read_excel("./data_j.xls", index_col=1)

def code2name():
    en_name.delete('0','end')
    code = en_code.get()
    if (int(code) in df.index.values) == True:
        s_name = df.at[int(code), '銘柄名']
        en_name.insert(0, str(s_name))
    else:
        en_name.insert(0, '銘柄はありません')
    
    
#ウインドウの作成
root = tk.Tk()
#ウインドウのタイトル
root.title("CODE to NAME")
#ウインドウサイズと位置指定 幅,高さ,x座標,y座標 
root.geometry("800x180+50+50")

#フレームの作成
frame = tk.Frame(root, width=780, height=160, bg="#D9D9D9")
frame.place(x=10, y=10)

frame_menu = tk.Frame(frame, relief=tk.FLAT, bg="#E6E6E6", bd=2)
frame_menu.place(x=10, y=10, width=150, height=140)

frame_img = tk.Frame(frame, relief=tk.FLAT, bg="#E6E6E6", bd=2)
frame_img.place(x=170, y=10, width=600, height=140)

#ラベル
l_text = tk.Label(frame_menu,text="証券コードを入力", relief="flat")
l_text.grid(row=0, column=0, sticky = tk.W)
l_text = tk.Label(frame_img,text="銘柄名", relief="flat")
l_text.grid(row=0, column=0, sticky = tk.W)

#証券コード入力ボックス
en_code = tk.Entry(frame_menu, width = 15)
en_code.grid(row=1, column=0, sticky = tk.W)
#銘柄名出力用
en_name = tk.Entry(frame_img, width = 60)
en_name.grid(row=1, column=0, sticky = tk.W)
#ボタン作成
button = tk.Button(frame_menu, text="銘柄名取得", command=code2name)
button.grid(row=2, column=0, sticky = tk.W)
#データフレーム読み込み
load_data()       
#イベントループ
root.mainloop()
タイトルとURLをコピーしました