본문 바로가기
주식 분석/파이썬 활용 기초

[파이썬 주식 활용] 불러온 주식 정보 csv 저장하고 불러오기

by SMCon 2023. 9. 2.
728x90
반응형

매번 정보를 다룰 때마다 인터넷으로 받아오는 것보다는 한번 받아서 저장해 두고 쓰는 게 안전할 수 있습니다. 그래서 이번에는 불러온 주식 정보를 csv로 저장하고 불러오는 것을 다루겠습니다.

 

1. 주식 불러오고 CSV로 저장하기

먼저 지난번 코드에 이어서 주식을 불러옵니다.

2023.08.25 - [주식 분석/파이썬 활용 기초] - [파이썬 Python] 애플 주식 정보 불러오기 (yfinance)

import yfinance as yf  #yahoo finance로 부터 불러오기 위한 모듈
symbol = 'AAPL' #주식 심볼
ticker = yf.Ticker(symbol) #주식 정보 불러오기

aapl_history = ticker.history(period="10y") # 10년치 주식 정보 불러오기
print(aapl_history.head(5))


""" 
출력 
                                Open       High  ...  Dividends  Stock Splits
Date                                             ...                         
2013-09-03 00:00:00-04:00  15.369768  15.603540  ...        0.0           0.0
2013-09-04 00:00:00-04:00  15.571121  15.654656  ...        0.0           0.0
2013-09-05 00:00:00-04:00  15.592632  15.606035  ...        0.0           0.0
2013-09-06 00:00:00-04:00  15.536213  15.565511  ...        0.0           0.0
2013-09-09 00:00:00-04:00  15.740686  15.831702  ...        0.0           0.0

[5 rows x 7 columns]

"""

그리고 data frame의 기본 명령어인 to_csv를 통해서 간단하게 csv 파일을 생성할 수 있습니다. 아래의 명령어를 통해서 stocks라는 폴더를 생성하고, AAPL.csv라는 파일을 생성해 줍니다.

import os

dir_stock = 'stocks' # 주식 정보를 저장할 폴더명
if not os.path.exists(dir_stock):os.makedirs(dir_stock) #폴더가 없을 경우 폴더 만들기

aapl_history.to_csv('{}/{}.csv'.format(dir_stock, symbol)) #CSV로 저장하기

아래처럼 10년치 주식 정보가 csv에 저장된 것을 확인할 수 있습니다.

 

2. CSV로 저장된 파일 불러오기

CSV를 불러오는 것도, pandas의 read_csv를 이용하면 쉽게 불러올 수 있습니다.

import pandas as pd #pandas 모듈 불러오기
dir_stock = 'stocks' # 주식 정보가 저장된 폴더
symbol = 'AAPL' #주식 심볼
df = pd.read_csv('{}/{}.csv'.format(dir_stock, symbol)) #CSV로 저장된 정보 불러오기

print(df.head(5)) # 저장된 정보 상단 5줄 출력
""" 
출력 
                        Date       Open  ...  Dividends  Stock Splits
0  2013-09-03 00:00:00-04:00  15.369769  ...        0.0           0.0
1  2013-09-04 00:00:00-04:00  15.571124  ...        0.0           0.0
2  2013-09-05 00:00:00-04:00  15.592629  ...        0.0           0.0
3  2013-09-06 00:00:00-04:00  15.536215  ...        0.0           0.0
4  2013-09-09 00:00:00-04:00  15.740688  ...        0.0           0.0

[5 rows x 8 columns]

"""

자세히 보시면 조금 다른 부분은 원래는 가장 앞에 Date로 시작했었는데, 불러온 파일은 앞에 0 1 2 3 4 이렇게 시작한 다는 것. 그리고 뒤에 몇 시 몇 분 이런 데이터 까지는 필요 없기 때문에 코드를 조금 수정해 줍니다.

 

import pandas as pd #pandas 모듈 불러오기
dir_stock = 'stocks' # 주식 정보가 저장된 폴더
symbol = 'AAPL' #주식 심볼

df = pd.read_csv('{}/{}.csv'.format(dir_stock, symbol), parse_dates=True, index_col=0) 
#CSV로 저장된 정보 불러오기
#parse_dates=True, index_col=0 로 설정하면 csv 첫 열을 index로 불러오고, Date로 인식합니다.

index_dates = []
for index_date in df.index:
    index_dates.append(index_date.date())

df.index = index_dates
df.index = pd.to_datetime(df.index) 
# 위의 다섯줄은 앞에 시간 지우고 싶어서 작성한건데, 더 깔끔한 방법이 있을 것 같습니다.

print(df.head(5)) # 저장된 정보 상단 5줄 출력

""" 
출력 
                 Open       High        Low  ...     Volume  Dividends  Stock Splits
2013-09-03  15.369768  15.603540  15.190543  ...  331928800        0.0           0.0
2013-09-04  15.571125  15.654660  15.468888  ...  345032800        0.0           0.0
2013-09-05  15.592629  15.606032  15.386596  ...  236367600        0.0           0.0
2013-09-06  15.536217  15.565515  15.271586  ...  359525600        0.0           0.0
2013-09-09  15.740690  15.831706  15.693312  ...  340687200        0.0           0.0

[5 rows x 7 columns]

"""

이런 식으로 불러오면 앞에 index가 date로 설정되었고, 시간도 사라졌습니다. 조금더 깔끔하게 할 수 있었을 것도 같지만 여기서 마무리 하였습니다.

 

3. 주식정보 그래프 그리기

마지막으로 시각적으로 확인 할 수 있도록 그래프로 그려 봅니다. 그래프는 plot으로 간단하게 그릴 수 있지만, 아래 명령어로 그리게 되면

df.plot()

아래 그래프처럼 모든 Data를 그려주게 됩니다. 이런 경우 가장 큰 데이터값인 Volume만 볼 수 있기 때문에 원하는 정보를 선택해서 plot 해 줍니다.

[ ] 안에 원하는 Header를 넣고 plot을 해주게 되면,

df['Close'].plot()

아래처럼 Close 주식 가격만 그래프로 보여주게 됩니다.

728x90
반응형