def _download_ticker(self, date): if 'date' not in self.df.columns or len( self.df[self.df['date'].dt.day == date.day]) == 0: for index in {"KOSPI": "02", "KOSDAQ": "03"}.values(): df = MKD20011().read(date, index) if len(df) == 0: continue df = df.set_index('idx_nm') df['date'] = date df['ind_tp_cd'] = df['ind_tp_cd'].apply( lambda x: "KOSPI" if x == "1" else "KOSDAQ") self.df = self.df.append(df)
def _get(self, date, market): try: cond = (self.df['date'] == date) & (self.df['ind_tp_cd'] == market) if len(self.df[cond]) == 0: raise KeyError except KeyError: index = {"KOSPI": "02", "KOSDAQ": "03"}.get(market, "KOSPI") df = MKD20011().read(date, index) if len(df) == 0: return df df = df.set_index('idx_nm') df['date'] = date df['ind_tp_cd'] = df['ind_tp_cd'].apply(lambda x: "KOSPI" if x == "1" else "KOSDAQ") self.df = self.df.append(df)
def get_index_status_by_group(date, market): """시장지수 :param date: 조회 일자 (YYYYMMDD) :return : 시장 지수 DataFrame 기준시점 발표시점 기준지수 현재지수 시가총액 코스피 1983.01.04 1980.01.04 100.0 2486.35 1617634318 코스피 벤치마크 2015.09.14 2010.01.04 1696.0 2506.92 1554948117 코스피 비중제한 8% 지수 2017.12.18 2015.01.02 1000.0 1272.93 1559869409 코스피 200 1994.06.15 1990.01.03 100.0 327.13 1407647304 코스피 100 2000.03.02 2000.01.04 1000.0 2489.34 1277592989 코스피 50 2000.03.02 2000.01.04 1000.0 2205.53 1102490712 """ market = {"KOSPI": "02", "KOSDAQ": "03"}.get(market, "02") df = MKD20011().fetch(date, market) df = df[[ 'idx_nm', 'annc_tm', 'bas_tm', 'bas_idx', 'prsnt_prc', 'idx_mktcap' ]] df.columns = ['지수명', '기준시점', '발표시점', '기준지수', '현재지수', '시가총액'] df = df.set_index('지수명') df = df.replace(',', '', regex=True) df = df.replace('', 0) df = df.astype({"기준지수": float, "현재지수": float, "시가총액": int}, ) return df
def func_wrapper(self, *args, **kwargs): if self.df.empty: # 02 : KOSPI / 03 : KOSDAQ for index in ["02", "03"]: # date is not supported df = MKD20011().fetch("", index) if len(df) == 0: continue df = df[[ 'idx_nm', 'bas_idx', 'ind_tp_cd', 'bas_tm', 'idx_clss', 'idx_ind_cd' ]] df.columns = ['지수명', '기준지수', '시장', '기준시점', '구분', '티커'] # 다른 지수에 같은 티커가 존재함. 중복 문제를 피하기 위해 코스피 1xxx 코스닥 2xxx로 # 내부에서 사용함 df['티커'] = df['시장'] + df['티커'] df['시장'] = df['시장'].apply(lambda x: "KOSPI" if x == "1" else "KOSDAQ") df['기준시점'] = pd.to_datetime(df['기준시점']) df = df.set_index('티커') self.df = self.df.append(df) return method(self, *args, **kwargs)