커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
숙제가 계속 잘못된 결과를 구현해냅니다.
undefined주차
북마크
최*영
댓글
6
추천
0
조회수
23
조회수
23
답변 완료

숙제를 하다하다 안되서 정답 코드까지 참고하면서 만들어봤지만, 결과물이 출력되지 않습니다.

인터넷 뒤져가면서 나름 코드를 짜봤지만, 원하는 결과물이 나오지 않습니다.

그래서 2017년을 2024년으로 바꿔가면서 검증하려고 했지만, 검증 결과가 실제 데이터와 다르게 나옵니다.

도저히 모르겠어서, 일단 숙제는 제출했습니다.

하지만 도저히 어디서 문제가 생기는건지 모르겠습니다.


정답 코드를 참고하면, 출력물이 안 나옵니다.

인터넷 뒤져서 하라는대로 하면, 원하는 결과물이 나오지 않습니다.

2024년으로 연도를 변경해서 검증해보면, 실제 데이터와 다릅니다.


스파르타 즉문즉답스파르타 즉문즉답스파르타 즉문즉답


스파르타 즉문즉답스파르타 즉문즉답스파르타 즉문즉답스파르타 즉문즉답



작성한 코드 및 에러 메세지

정답 코드 참고 코드

import FinanceDataReader as fdr


# S&P500 종목 회사 리스트 가져오기
sp500 = fdr.StockListing('SP500')
sp500.head(10)


# S&P500 종목의 실제 개수 확인
len(sp500)


# 특정 회사의 수익률 계산 함수
def make_rate(code):
    df = fdr.DataReader(code, '2017')
    original = df[['Close']].iloc[0]
    df = df[['Close']] / original - 1
    return df['Close']


# 특정 회사의 최종 수익률 계산 함수
def final_rate(code):
    try:
        return make_rate(code).iloc[-1]
    except:
        return -1000  # 오류 발생 시 특정 값을 반환


df = fdr.StockListing('SP500')


df = df[['Symbol','Name']].head(100)


df['rate'] = df['Symbol'].apply(final_rate)


cond = df['rate'] > -50
df = df[cond]


df = df.sort_values(by='rate',ascending=False).head(10)


df.set_index('Name',inplace=True)
df.plot(kind='bar')

인터넷 뒤져가면서 어떻게든 만든 코드

import FinanceDataReader as fdr
import pandas as pd
import plotly.express as px


# S&P500 종목 회사 리스트 가져오기
sp500 = fdr.StockListing('S&P500')


# 특정 회사의 수익률 계산 함수
def make_rate(code):
    df = fdr.DataReader(code, '2024')
    original = df[['Close']].iloc[0]
    df = df[['Close']] / original - 1
    return df['Close']


# 특정 회사의 최종 수익률 계산 함수
def final_rate(code):
    try:
        return make_rate(code).iloc[-1]
    except:
        return -1000


# 상위 100개 기업의 Symbol과 Name 열 추출
df = sp500[['Symbol', 'Name']].head(100)


# 각 기업의 최종 수익률 계산하여 추가
df['rate'] = df['Symbol'].apply(final_rate)


# 수익률이 -50 이상인 기업 필터링
df = df[df['rate'] > -50]


# 수익률에 따라 정렬하고 상위 10개 기업 선택
top_10_df = df.sort_values(by='rate', ascending=False).head(10)


# Name 열을 인덱스로 설정
top_10_df.set_index('Name', inplace=True)


# 막대 그래프 그리기 (plotly 사용)
fig = px.bar(top_10_df, x=top_10_df.index, y='rate', title='Top 10 S&P 500 Companies by Return Rate')
fig.update_layout(xaxis_title='Company Name', yaxis_title='Return Rate')
fig.show()


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