import pandas as pd
import pandas_datareader.data as readData

import tkinter as tk
from tkinter import ttk
from tkinter import Menu

Main_win = tk.Tk()

Main_win.title('Stock BigData')
Main_win.geometry("840x525")
Main_win.resizable(False, False)

def _quit():
Main_win.quit()
Main_win.destroy()
exit()

def _check_search():
stock_code = str(_find_code()) + '.KS'
start_day = topFrame_start_day_entered.get()
end_day = topFrame_end_day_entered.get()

df = pd.DataFrame(readData.DataReader(stock_code, "yahoo", pd.to_datetime(start_day), pd.to_datetime(end_day)))
print(df)

def _find_code():
url = 'http://kind.krx.co.kr/corpgeneral/corpList.do?method=download'
df = pd.read_html(url, header=0)[0]
df = df[['회사명', '종목코드']]
df['종목코드'] = df['종목코드'].astype(str)
df['종목코드'] = df['종목코드'].apply(lambda x: x.zfill(6))

stock_name = topFrame_name_entered.get()

stock_code = df[df['회사명'] == stock_name].iloc[0][1]

return stock_code

topFrame = tk.Frame(Main_win, relief='solid')
topFrame.pack(side='top', fill='both', expand=1)

topFrame_label_1 = ttk.Label(topFrame, text=" 종목명 ")
topFrame_label_1.grid(column=0, row=0, sticky='w', padx=5, pady=5)

topFrame_name = tk.StringVar()
topFrame_name_entered = ttk.Entry(topFrame, width=24, textvariable=topFrame_name)
topFrame_name_entered.grid(column=1, row=0, sticky='w', padx=5, pady=5)

topFrame_label_2 = ttk.Label(topFrame, text=" 시작일 ")
topFrame_label_2.grid(column=2, row=0, sticky='w', padx=5, pady=5)

topFrame_start_day = tk.StringVar()
topFrame_start_day_entered = ttk.Entry(topFrame, width=10, textvariable=topFrame_start_day)
topFrame_start_day_entered.grid(column=3, row=0, sticky='w', padx=5, pady=5)
topFrame_start_day_entered.insert(0, "2000.01.01")

topFrame_label_3 = ttk.Label(topFrame, text=" 종료일 ")
topFrame_label_3.grid(column=4, row=0, sticky='w', padx=5, pady=5)

topFrame_end_day = tk.StringVar()
topFrame_end_day_entered = ttk.Entry(topFrame, width=10, textvariable=topFrame_end_day)
topFrame_end_day_entered.grid(column=5, row=0, sticky='w', padx=5, pady=5)
topFrame_end_day_entered.insert(0, "2020.12.31")

topFrame_button_1 = ttk.Button(topFrame, text="OK", command=_check_search)
topFrame_button_1.grid(column=6, row=0, sticky='w', padx=5, pady=5)

tab_Control = ttk.Notebook(Main_win)
tab1 = ttk.Frame(tab_Control)
tab_Control.add(tab1, text=" 주식 차트 ")
tab_Control.pack(expand=1, fill='both')

tab1_canvas = tk.Canvas(tab1, relief='solid', bg='white', width='800', height='400')
tab1_canvas.grid(column=0, row=0, sticky='w', padx=17, pady=30)

menu_bar = Menu(Main_win)
Main_win.config(menu=menu_bar)

file_menu = Menu(menu_bar, tearoff=0)
file_menu.add_command(label="Save")
file_menu.add_separator()
file_menu.add_command(label="Exit", command=_quit)
menu_bar.add_cascade(label='File', menu=file_menu)

help_menu = Menu(menu_bar, tearoff=0)
help_menu.add_command(label="About", command=_quit)
menu_bar.add_cascade(label='Help', menu=help_menu)

Main_win.mainloop()



[결과]






import tkinter as tk
from tkinter import ttk
from tkinter import Menu

Main_win = tk.Tk()

Main_win.title('Stock BigData')
Main_win.geometry("840x525")
Main_win.resizable(False, False)

def _quit():
    Main_win.quit()
    Main_win.destroy()
    exit()

def _check_search():
    stock_name = topFrame_name_entered.get()
    start_day = topFrame_start_day_entered.get()
    end_day = topFrame_end_day_entered.get()

    print(stock_name, start_day, end_day)

