Closed 0x68756d8616e6f69664 closed 2 years ago
안녕하세요.
bgn_de는 재무 공시일 기점으로 데이터를 추출합니다. (재무년도 X -> DART 공시 시점)
그로 인해 bgn_de='20201231'으로 검색하는 경우 2020년도 사업보고서(2021.03.09일 공시)까지 검색을 진행하게 됩니다.
2020년 사업보고서를 보면 아래와 같이 2019년 및 2018년도 연간 보고서가 첨부되어 있습니다.
DART-FSS 라이브러리에서는 이러한 데이터를 필터링하기 보다는, 데이터를 살려두는 방향으로 제작되었기 때문에
1-2년전 데이터까지 추출되게 됩니다.
만약 과거 데이터를 필터링하시려면 pandas의 dataframe으로 변환셔서 아래와 같이 column filtering을 하셔서 사용하시면 되겠습니다.
import dart_fss as dart
import re
import numpy as np
def filter_columns(df, year_bgn):
year_re = re.compile('(\d{4})(\d{4})')
columns = []
for col in df.columns:
year = year_re.findall(col[0])
if len(year) > 0:
year = int(year[0][0])
if year >= int(year_bgn):
columns.append(col)
else:
columns.append(col)
columns = np.array(columns, dtype=object)
return df[columns]
corp_list = dart.get_corp_list()
samsung = corp_list.find_by_stock_code('005930')
fs = samsung.extract_fs(bgn_de='20200101')
fs_bs = filter_columns(fs['bs'], "2020")
fs_is = filter_columns(fs['is'], "2020")
fs_cis = filter_columns(fs['cis'], "2020")
fs_cf = filter_columns(fs['cf'], "2020")
감사합니다. 해결됐습니다.
samsung = corp_list.find_by_stock_code('005930') fs = dart.fs.extract(corp_code=re.sub(r'[^0-9]', '', str(samsung)), bgn_de='20201231', end_de='20220401', fs_tp=('bs', 'is'), cumulative=True)
안녕하세요. 다음과 같이 코드를 작성해서 사용해보니 bgn_de가 제대로 입력되지 않는 것 같아요. 저의 생각에는 20년도 21년도 연간 보고서가 나와야 하는것 같은데 19, 18, 17년도 연간 보고서까지 데이터를 복사해오더라구요. 혹시 해결이 가능할까요?