2022. 1. 31. 16:29ㆍ개발의 흔적/데이터분석
#앞의 04_01의 주식 데이터 셋 사용!
# 이번엔 여러 종목 간의 상관관계를 알아 볼 것이다!
import pandas as pan
import pandas_datareader.data as web
from datetime import datetime
code = pan.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download', header=0) [0]
code_result = code[['회사명', '종목코드']].rename(columns={'회사명' : 'corpName', '종목코드' : 'code' })
code_result
def loadCode(x):
corp_name = x
condition = "corpName == '{}'".format(corp_name)
corp = code_result.query(condition)
corp = corp['code'].to_string(index = False).strip().rjust(6, '0')
print(x + ' code : '+ corp)
return corp
#앞 페이지에서 작성했던 코드

start = datetime(2021,1,1)
end = datetime(2021,12,31)
companies_stock_2021 = pan.DataFrame({'Date':pan.date_range(start = start, end = end)})
companies_stock_2021
#위의 데이타프레임에 찾을 종목들의 종가를 계속 column으로 추가해줄 것!
companies = ['삼성전자', 'LG전자', '카카오', 'NAVER', 'CJ', '한화','현대자동차']
for company in companies:
company_code = loadCode(company)
stock_df = web.DataReader(company_code, 'naver', start, end)
companies_stock_2021 = companies_stock_2021.join(pan.DataFrame(stock_df['Close'].astype(int)).rename(columns={'Close' : company}), on='Date')

corr_data = companies_stock_2021.corr()
corr_data
#.corr() : 상관분석 함수 : 두 변수사이 관계의 유뮤, 관계의 강도에 대한 분석
# -1 <= p <= 1
# p가 0에 수렴 할수록 상관관계 약해짐
# p가 1에 수렴 할수록 양의 상관관계 (비례)
# p가 -1에 수렴 할수록 음의 상관관계 (반비례)
# |p| > 0.8 -> 두 변수의 상관관계는 중요!

import matplotlib.pyplot as plt
import seaborn as sns #seaborn 라이브러리 : 시각화 할 때 쓰임
plt.rcParams['font.family'] = 'Malgun Gothic'
plt.rcParams['axes.unicode_minus'] = False #그래프에서 마이너스 기호 깨지는거 막아주느 기능
plt.figure(figsize = (10,10))
sns.heatmap(data=corr_data, annot = False, fmt='.2f', linewidth = .5, cmap = 'Blues')
#seaborn.heatmap( data = 사용 할 pivot table, annot = 각 cell 안에 숫자 표시 유무, fmt = 소수점 자리,
# linewidth = 칸 너비, cmap = 색깔)
plt.show()

'개발의 흔적 > 데이터분석' 카테고리의 다른 글
| #04_01 [python] html, pandas_datareader로 주식 데이터 시각화 하기 (0) | 2022.01.28 |
|---|---|
| #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 |