반응형

코스닥최근3년간영업이익흑자종목리스트.xlsx
0.06MB

개요

이번에는 최근 3년간 영억이익이 흑자인 기업을 찾아보겠습니다. 앞서 진행한 코드와 크게 다른 점이 없어 간략하게 포스팅 하겠습니다.

 

자세한 내용은 아래 참고 부탁드립니다.

[국내주식] 최근1년간 영업이익이 발생하는 코스닥 기업 찾기(with python) 

 

[국내주식] 최근1년간 영업이익이 흑자인 코스닥 기업 찾기(with python)

개요 워렌버핏 명언에 이런 말이 있습니다. 10년 이상을 볼 것이 아니면 10분도 그 주식을 갖고 있지 말아라. 물론 10년 이상 주식을 보유한다는건 개미투자자들에게 매우 힘든일입니다. 그렇다면

taeguu.tistory.com

코드

#시각화 라이브러리
import matplotlib.pyplot as plt
import seaborn as sns
plt.rc('font', family='NanumGothic')

#전처리 라이브러리
from tqdm import tqdm_notebook
import pandas as pd

#크롤링 라이브러리
import requests

url = 'https://kind.krx.co.kr/corpgeneral/corpList.do'

kosdaq_code = pd.read_html(url+"?method=download&marketType=kosdaqMkt")[0]
# 코스닥 종목 업종
kosdaq_sectors = kosdaq_code[['회사명','업종','주요제품']]

# 종목코드가 int 타입이라 앞의 0이 사라짐, 다시 붙여주는 코드
kosdaq_code = kosdaq_code[['회사명','종목코드']]
kosdaq_code['종목코드'] = kosdaq_code['종목코드'].astype('str')
kosdaq_code['종목코드'] = kosdaq_code['종목코드'].map(lambda x : '00'+x if len(x) ==4 else x)
kosdaq_code['종목코드'] = kosdaq_code['종목코드'].map(lambda x : '0'+x if len(x) ==5 else x)

result = pd.DataFrame()

for index, row in tqdm_notebook(kosdaq_code.iterrows()):
  try :
    code = row[1]
    url = f"https://finance.naver.com/item/main.nhn?code={code}"
    res = requests.get(url)
    df = pd.read_html(res.text)[3]

    # 재무정보 인덱스 설정
    df.set_index(df.columns[0],inplace=True)
    df.index.rename('재무정보', inplace=True)

    # 두번째 컬럼 제거
    df.columns = df.columns.droplevel(2)

    # 최근 분기 실적만 가져오기
    quater = pd.DataFrame(df).xs('최근 연간 실적',axis=1)

    # 최근 4개 분기 가져오기
    df2 = quater[['2019.12','2020.12','2021.12','2022.12(E)']]
    df2 = df2.reset_index()

    # 매출액 가져오기
    df2 = df2[df2['재무정보']=='영업이익']

    # 종목명 입력
    df2['재무정보'] = row[0]
    result = pd.concat([result, df2])
  except :
    pass

#최근 3개년 데이터
result = result[['재무정보', '2019.12', '2020.12', '2021.12']]

# 수집 데이터 확인
print('코스닥 종목 데이터 : ',kosdaq_code.shape)
print('최근 3년 데이터가 있는 종목 : ',result.shape)
# 결산이 안된 분기는 -로 표시 되기 때문에 음수로 변환
result = result.replace('-', -999)

# 4개분기 모두 이익을 기록한 회사 추출
operatingp_rofit_plus= result[result['2019.12'].map(lambda x : int(x)>0) & result['2020.12'].map(lambda x : int(x)>0)& result['2021.12'].map(lambda x : int(x)>0)]

# 컬럼명 변경
operatingp_rofit_plus.columns = ['회사명', '2019.12', '2020.12', '2021.12']

# 업종 테이블과 merge
operatingp_rofit_plus = pd.merge(operatingp_rofit_plus, kosdaq_sectors, on='회사명', how='inner')

최근 3년 영억이익이 흑자인 기업 

