
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
2-4강 듣다가 응용하고 싶어서 질문 드립니다.
강의 내용
pbr < 1 & 시총 1조 이상 & per < 20 (per 0 이하는 제외)
제가 응용해보고 싶은 것
pbr <1 (단, pbr <0.2 주식은 제외) & 시총 하위 20% & per < 10 (per 0 이하는 제외)
로 응용하고 싶어서요.
pbr 0.2 미만인 주식은 제외하고, per 10이하인 것은 쉽게 해결했는데
시총 하위 20%(소형주)로 매기는 건 어떻게 하는지 궁금합니다.
다른 분들은 질문 안 하셨길래 제가 질문합니다.
인터넷에 시총 하위 20% 분위 뽑는 코드를 찾기 했는데, 실제로 어떻게 넣어야하는지 응용이 안 됩니다..
quantile 함수를 활용하던데, 도움 주시면 감사하겠습니다.
일단 한 것만 캡쳐합니다.
pbr 0.2 미만인 주식은 제외하고, per 10이하
시총1조 이상 필터는 그대로 뒀습니다.

작성한 코드 및 에러 메세지
1) 강의 내용 코드
pbr < 1 & 시총 1조 이상 & per < 20 필터하기
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
2) 응용하고 싶은 코드
pbr <1 (단, pbr <0.2 주식은 제외) & 시총 하위 20% & per < 10 필터하기
pbr <1 (단, pbr <0.2 주식은 제외), per < 10 는 했는데
시총 하위 20%는 하지 못했습니다.
df = pd.read_excel('종목데이터.xlsx')
cond = df['change_rate'] > 0
df = df[cond]
cond = df['per'] > 0
df = df[cond]
cond = df['pbr']> 0.2
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'] < 10)
df = df[cond]
df
3) 시총 하위 20% 필터링 코드 (인터넷에서 서칭해봄)
시총을 오름차순해서(낮은순서부터) 하위 20%로 그룹핑하는 코드 찾았는데 이것을 어떻게 써야할지 모르겠습니다.
data = drop_column(data)
return data[data["marketcap"] <= data["marketcap"].quantile(q=0.2)].sort_values(by=["marketcap"], ascending=True)
