주식데이터 전처리 및 시각화
1. 패키지 설치 및 데이터 불러오기
import pandas as pd
code = pd.read_csv('./data/corpgeneral.csv', header=0)
code.head(5)

2. 데이터 전처리
code = code[['회사명', '종목코드']]
code
code_result = code.rename(columns={'회사명': 'corp', '종목코드': 'code'})
code_result
1) 종목코드 가져오기
corp_name = "카카오"
condition = "corp=='{}'".format(corp_name)
kakao = code_result.query(condition)
kakao = kakao['code']
kakao_string = kakao.to_string(index=False)
kakao_string = kakao_string.strip()
kakao_code = kakao_string.rjust(6, '0')
kakao_code
2) 종목데이터 가져오기
conda install -c anaconda pandas-datareader
import pandas_datareader.data as web
kakao_stock_df = web.DataReader(kakao_code, 'naver')
kakao_stock_df

3. 데이터 시각화
kakao_stock_df['Close'] = kakao_stock_df['Close'].astype(int)import pandas_datareader.data as web
kakao_stock_df['Close'].plot()

주식데이터 상관관계 분석
- 상관 계수는 1부터 -1까지 존재 합니다.
- 기울기이기 때문이죠
- 기울기가 1이면 매우 강한 상관관계가 있습니다
- 0이면 상관관계를 찾을 수 없는것이죠
- -1이면? 1과 마찬가지로 강한 상관관계가 있습니다. X축이 증가하면 Y축이 감소합니다
- '보통은 0.6 ~ 0.4 사이의 값을 가지면 상관 관계가 있다'로 판단합니다

1. 패키지 설치
import pandas as pd
import pandas_datareader.data as web
from datetime import datetime
2. 데이터 불러오기 및 전처리
code = pd.read_csv('./data/corpgeneral.csv', header=0)
code = code[['회사명', '종목코드']]
code_result = code.rename(columns={'회사명': 'corp', '종목코드': 'code'})
1) 코드 받아오는 함수 만들기
def get_code(code_result, corp_name):
condition = "corp=='{}'".format(corp_name)
code = code_result.query(condition)['code'].to_string(index=False)
code = code.strip()
code = code.rjust(6, '0')
return code
2) 상관관계 보기 (리스트정리 및 기간확인)
companies = ['삼성전자', 'LG전자', '카카오', 'NAVER', 'CJ', '한화', '현대자동차', '기아자동차']
start = datetime(2019,1,1)
end = datetime(2019,12,31)
stocks_of_companies = pd.DataFrame({'Date': pd.date_range(start=start, end=end)})
stocks_of_companies
3) 반복문으로 리스트의 주식종가를 테이블에 붙여넣기
for company in companies:
company_code = get_code(code_result, company)
stock_df = web.DataReader(company_code, 'naver', start, end)
stocks_of_companies = stocks_of_companies.join(pd.DataFrame(stock_df['Close'].astype(int)).rename(columns={'Close':company}), on='Date')
stocks_of_companies.tail(5)

corr_data = stocks_of_companies.corr()

3. 데이터 시각화
1) 라이브러리 불러오기
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.family'] = "Malgun Gothic"
plt.rcParams['axes.unicode_minus'] = False
conda install -c anaconda seaborn
2) 그래프 그리기 (상관관계)
plt.figure(figsize=(5,3))
sns.lineplot(data=kakao_stock_df['Close'])

plt.figure(figsize=(10,10))
sns.heatmap(data = corr_data, annot=True, fmt = '.2f', linewidths=.5, cmap='Blues')
plt.show()

데이터스튜디오 - 그래프 그리기
https://datastudio.google.com/u/0/navigation/reporting
1. 데이터추출
import pandas as pd
import pandas_datareader.data as web
from datetime import datetime
code = pd.read_csv('./data/corpgeneral.csv', header=0)
code = code[['회사명', '종목코드']]
code_result = code.rename(columns={'회사명': 'corp', '종목코드': 'code'})
code_result.code = code_result.code.map('{:06d}'.format)
def get_code(code_result, corp_name):
condition = "corp=='{}'".format(corp_name)
code = code_result.query(condition)['code'].to_string(index=False)
code = code.strip()
code = code.rjust(6, '0')
return code
companies = ['삼성전자', 'LG전자', '카카오', 'NAVER', 'CJ', '한화', '현대자동차', '기아자동차']
start = datetime(2019,1,1)
end = datetime(2020,9,10)
stocks_of_companies = pd.DataFrame({'Date': pd.date_range(start=start, end=end)})
for company in companies:
company_code = get_code(code_result, company)
stock_df = web.DataReader(company_code, 'naver', start, end)
stocks_of_companies = stocks_of_companies.join(pd.DataFrame(stock_df['Close'].astype(int)).rename(columns={'Close':company}), on='Date')
stocks_of_companies.dropna()
stocks_of_companies.to_csv('./stock_change.csv',sep=',', na_rep='NaN',index = False)
2. 그래프 그리기