1,610개의 코스닥 기업 중 최근 1년 간 영업이익 수치가 있는 기업은 1,483개 기업이었으며, 1,483개 기업 중 최근 3년동안 영업이익이 흑자인 기업은 총 739개 기업이었습니다. 

반응형
반응형

최근1년간영업이익흑자종목.xlsx
0.05MB

개요

워렌버핏 명언에 이런 말이 있습니다. 10년 이상을 볼 것이 아니면 10분도 그 주식을 갖고 있지 말아라. 물론 10년 이상 주식을 보유한다는건 개미투자자들에게 매우 힘든일입니다. 

 

그렇다면 과연, 여러분은 주식을 어떻게 선택하나요? 대부분의 투자자들은 아마도, 테마주, 실시간순위에 있는기업, 급등주 등 뉴스나 사람들 입에 오르내리는 주식에 눈이가기 마련입니다. 이러한 이유로 뭐하회(뭐라도 하겠지 회사인데)라는 용어가 생겨난 것입니다.

 

주식을 하는데 있어 대부분의 저명한 투자자들의 1원칙은 "절대 돈을 잃지 마라 "입니다. 돈을 읽지 않기 위해서는 좋은 회사를 선택해야하고, 다시 말해 종목을 선택하는데 있어 매우 신중해야한다는 것 입니다. 이번 포스팅은 돈을 읽지 않기 위해서는 어떤 기업을 선택해야하는가에 대한 첫 번째 스텝이며, 바로 이 회사가 꾸준히 돈을 벌고 있는지를 파이썬과 웹크롤링을 통해 확인해보겠습니다.

 

영업이익이란? (영업이익 = 매출- 제품원가 - 영업비용)

영업이익이란 총매출에서 제품원가와 영업비용을 차감한 비용을 말합니다. 즉 회사가 자기본업을 통해 얼마만큼의 돈을 벌고 잃는지 알 수 있는 지표가 바로 영업이익입니다.

 

단, 영업이익이 흑자여도 실제 회사 순이익은 손해를볼 수 있습니다.이는 당기순이익에서 볼 수 있는데, 바로 아래표를 보면 영업이익이 흑자여도, 순이익은 적자가 될 수 있습니다. 이는 본업 외 투자 등의 활동으로 발생할 수 있습니다.  반대로 영업이익이 적자라도 순이익은 흑자가 발생할 수 있으며, 이런 경우 기업의 단기순이익 세부내역을 찾아볼 필요가 있습니다.

결국 이 회사가 본업으로 돈을 잘 벌고 있는가 생각할때 영업이익을 참고하는 것이 맞으며, 최근 1년동안 영업이익이 흑자였던 기업을 찾아보겠습니다.

라이브러리

#시각화 라이브러리
import matplotlib.pyplot as plt
import seaborn as sns
plt.rc('font', family='NanumGothic')

#전처리 라이브러리
from tqdm import tqdm_notebook
import pandas as pd

#크롤링 라이브러리
import requests

코스닥 종목 및 종목코드 가져오기

url = 'https://kind.krx.co.kr/corpgeneral/corpList.do'

kosdaq_code = pd.read_html(url+"?method=download&marketType=kosdaqMkt")[0]
# 코스닥 종목 업종
kosdaq_sectors = kosdaq_code[['회사명','업종','주요제품']]

# 종목코드가 int 타입이라 앞의 0이 사라짐, 다시 붙여주는 코드
kosdaq_code = kosdaq_code[['회사명','종목코드']]
kosdaq_code['종목코드'] = kosdaq_code['종목코드'].astype('str')
kosdaq_code['종목코드'] = kosdaq_code['종목코드'].map(lambda x : '00'+x if len(x) ==4 else x)
kosdaq_code['종목코드'] = kosdaq_code['종목코드'].map(lambda x : '0'+x if len(x) ==5 else x)

코스닥 종목 영억이익 크롤링

result = pd.DataFrame()

