cs

이전 포스트에서 삼성전자 주가 그래프를 간단히 그려보았고, 이번에는 여러 종목의 가격을 불러드려 볼 것이다. 

 

그전에 StockListing 테이블을 한번 확인해보자.

 

StockListing 확인 

# KRX: 종목 전체
# KOSPI
# KOSDAQ
# KONEX
# NASDAQ
# NYSE
# SP500

df_krx= fdr.StockListing("KOSPI")
df_krx.head()

코스피 종목 테이블의 head()를 불러오면 다양한 컬럼이 있다. 

설정을 안하고 head를 가지고 오게 되면 name 알파벳 순으로 가지고 오는 듯 하다

컬럼에 대해서 따로 설명이 필요 없을 정도로 잘 나온다. 섹터와 산업 그리고 상장일까지 나오고 대표 이름까지 나온다... 
(대표 이름까지?..)

 

그럼 StockListing과  DataReader의 정보를 같이 불러와보자 

 

 

두 개의 테이블 Concat을 활용해서 종목 가격 가지고 오기 

# 종목 목록 만들어주기 
stock_list = {'삼성전자': '005930', '카카오':'035720', 'NAVER': '035420'}
stock_list

누구나 가지고 있을 것 같은 주식 종목을 불러들일 것이다. 

리스트 형태로 :를 활용하면 value와 key값을 바로 나눌 수 있다. 

# dict 형식으로 만들어주면 value 값과 key값으로 종목 명과 종목 코드를 나누어 가지고 올수있음 
type(stock_list)

type이 dict라고 나오게 되는데 dictionary를 의미하는 것이고 dictionary의 타입 자체가 key와 value로 이루어진 집합?이라고 보면 될 것 같다. 

 

# 종목의 종가 수집 , 반복문 사용 

stock_info = []
for item_code in stock_list.values():
    close = fdr.DataReader(item_code, "2021", '2022')['Close']
    stock_info.append(close)

그럼 위에서 지정이 된 stock_info를 반복문을 통해 날짜까지 지정해서 가지고 온다. 

아직까지도 반복문에 대해서 뭐 배운 적이 없고, 다 인용하면서 배웠기 때문에 아직도 헷갈린다....

 

# 수집한 리스트를 aixs =1  (컬럼)기준으로 concat 
# column 은 key값인 종목 명을 사용 

df = pd.concat(stock_info, axis=1)
df.columns = stock_list.keys()
df

반복문이 지정이 되었고 axis=1을 통해서 칼럼으로 concat을 해준다. 옆으로 붙여준다는 뜻이다. 

삼성...

이런 테이블이 완성이 된다. 옆으로 내가 고른 종목이 날짜에 맞춰서 concat이 된 것을 볼 수 있다. 

 

 

각 종목별 시각화

이전 포스트처럼 간단한 시각화를 통해서 주가 흐름을 체크해보자.

df.plot()을 바로 실행해보았는데 수많은 warning과 함께 그래프가 나왔다. 

잘 나오긴 했지만 한글 폰트에 대해서 인식이 안된 거다.

그래서 warning이 나오고 그래프에서도 이름을 한글로 정확하게 변환을 못했다. 

 

한글 폰트 설정

# 한글이 깨지는 문제 해결을 위해 폰트 설정 필요
 
def get_font_family():
    """
    시스템 환경에 따른 기본 폰트명을 반환하는 함수
    """
    import platform
    system_name = platform.system()
    # colab 사용자는 system_name이 'Linux'로 확인

    if system_name == "Darwin" :
        font_family = "AppleGothic"
    elif system_name == "Windows":
        font_family = "Malgun Gothic"
    else:
        !apt-get install fonts-nanum -qq  > /dev/null
        !fc-cache -fv

        import matplotlib as mpl
        mpl.font_manager._rebuild()
        findfont = mpl.font_manager.fontManager.findfont
        mpl.font_manager.findfont = findfont
        mpl.backends.backend_agg.findfont = findfont
       
        font_family = "NanumBarunGothic"
    return font_family
    

# 시각화 할때 한글 폰트 가지고 오기 위한 함수 
import matplotlib.pyplot as plt

#위의 폰트 불러와서 가지고오기 
font_family = get_font_family()

#폰트 설정
plt.rc("font", family =font_family)

이전에 저장해놨던 폰트 설정 함수를 바로 써준다. 일일이 설명하기에는 다른 블로그들이 설명이 잘 되어있기 때문에... 

맥 사용 유저면 ApplieGothic이라는 폰트를 통해 한글화가 될 것이다. 

 

다시 df.plot() 그려주면 

한글이 깨지지 않고 잘 나온다. 

+ Recent posts