커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
07. 최적화 종목 찾기
undefined주차
북마크
유*열
댓글
5
추천
0
조회수
10
조회수
10
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


VS Code로 실습중인데 아래와 같이 오류가 발생합니다.






작성한 코드 및 에러 메세지

breakthrough2.py

def get_return_mf(code):


    from pandas_datareader import data as pdr


    import yfinance as yf
    yf.pdr_override()


    import numpy as np
    import pandas as pd


    import FinanceDataReader as fdr


    df = fdr.DataReader(code, '2018')


    df = df.reset_index()


    df = df[['Date', 'Open']]


    df['day'] = pd.to_datetime(df['Date']).dt.day_name()


    cond = (df['day']=='Monday') | (df['day'] == 'Friday')


    df = df[cond]


    if df.iloc[0,2] == 'Friday':
        df = df.drop(index = df.index[0])


    if df.iloc[-1,2] == 'Monday':
        df = df.drop(index = df.index[-1])


    cond = (df['day']=='Monday') & (df['day'].shift(-1)=='Monday')
    df = df.drop(index=df[cond].index)


    cond = (df['day']=='Friday') & (df['day'].shift(1)=='Friday')
    df = df.drop(index=df[cond].index)


    df['Open_friday'] = df['Open'].shift(-1)


    df = df[df['day']=='Monday']


    df = df[['Open','Open_friday']]


    df.columns = ['buy_at', 'sell_at']


    df['return'] = df['sell_at'] / df['buy_at']


    cond = (df['sell_at'] != 0) & (df['buy_at'] != 0)
    df = df[cond]


    return df[['return']].cumprod().iloc[-1,-1]-1

오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.

Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.

get_return_mf.py

import breakthrough2 as br
import numpy as np
import pandas as pd
import dart_fss as dart_fss


api_key = 'a9ac5badf2875767f55af59744ffac5266f2020b'
dart_fss.set_api_key(api_key=api_key)


all = dart_fss.api.filings.get_corp_code()


df = pd.DataFrame(all)


df_listed = df[df['stock_code'].notnull()]


df = pd.DataFrame()
for row in df_listed.sample(10)[['stock_code','corp_name']].itertuples():
  try:
    doc = {
        'name' : row[2],
        'return' : br.get_return_mf(row[1])
    }
    df = df.append(doc, ignore_index = True)
  except:
    print(f'error - {row[2]}')


print(df.sort_values(by='return', ascending=False))

의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!

(base) admin@toto stock % /usr/local/bin/python3 /Users/admin/Documents/sparta-study/stock/get_return_mf.py

error - 태광

error - 에스엠

error - 디아이디

error - 아모레퍼시픽

error - 엠로

error - 피엠디아카데미

"037120" invalid symbol or has no data

error - 한신코퍼레이션

error - 비보존 제약

error - 유일로보틱스

error - 리드코프

Traceback (most recent call last):

 File "/Users/admin/Documents/sparta-study/stock/get_return_mf.py", line 26, in <module>

  print(df.sort_values(by='return', ascending=False))

     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 File "/usr/local/lib/python3.11/site-packages/pandas/core/frame.py", line 6768, in sort_values

  k = self._get_label_or_level_values(by, axis=axis)

    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 File "/usr/local/lib/python3.11/site-packages/pandas/core/generic.py", line 1778, in _get_label_or_level_values

  raise KeyError(key)

KeyError: 'return'

(base) admin@toto stock % 



취소
 공유
취소
댓글 0
댓글 알림
나의얼굴