2022. 1. 28. 20:21ㆍ개발의 흔적/데이터분석
#pandas library에서 csv 뿐만 아니라 다양한 형태의 데이터 load가 가능함!
#html형식의 데이터 불러오기!
import pandas as pan
code = pan.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download', header=0) [0]
code
# .read_html('주소', header = 몇번째 table 부터?) [x번째 table을 열어라!]
# 코스피, 코스닥에 상장된 기업명과 종목코드 알기 위한 table

#주식의 매시간당 가격 데이터를 가진 table도 가져오자!
import pandas_datareader.data as web
web.DataReader('005930', 'naver')
# pandas_datareader 라이브러리 : 이것역시 웹의 데이터셋을 불러오는 라이브러리!
# .DataReader('찾는 값', '회사명') -> 저 함수에 사이트명을 넣으면 자동적으로 그 사이트 종목명의 정보에 접근하도록 #프로그래밍 된 것같다.
#005930은 위의 code table을 통해 안 삼성전자의 종목코드이다

#삼성전자 각 장날의 시작가, 최고가, 최저가, 종가, 시가총액의 정보가 담겨있는 것을 볼 수 있다.
# 알고리즘 : code table에서 찾고자 하는 기업의 종목코드 값을 위 pandas_reader.DataReader에 입력 -> 그 기업의 날 짜별 종가를 꺾은선 그래프로 시각화!
# 이를 자동화 할 함수를 만들자!
#우선 code table 가공 ->회사명, 종목코드 외의 정보 날리기!
code_result = code[['회사명', '종목코드']].rename(columns={'회사명' : 'corpName','종목코드' : 'code'} )
code_result

def loadCode(x): #loadCode('기업명') -> 종목코드 찾는 함수
corp_name = x
condition = "corpName == '{}'".format(corp_name)
#.format() 문자열의 함수!! 함수내의 것을 {}안에 넣어줌!
corp = code_result.query(condition) #query(u) : pandas의 함수!! u에 부합하는 데이터 추출!
ex ) 삼성전자 / 5930
corp = corp['code'].to_string(index = False).strip().rjust(6, '0')
#to_string() : type을 String으로 변환 ex) ' 5930' (str)
#strip() : 빈칸 제거 ex) '5930'
#rjust(문자열 length, '채울것') : 문자열 길이만큼 늘리 고 앞에 것을 0으로 채울것!
ex) '005930'
print(x + ' code : '+ corp)
return corp
#이젠 가격관련 table과 종목코드 연결하는 함수! (웹데이터의 foreign key는 종목코드)
def stockInfo (x):
stock_df = web.DataReader(loadCode(x), 'naver')
return stock_df
#마지막으로 날짜별 종가데이터만 plot으로 시각화 하는 함수!
def stock_close_graph(x):
plot = stockInfo(x)['Close'].astype(int).plot() #String 값의 값들을 int로 변환!
return plot
# 이제 한번 찍어보자!
stock_close_graph('카카오')
stock_close_graph('LG')

#matplotlib으로 그래프를 찍었다면 legends로 어떤 선이 어떤 기업인지 나타낼수 있었으나
파이썬 자체 함수이므로....
#다음장에서는 위 함수들을 다듬어보고 각 주식들의 연관성을 알아보자!
'개발의 흔적 > 데이터분석' 카테고리의 다른 글
| #04_02 [python] 주식 데이터 간 연관성 시각화 하기 (seaborn ,corr) (0) | 2022.01.31 |
|---|---|
| #03_03[python] 데이터 날짜변환 heatmap (0) | 2022.01.24 |
| #03_02 [python] WorldCloud (0) | 2022.01.23 |
| #03_01 [python] DataFrame (0) | 2022.01.21 |
| #01_2 [python] pandas & matplotlib 을 이용한 데이터 가공 / 시각화 (0) | 2022.01.21 |