cs

이전 포스트와 이어서 정리를 해보려고 한다. 

주가를 다시 불러와보자.

#다시 종목별 종가 그래프 불러오기

df.plot()

세 개의 종목에서 네이버 카카오만을 불러와서 다시 그려보면 아래와 같은 그래프가 나온다.

df[["카카오", "NAVER"]].plot()

보시다시피 네이버의 주가가 카카오보다 높기 때문에 중간에 큰 빈 공간이 생기면서 비교하기에 애매하기 때문에 y축을 양쪽에 만드는 2축 그래프를 그려보기로 하자. 

 

2축 그래프 (양쪽 y축 설정)

엑셀에서는 데이터 계열서식?을 선택하면 자동적으로 그래프가 양쪽에 축이 생기면서 조정이 되는데, 그걸 하려는 것이다.

여기서 쓰는 함수는 plot 안에서 secondary_y를 사용 해서 양쪽에 y축 설정을 하는 것이다.

df[["카카오", "NAVER"]].plot(secondary_y = "NAVER")

카카오야 힘을 내자..

깔끔하게 비교가 가능해졌다. 

네이버, 카카오 주가 흐름이 거의 동일한 것을 바로 파악할 수 있기 때문에 위에서 처럼 y축 하나의 그래프보다는 보기가 수월하다. 

 

그럼 주가의 흐름을 보았고, 수익률을 확인해보자.

 

수익률 비교

아마 회사에서 가장 많이 썼던 수식?같긴한데, 전날과 비교해서 수익률을 비교하는 공식은 

 D_today의 수익률(변동률) =(D_today - D_Before)/ D_Before

간단하다. 전날 대비 변동률 구하는거다.

 

근데 이제 이걸 파이썬으로 하려면,,

복잡할 줄 알았는데 생각보다 간단하다. 

 

카카오와 네이버의 데이터 프레임에서 첫 번째 열을 지정해주고 그 열에서 

df2 = df[["카카오", "NAVER"]]
df3 = df2 / df2.iloc[0]-1
df3

 

 

 

특정 날자 지정해주기 

수익률을 구하는 것을 알긴 알았는데 뭔가 내가 주식을 매매한 시점부터의 수익률이랑 주가의 흐름을 보고 싶다. 

위에서 한 것처럼 설정을 하지 않으면 그냥 처음에 세팅했던 21년 1월부터 나오게 된다. 

 

그래서 날짜를 지정해주고 흐름을 다시 보기 위해서 하나의 변수를 만들어주었다. 

date_setting이라는 변수를 하나 넣어주고. query에 넣어주고 Date이후의 날짜부터 가지고 온다. 

 

Date가 지금은 현제 날짜 변수로 잘 지정이 되어있기 때문에 다른 변동 없이 바로 사용할 수 있었다.

날짜를 dataframe에 다시 지정해두고 수익률을 구한다. 

# 특정 날짜 이후 
df2 = df[["카카오", "NAVER"]]
date_setting = '2021-09-01'

df2=df2.query('Date > @date_setting')

df3 = df2 / df2.iloc[0]-1
df3

9월 1일에 산건 아니다

수익률을 그럼 그래프로 그려보자! 

기준점이 0이니까 둘 다 같은 축으로 그려도 상관없기 때문에 간단히 plot()을 사용해서 그려보았다.. 그랬더니

df3.plot() 

또다시 워닝과 함께 그래프가 나왔는데, 이유는 - (마이너스) 부호가 나오지 않는다!? 

 

마이너스 부호를 다시 설정해주어야 한다... 기본적으로 안 나온다.

다만 다른 라이브러리는 나올 수 있다. unicode_minus를 지정해두고 다시 뽑아보니 잘 나온다.

plt.rc("axes", unicode_minus=False)

좀 올라라 좀 이제..

 

수익률 그래프는 날짜를 지정해두고 잘 뽑았고, 다시 주가 그래프를 특정 날짜를 지정해주고 그려보자.

date_setting = '2021-09-01'
df2=df.query('Date > @date_setting')


df2[["카카오", "NAVER"]].plot(secondary_y = "NAVER")

 

주가, 수익률 그래프 같이 그리기

두 개의 그래프를 한번에 그리기 위해서는 하나의 설정이 먼저 필요한데 

 

쉽게 말해 내가 뽑을 화면을 분할해서 지정해주기만 하면 된다. 

subplot의 1,2 두개의 부분을 지정하고 사이즈를 설정해준 뒤 

 

위에서 그렸던 그래프 함수 뒤에 axes위치만 설정해주기만 하면 된다.

plot. 뒤에 다양한 설정을 지정해 줄 수 있기 때문에 title을 활용해서 이름까지 가지고 온다. 

fig, axes = plt.subplots (1,2, figsize =(15, 4))

df2[["카카오", "NAVER"]].plot(secondary_y = "NAVER", ax=axes[0], title = "2축 주가" )
df3.plot(ax=axes[1], title ='수익률')

주가가 떨어지고 수익률이 하락하는 그래프라서 그렇지.. 잘 나왔다.

+ Recent posts