for index, row in tqdm_notebook(kosdaq_code.iterrows()):
  try :
    code = row[1]
    url = f"https://finance.naver.com/item/main.nhn?code={code}"
    res = requests.get(url)
    df = pd.read_html(res.text)[3]

    # 재무정보 인덱스 설정
    df.set_index(df.columns[0],inplace=True)
    df.index.rename('재무정보', inplace=True)

    # 두번째 컬럼 제거
    df.columns = df.columns.droplevel(2)

    # 최근 분기 실적만 가져오기
    quater = pd.DataFrame(df).xs('최근 분기 실적',axis=1)

    # 최근 4개 분기 가져오기
    df2 = quater[['2021.12', '2022.03', '2022.06', '2022.09']]
    df2 = df2.reset_index()

    # 매출액 가져오기
    df2 = df2[df2['재무정보']=='영업이익']

    # 종목명 입력
    df2['재무정보'] = row[0]
    result = pd.concat([result, df2])
  except :
    pass

최근 1년 영억이익이 흑자인 기업 추출

1,610개의 코스닥 기업 중 최근 1년 간 영업이익 수치가 있는 기업은 1,493개 기업이었으며, 1,493개 기업 중 최근 1년동안 영업이익이 흑자인 기업은 총 603개 기업이었습니다. 

# 수집 데이터 확인
print('코스닥 종목 데이터 : ',kosdaq_code.shape)
print('4분기 데이터가 있는 종목 : ',result.shape)
# 결산이 안된 분기는 -로 표시 되기 때문에 음수로 변환
result = result.replace('-', -999)

# 4개분기 모두 이익을 기록한 회사 추출
operatingp_rofit_plus= result[result['2021.12'].map(lambda x : int(x)>0) & result['2022.03'].map(lambda x : int(x)>0)& result['2022.06'].map(lambda x : int(x)>0)& result['2022.09'].map(lambda x : int(x)>0)]

# 컬럼명 변경
operatingp_rofit_plus.columns = ['회사명', '2021.12', '2022.03', '2022.06', '2022.09']

# 업종 테이블과 merge
operatingp_rofit_plus = pd.merge(operatingp_rofit_plus, kosdaq_sectors, on='회사명', how='inner')

# 데이터 저장
operatingp_rofit_plus.to_excel('drive/MyDrive/코스닥_4분기_이익종목.xlsx', index=False)

- 1년간 영업이익이 흑자인 기업 리스트

결론

코스닥의 상장된 기업들 중 1년간 영업이익이 흑자인 기업은 전체의 약 37%밖에 되지 않습니다.물론 적자기업이라고 전부 안좋은 기업은 아닙니다.  공격적인 투자 등의 이유로 적자가 난 기업들도 존재할 수 있습니다.

 

다만, 개인은 모든 기업들을 세세하게 찾아볼 수 없으며, 자신만의 기준을 가지고 종목을 선택하게 되면, 조금 더 선택과 집중을 할 수 있지 않을까 생각합니다.

 

다음 포스팅은 분기가 아닌 연간 영업이익이 흑자인 기업을 찾아보도록 하겠습니다.

 

 

반응형
반응형

개요

이번 포스팅은 코스닥 종목의 주요 재무재표를 네이버에서 크롤링할 생각입니다. 누구나 진행할 수 있게 구글에서 제공하는 colab을 이용할 예정입니다.

 

주식을 하는 사람 대부분은 아래와 같은 기업실적분석표를 봤을겁니다. 네이버 검색창에 주식 종목을 검색 후 들어가게 되면 아래와 같은표를 볼 수 있습니다.

 

바로 이 주요재무정보를 크롤링 할 예정이며, 코스닥에 상장된 모든 종목의 재무정보를 가져올 예정입니다.

라이브러리

#전처리 라이브러리
from tqdm import tqdm_notebook
import pandas as pd

#크롤링 라이브러리
import requests

코스닥 종목명 및 종목코드 불러오기

대한민국 대표기업공기 사이트에서 코스닥 종목 및 코드를 불러옵니다. 약 1610개의 종목을 불러왔으며, 종목코드의 경우 int타입으로 불러와 종목코드가 4자리또는 5자리의 경우 앞의 0이 사라져 추가잡업을 통해 0을 붙였습니다.

url = 'https://kind.krx.co.kr/corpgeneral/corpList.do'

