- 이 강좌는 초심자 특히 전혀 프로그래밍에 대한 경험이 없는 분들을 대상으로 합니다.
  ( This course is for beginners, especially those with no programming experience. )

 

# -*- coding: utf-8 -*-
# from datetime import datetime

import datetime
import pandas as pd
import numpy as np
import pandas_datareader as pdr
import matplotlib
import matplotlib.font_manager as fm
import matplotlib.pyplot as plt


# start = input("시작일자를 입력하세요: ")
# start = datetime(2022,1,1)
# end   = datetime(2022,3,19)
start = datetime.date(2022,1,1)
# end   = datetime.date(2022,3,19)
end   = datetime.date.today()



# df = pdr.DataReader('005930.KS','yahoo',start,end)
df = pdr.DataReader('^KS11','yahoo',start,end)




df.rename(columns={'Adj Close':'Adj_Close'}, inplace=True)

dates =[]
for x in range(len(df)):
    newdate = str(df.index[x])
    newdate = newdate[0:10]
    dates.append(newdate)

df['Date'] = dates

# print(df.index)
# print(df.columns)
# print(df)

for loopCnt_1 in range(0, len(df.index)):
    rowText = str(df.Date[loopCnt_1])
    rowText += "--" + str(df.High[loopCnt_1])
    rowText += "--" + str(df.Low[loopCnt_1])
    rowText += "--" + str(df.Open[loopCnt_1])
    rowText += "--" + str(df.Close[loopCnt_1])
    rowText += "--" + str(df.Volume[loopCnt_1])
    rowText += "--" + str(df.Adj_Close[loopCnt_1])
    # print( rowText )

# print( df['Date'] )
# print( df['Close'] )

# print(str(start)[0:10])
# print(str(end)[0:10])

# 폰트 설정
font_location = '/Users/yuk-youngmin/Library/Fonts/NanumGothic.otf' # For Mac
#font_location = 'C:/Windows/Fonts/NanumGothic.ttf' # For Windows
fm.fontManager.addfont(font_location)
font_name = fm.FontProperties(fname=font_location).get_name()
matplotlib.rc('font', family=font_name)

# 가로 20, 세로 10인 액자를 만듬.
plt.figure(figsize=(20, 8))
plt.title(str(start)[0:10] + " ~ " + str(end)[0:10] + " KOSPI 지수")
plt.xlabel(" Year month ")
plt.xticks(rotation=45)
plt.ylabel(" value ")
plt.plot(df['Date'] , df['Close'], marker="o")
plt.ylim([0, 3500])
plt.grid(True)
# ax = plt.subplot()
# ax.set_xticks(graph_data_month)
plt.show()



# for row in df.itertuples():
#      print(row)

'''
stock = pdr.get_data_yahoo('035720.js', '2022-01-01', '2022.02.28')
print(stock)

#df = pdr.DataReader('주식 종목코드', 'yahoo')

'''
'''
# 회사명으로 주식 종목 코드를 획득할 수 있도록 하는 함수
def get_code(df, name):
    code = df.query("name=='{}'".format(name))['code'].to_string(index=False)

    # 위와같이 code명을 가져오면 앞에 공백이 붙어있는 상황이 발생하여 앞뒤로 sript() 하여 공백 제거
    code = code.strip()
    return code


# excel 파일을 다운로드하는거와 동시에 pandas에 load하기
# 흔히 사용하는 df라는 변수는 data frame을 의미합니다.
code_df = pd.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download', header=0)[0]

# data frame정리
code_df = code_df[['회사명', '종목코드']]

# data frame title 변경 '회사명' = name, 종목코드 = 'code'
code_df = code_df.rename(columns={'회사명': 'name', '종목코드': 'code'})

# 종목코드는 6자리로 구분되기때문에 0을 채워 6자리로 변경
code_df.code = code_df.code.map('{:06d}'.format)

# ex) 삼성전자의의 코드를 구해보겠습니다.
code = get_code(code_df, '삼성전자')

# yahoo의 주식 데이터 종목은 코스피는 .KS, 코스닥은 .KQ가 붙습니다.
# 삼성전자의 경우 코스피에 상장되어있기때문에 '종목코드.KS'로 처리하도록 한다.
code = code + '.KS'

# get_data_yahoo API를 통해서 yahho finance의 주식 종목 데이터를 가져온다.
df = pdr.get_data_yahoo(code)

'''