topFrame = tk.Frame(Main_win, relief='solid')
topFrame.pack(side='top', fill='both', expand=1)

topFrame_label_1 = ttk.Label(topFrame, text=" 종목명 ")
topFrame_label_1.grid(column=0, row=0, sticky='w', padx=5, pady=5)

topFrame_name = tk.StringVar()
topFrame_name_entered = ttk.Entry(topFrame, width=24, textvariable=topFrame_name)
topFrame_name_entered.grid(column=1, row=0, sticky='w', padx=5, pady=5)

topFrame_label_2 = ttk.Label(topFrame, text=" 시작일 ")
topFrame_label_2.grid(column=2, row=0, sticky='w', padx=5, pady=5)

topFrame_start_day = tk.StringVar()
topFrame_start_day_entered = ttk.Entry(topFrame, width=10, textvariable=topFrame_start_day)
topFrame_start_day_entered.grid(column=3, row=0, sticky='w', padx=5, pady=5)
topFrame_start_day_entered.insert(0, "2000.01.01")

topFrame_label_3 = ttk.Label(topFrame, text=" 종료일 ")
topFrame_label_3.grid(column=4, row=0, sticky='w', padx=5, pady=5)

topFrame_end_day = tk.StringVar()
topFrame_end_day_entered = ttk.Entry(topFrame, width=10, textvariable=topFrame_end_day)
topFrame_end_day_entered.grid(column=5, row=0, sticky='w', padx=5, pady=5)
topFrame_end_day_entered.insert(0, "2020.12.31")

topFrame_button_1 = ttk.Button(topFrame, text="OK", command=_check_search)
topFrame_button_1.grid(column=6, row=0, sticky='w', padx=5, pady=5)

tab_Control = ttk.Notebook(Main_win)
tab1 = ttk.Frame(tab_Control)
tab_Control.add(tab1, text=" 주식 차트 ")
tab_Control.pack(expand=1, fill='both')

tab1_canvas = tk.Canvas(tab1, relief='solid', bg='white', width='800', height='400')
tab1_canvas.grid(column=0, row=0, sticky='w', padx=17, pady=30)

menu_bar = Menu(Main_win)
Main_win.config(menu=menu_bar)

file_menu = Menu(menu_bar, tearoff=0)
file_menu.add_command(label="Save")
file_menu.add_separator()
file_menu.add_command(label="Exit", command=_quit)
menu_bar.add_cascade(label='File', menu=file_menu)

help_menu = Menu(menu_bar, tearoff=0)
help_menu.add_command(label="About", command=_quit)
menu_bar.add_cascade(label='Help', menu=help_menu)

Main_win.mainloop()

 


[결과]

 

 

 

 

 

 


import tkinter as tk
from tkinter import ttk
from tkinter import Menu

Main_win = tk.Tk()

Main_win.title('Stock BigData')
Main_win.geometry("800x400")
Main_win.resizable(False, False)

def _quit():
    Main_win.quit()
    Main_win.destroy()
    exit()

def _check_search():
    stock_name = tab1_name_entered.get()
    start_day = tab1_start_day_entered.get()
    end_day = tab1_end_day_entered.get()

 

    print(stock_name, start_day, end_day)

tab_Control = ttk.Notebook(Main_win)
tab1 = ttk.Frame(tab_Control)
tab_Control.add(tab1, text=" 주식 데이터 ")

tab_Control.pack(expand=1, fill='both')

tab1_label_1 = ttk.Label(tab1, text=" 종목명 ")
tab1_label_1.grid(column=0, row=0, sticky='W', padx=5, pady=5)

tab1_name = tk.StringVar()
tab1_name_entered = ttk.Entry(tab1, width=24, textvariable=tab1_name)
tab1_name_entered.grid(column=1, row=0, sticky='W', padx=5, pady=5)

tab1_label_2 = ttk.Label(tab1, text=" 시작일 ")
tab1_label_2.grid(column=2, row=0, sticky='W', padx=5, pady=5)

tab1_start_day = tk.StringVar()
tab1_start_day_entered = ttk.Entry(tab1, width=10, textvariable=tab1_start_day)
tab1_start_day_entered.grid(column=3, row=0, sticky='W', padx=5, pady=5)
tab1_start_day_entered.insert(0, "2000.01.01")