kosdaq_code = pd.read_html(url+"?method=download&marketType=kosdaqMkt")[0]
kosdaq_code = kosdaq_code[['회사명','종목코드']]

# 종목코드가 int 타입이라 앞의 0이 사라짐, 다시 붙여주는 코드
kosdaq_code['종목코드'] = kosdaq_code['종목코드'].astype('str')
kosdaq_code['종목코드'] = kosdaq_code['종목코드'].map(lambda x : '00'+x if len(x) ==4 else x)
kosdaq_code['종목코드'] = kosdaq_code['종목코드'].map(lambda x : '0'+x if len(x) ==5 else x)

 

네이버 재무재표 가져오기 불러오기

삼성전자의 주요 재무정보를 가져왔습니다. 앞서 불러온 1610개의 종목코드 for문을통해 재무정보를 가져올 수 있습니다.

# 삼성전자 종목코드
code = '005930'
url = f"https://finance.naver.com/item/main.nhn?code={code}"
# 데이터 얻기
res = requests.get(url)
# 재무정보 가져오기
df = pd.read_html(res.text)[3]

# 재무정보 인덱스 설정
df.set_index(df.columns[0],inplace=True)
df.index.rename('재무정보', inplace=True)

# 컬럼명 rename
df.columns = ['2019','2020','2021','2022E','2021.09','2021.12','2022.03','2022.06','2022.09','2022.12E']
df = df.reset_index()

삼성정자- 주요재무정보

반응형
반응형

현재 국내 상장중인 코스피 코스닥 기업을 알아보도록 하겠습니다.

라이브러리

#주식정보 라이브러리
import FinanceDataReader as fdr

#시각화 라이브러리
import matplotlib.pyplot as plt
import seaborn as sns
plt.rc('font', family='NanumGothic')

#전처리 라이브러리ㅣ
from tqdm import tqdm_notebook
import pandas as pd

 

 

코스닥 종목 불러오기

FinanceDataReader 라이브러리를 통해 코스닥 종목을 불러왔습니다. 상장일이 NA값인 종목을 제거하니 1,577건의 코스닥 상장종목을 확인할 수 있으며, 주식명, 섹터, 산업, 대표이름, 홈페이지 등의 정보를 확인할 수 있습니다.

#코스닥 종목 불러오기
df_kosdaq = fdr.StockListing('KOSDAQ')
#결측값 제거
df_kosdaq = df_kosdaq[df_kosdaq['ListingDate'].notna()]
print(df_kosdaq.shape)
df_kosdaq.head()

 

 

코스닥 상위 top10 섹터

코스닥에 상장된 섹터 중 상위 10개의 섹터를 불러온 후 시각화하였습니다. 소프트웨어 개발 및 공급업특수 목적용 기계 제조업 섹터의 상장이 많은 것을 볼 수 있습니다.

li = df_kosdaq['Sector'].value_counts()[:10].index
top10 = df_kosdaq[df_kosdaq['Sector'].map(lambda x : x in li)]
plt.figure(figsize = (20,10))
sns.countplot(data = top10,y= 'Sector')
plt.show()

 

 

 

코스피 종목 불러오기

코스피 종목을 불러오겠습니다. 위와 다르게 'KOSPI'를 입력하게 되면 코스피 종목들을 불러올 수 있습니다. 코스피 종목들은 822건으로 확인됩니다.

#코스피 종목 불러오기
df_kospi = fdr.StockListing('KOSPI')
#결측값 제거
df_kospi = df_kospi[df_kospi['ListingDate'].notna()]
print(df_kospi.shape)
df_kospi.head()

 

 

코스피 상위 top10 섹터

코스피의 경우 코스닥과 달리 기타 금융업과 자동차 신품 부품 제조업이 많은 것으로 나타났습니다.

li = df_kospi['Sector'].value_counts()[:10].index
top10 = df_kospi[df_kospi['Sector'].map(lambda x : x in li)]
plt.figure(figsize = (20,10))
sns.countplot(data = top10,y= 'Sector')
plt.show()

반응형

+ Recent posts