- BPS : 주가수익배수
- PER : 주가수익비율
- PBR : 주가순자산비율
- EPS : 주당순이익
- DPS : 주당배당금
import pandas as pd
import numpy as np
df = pd.read_excel(
"./data_kosdaq_20210401_per.xlsx",
engine='openpyxl',
index_col= 0,
usecols=[0,1,6,8]
)
df.replace("-", np.nan, inplace=True)
### 거래량 데이터
df2 = pd.read_excel(
"./data_kosdaq_20210401_sise.xlsx",
engine="openpyxl",
index_col=0
)
### df에 거래량 컬럼을 join
df2 = df.join(other=df2[["거래량"]])
### 변동성 등락룰데이터
df_change = pd.read_excel(
"./data_kosdaq_change_2021.xlsx",
engine = "openpyxl",
index_col=0,
usecols=[0,5]
)
df3 = df2.join(other=df_change)
# 거래량이 0인 종목 -> 거래정지 된 목록 -> 제외
cond = df3["거래량"] != 0
df4 = df3.loc[cond]
# PER을 기준으로 오름차순 정렬
df4.sort_values("PER", inplace=True)
df4.reset_index(inplace=True)
df4.head(10)
# 저 PER을 기준으로 하위 30개를 출력
low_per30 = df4.head(30)
low_per30["등락률"].mean()
# 20개씩 데이터의 그룹을 생성
# 각 그룹에 70개의 데이터로 분할
df4['group'] = pd.cut(df4.index, bins=20, labels=False)
# 그룹별 등락률 평균 데이터
df5 = df4.groupby('group')[['등락률']].mean()
# 시각화
import matplotlib.pyplot as plt
plt.rc("font", family='Malgun Gothic')
plt.figure(figsize=(14, 6))
plt.bar(df5.index, df5['등락률'], width=0.4)
plt.title("PER 그룹별 등락률")
plt.xlabel("PER 그룹")
plt.ylabel("수익률")
plt.show()
