요약

  1. 리스트컴프리핸션을 잘 사용하면 다수의 종목을 한번에 조회하고 결과를 취합할 수 있습니다.
  2. pd.concat(df_list, axis=1)을 사용하여 다수의 컬럼을 결합할 수 있습니다.
  3. df.plot()의 secondary_y 옵션을 사용하면 서로 다른 범위의 데이터를 비교하기 용이합니다.
  4. 첫번째 행으로 모든 행을 나누어주는 간단한 방법으로 기간 수익률을 손쉽게 구할 수 있습니다.

한 종목의 가격 가져오기

import FinanceDataReader as fdr

# KB금융 (105560)
df = fdr.DataReader('105560', '2019-01-01', '2019-12-31')
df.head(15)

Untitled

여러 종목의 종가(Close) 가져오기

다수 종목코드를 다룰때는 dict를 사용하는 것이 여러가지 편리합니다.

(파이썬 3.6이후에는 dict에서 항목의 순서가 유지됩니다)

stock_list = {
    '005930': '삼성전자',
    '000660': 'SK하이닉스',
    '005380': '현대차',
    '068270': '셀트리온',
    '051910': 'LG화학',
    '005490': 'POSCO',
    '028260': '삼성물산',
    '035420': 'NAVER',
}
# 코드 목록
code_list = stock_list.keys()
code_list
# 이름 목록
name_list = stock_list.values()
name_list

다수 종목의 데이터를 가져와 개별 종목의 종가를 pd.concat()로 합칩니다

import pandas as pd

# 종가(Close) 값만 가져와서
df_list = [fdr.DataReader(code, '2022-01-01', '2022-12-31')['Close'] for code in stock_list.keys()]

# 컬럼으로 이어붙입니다(concat)
df = pd.concat(df_list, axis=1)

# 컬럼명을 지정합니다
df.columns = stock_list.values()
df.head(10)

Untitled

df.plot()