• 카테고리

    질문 & 답변
  • 세부 분야

    금융 · 재테크

  • 해결 여부

    미해결

cumulative rtn을 이용 부분 질문

22.11.08 12:15 작성 조회수 176

0

강의중에 individual_port_val_df_list로 정의하고 뽑았을 때 맨 아래처럼 나오는데 result1, 2

에서 for df in individualport_val_df_list[1:]:

result_port_df_list.append(_df.iloc[1:]) 의 의미는 예를 들어 A B C 2018-01-31 0.30 0.50 0.20 2018-02-10 0.45 0.50 0.24 2018-02-20 0.36 0.40 0.28 2018-02-28 0.39 0.65 0.32,(여기다 복붙하면 이렇게 가독성이 떨어져서 아쉽네요)

이런식으로 묶음 형태들로 뽑아져 나오는데 result 1

for df in individualport_val_df_list[1:]:

result_port_df_list.append(_df.iloc[1:]) 경우 의미가 2018-01-31(자금 첫 투입) 제외하고 첫번째로 예를들면 2018-02-28 0.408000 0.680000 0.272의 값과 같이 2개씩 나오는 거중에 처음을 남기고 두번째를 지워나가게 쓰인 것으로 이해했는데(맞나요?)

 

result2

if i == len(individual_port_val_df_list)-1:

result_port_df_list.append(_df)

else:

result_port_df_list.append(_df.iloc[:-1])

이 코드부분은 if i == len(individual_port_val_df_list)-1 인 경우와 else: result_port_df_list.append(_df.iloc[:-1]) 부분이 잘 이해가 안되는데 if i == len(individual_port_val_df_list)-1 이면 묶음으로 뽑아져 나올 때 그 한 묶음의 개수가 4라면(2018-01-31~2018-02-28) if i == len(individual_port_val_df_list)-1는 if i == 3이 되고 0,1,2,3이렇게 다 나오고 else:

result_port_df_list.append(_df.iloc[:-1]) 는 어떻게 실행되는지 잘 이해가 안돼요..(강의중에 포트폴리오에 넣었다가 위의 값을 삭제하고 아랫값을 남긴다고 하셨는데 지금 코드가 이해가 안되네요 ㅠㅠ)

 

앞에서 제가 result1을 이해한 방식이 맞는지, 그리고 result2에서 질문드린 코드의 의미를 알려주실 수 있나요? 그리고 묶음이라고 표현했는데(표현방법을 잘 몰라서) 뽑히는 방식도 그렇게가 맞는지?

 

1.

result_port_df_list = [individual_port_val_df_list[0]]

for df in individualport_val_df_list[1:]:

result_port_df_list.append(_df.iloc[1:])

result1_ind = pd.concat(result_port_df_list)

result1_port = result1_ind.sum(axis=1)

 

2. result_port_df_list = []

for i, df in enumerate(individualport_val_df_list):

if i == len(individual_port_val_df_list)-1:

result_port_df_list.append(_df)

else:

result_port_df_list.append(_df.iloc[:-1])

 

result2_ind = pd.concat(result_port_df_list)

result2_port = result1_ind.sum(axis=1)

 

[               A     B     C
 2018-01-31  0.30  0.50  0.20
 2018-02-10  0.45  0.50  0.24
 2018-02-20  0.36  0.40  0.28
 2018-02-28  0.39  0.65  0.32,
                    A         B      C
 2018-02-28  0.408000  0.680000  0.272
 2018-03-20  0.313846  0.627692  0.238
 2018-03-29  0.345231  0.627692  0.238,
                    A         B         C
 2018-03-29  0.363277  0.605462  0.242185
 2018-04-30  0.396302  0.605462  ㅇ0.276782]

답변 1

답변을 작성해보세요.

0

안녕하세요.

우선 답이 늦어서 죄송합니다 ㅠ

정말 죄송하지만, 가독성이 너무 떨어져서 질문이해하기가 어렵습니다.

스크린샷(코드에 대한 결과값) 그리고 키보드의 tab 키 위에 있는 '`' 키를 사용하면 code를 훨씬 쉽게 첨부할 수 있습니다.

e.g.

  • '`' 키로 df = pd.DataFrame()을 감싼경우

df = pd.Dataframe()

 

  • 혹은 텍스트 편집기의 '<>' symbol을 이용하는 경우

a = 1
b = 2
c = a + b

 

번거로우시더라도 정리 후 질문주시면 답변드리도록 하겠습니다.