tab1_label_3 = ttk.Label(tab1, text=" 종료일 ")
tab1_label_3.grid(column=4, row=0, sticky='W', padx=5, pady=5)

tab1_end_day = tk.StringVar()
tab1_end_day_entered = ttk.Entry(tab1, width=10, textvariable=tab1_end_day)
tab1_end_day_entered.grid(column=5, row=0, sticky='W', padx=5, pady=5)
tab1_end_day_entered.insert(0, "2020.12.31")

tab1_button_1 = ttk.Button(tab1, text="OK", command=_check_search)
tab1_button_1.grid(column=6, row=0, sticky='W', padx=50)

menu_bar = Menu(Main_win)
Main_win.config(menu=menu_bar)

file_menu = Menu(menu_bar, tearoff=0)
file_menu.add_command(label="Save")
file_menu.add_separator()
file_menu.add_command(label="Exit", command=_quit)
menu_bar.add_cascade(label='File', menu=file_menu)

help_menu = Menu(menu_bar, tearoff=0)
help_menu.add_command(label="About", command=_quit)
menu_bar.add_cascade(label='Help', menu=help_menu)

Main_win.mainloop()

 


 

[결과]

 

 

 

 

 

 

import tkinter as tk
from tkinter import ttk
from tkinter import Menu

Main_win = tk.Tk()

Main_win.title('Stock BigData')
Main_win.geometry("800x400")
Main_win.resizable(False, False)

def _quit():
    Main_win.quit()
    Main_win.destroy()
    exit()

tab_Control = ttk.Notebook(Main_win)
tab1 = ttk.Frame(tab_Control)
tab_Control.add(tab1, text=" 주식 데이터 ")

tab_Control.pack(expand=1, fill='both')

menu_bar = Menu(Main_win)
Main_win.config(menu=menu_bar)

file_menu = Menu(menu_bar, tearoff=0)
file_menu.add_command(label="Save")
file_menu.add_separator()
file_menu.add_command(label="Exit", command=_quit)
menu_bar.add_cascade(label='File', menu=file_menu)

help_menu = Menu(menu_bar, tearoff=0)
help_menu.add_command(label="About", command=_quit)
menu_bar.add_cascade(label='Help', menu=help_menu)

Main_win.mainloop()

 


 

[결과]

 

 

 

 

 

 

 

[이전]


df = pd.read_csv('stock.csv')
df['Date'] = pd.to_datetime(df['Date'], errors='raise') # datetime64[ns] 으로 data type 변환
df['Dayofweek'] = df['Date'].dt.day_name() # 'Date'에 해당하는 날짜의 요일 생성

df1 = []

for i in range(df.shape[0]): # 월 1, 화 2, 수 3, 목 4, 금 5로 정의하여 리스트화
    week = df.iloc[i, -1]
    if week == 'Monday':
        df1.append(1)
    else:
        if week == 'Tuesday':
            df1.append(2)
        else:
            if week == 'Wednesday':
                df1.append(3)
            else:
                if week == 'Thursday':
                    df1.append(4)
                else:
                    if week == 'Friday':
                        df1.append(5)
                    else:
                        df1.append(0)

df['Num'] = df1

df2 = []

for i in range(df.shape[0]-1): # 금요일이 휴일 인 경우를 찾아 종가를 전날로 하기 위한 방법 적용
    if df.iloc[i+1, -1] - df.iloc[i, -1] < 0: # 일주일의 마지막 날이면 1, 아니면 0
        df2.append(1)
    else:
        df2.append(0)

df2.append(0)
df['WeekClose'] = df2

weekclose = df['WeekClose'] == 1 # 1인 경우만 필터링하면 일주일의 마지막 날만 필터링
weekclose = df[weekclose]
weekclose.set_index('Date', inplace=True)

print(weekclose['Close']) # 주 종가 리스트

 


[결과]

 

Date
2010-01-08    16420.0
2010-01-15    16840.0
2010-01-22    16500.0
2010-01-29    15680.0
2010-02-05    15000.0
               ...   
2020-11-27    68200.0
2020-12-04    71500.0
2020-12-11    73400.0
2020-12-18    73000.0
2020-12-24    77800.0
Name: Close, Length: 572, dtype: float64

 

 

 

 

+ Recent posts