본문 바로가기

개발일지_파이썬for금융인

엑셀파일 불러와서 판다스로 조정하기

임포트 먼저.

import pandas as pd
import numpy as np

pandas를 가져온다 pd로써

numpy를 가져온다 np로써

실행.

 

colab 폴더에 엑셀파일 올리고,

새 코드 작성.

무척 많다.

앞에 5개만 보려면 .head()

뒤에 5개만 보려면 .tail()           *5개가 기본값임.

10개 보려면 .tail(10)

-------------------------------------------------------------------------------

숫자들 소수점 둘째 자리까지만 나오게?(일시에 하고 끄면 됨)

새 코드 작성.

pd.options.display.float_format = '{:.2f}'.format

ctrl+enter로 실행. 이제 쓰레기통에 버려도 된다.

다시 아까 엑셀파일 읽어온 곳. 다시 실행해보면 이제 소수점이 줄어 있다.

--------------------------------------------------------------------------------------------------------------

어제 오른 종목들만 골라보기?

= change_rate가 0보다 큰 종목들만 골라달라는 것.

*change_rate? 어제보다 오늘 얼마나 올랐냐? 라는 것.

 

보기 좋게 컨디션 만들자. ** change_rate가 0보다 큰 것

df['change_rate'] > 0

또는

df[df['change_rate'] > 0]

이렇게 앞에 한번더 df 달고 실행해도 똑같이 나온다.

-----------------------------------------------------------------------------------------------------------------------------------

per가 0인 종목들 제거하기? (아래는 강의자료상...)

df = df[df['per']>0]

선생님은, 아까 체인지레이트>0 에 이어서 아래처럼 쓰던데, 나는 오류뜬다. 왜지.

cond = df['change_rate']>0
df = df[cond]

cond = df['per']>0
df = df[cond]

df

-------------------------------------------------------------------------------------------------------------------------------

순이익, 종가를 추가하기?

 

per  = (시가총액)/(순이익) = (주가)/(주당순이익,eps)

∴ (주가) = (per) * (주당순이익,eps)

(순이익) = (시가총액)/(per)

df['earning'] = df['marketcap']/df['per']
df['close'] = df['per']*df['eps']

시가총액marketcap을 per로 나눈 것을 earning이라 하여 추가한다.

per를 eps로 나눈 것을 close라 하여 추가한다.

--------------------------------------

date 칼럼을 없애라?

del df['date']

df

df 출력하면 date가 사라진 걸 볼 수 있다!

 

------------------------------------

 

(pbr < 1) & (시총 1조 이상) & (per < 20) 을 추려보기

condition을 한번에 넣어보자는 이야기예요.

df = pd.read_excel('종목데이터.xlsx')

cond = df['change_rate'] > 0
df = df[cond]

cond = df['per'] > 0
df = df[cond]

df['earning'] = df['marketcap']/df['per']
df['close'] = df['per']*df['eps']

del df['date']

cond = (df['pbr'] < 1) & (df['marketcap'] > 1000000000000) & (df['per'] < 20)
df = df[cond]

df

cond에서 &&&로 연결하면 된다.

------------

시총순으로 정렬해볼까?

df.sort_values(by='marketcap', ascending = False)

내림차순이면 as

cending = False로.