콘텐츠로 이동

범용 조회 & 탐색

ecos-reader는 큐레이션된 지표 함수(get_base_rate, get_cpi 등) 외에, ECOS의 어떤 통계표든 직접 받을 수 있는 범용 조회 API를 제공합니다. 도메인 함수가 없는 통계도 get_series 하나로 도달할 수 있습니다.

아무 ECOS 시계열이나 받기 — get_series

get_series(통계표코드, 주기) 와 기간을 받아 정규화된 long-format tidy DataFrame을 돌려줍니다.

import ecos
ecos.set_api_key("YOUR_KEY")

# 기준금리(722Y001) 월별, 특정 항목
df = ecos.get_series(
    "722Y001", "monthly",
    start_date="202401", end_date="202412",
    item_code="0101000",
)
print(df.columns.tolist())   # ['date', 'value', 'unit', 'item_code1', 'item_name1']

period 어휘

정식 어휘와 ECOS 원시 코드를 모두 받으며 대소문자를 구분하지 않습니다.

정식 어휘 원시 코드 의미
daily D
monthly M
quarterly Q 분기
annual A
semiannual S 반기
semimonthly SM 반월

항목코드 — 단일/다축

item_codeNone(전체), 단일 문자열, 또는 길이 ≤ 4 리스트(다축)를 받습니다.

# 다축 조회 — 항목 차원이 long-format으로 보존됩니다
df = ecos.get_series(
    "200Y001", "Q",
    start_date="2024Q1", end_date="2024Q4",
    item_code=["10101", "10102"],
)

큰 표와 페이지네이션

get_series 는 ECOS 요청 윈도우를 넘는 표를 자동으로 순회해 전량 수신합니다. max_rows(안전 가드)와 page_size 로 조절합니다.

# 일별 대형 표 — 자동 페이지네이션
df = ecos.get_series("817Y002", "D", start_date="20200101", end_date="20231231")

원본 컬럼이 필요할 때 — tidy=False

raw = ecos.get_series("722Y001", "M", start_date="202401", end_date="202412", tidy=False)
# parse_response 의 snake_case 원본 컬럼을 그대로 반환

표 찾기 — 카탈로그 탐색 (오프라인)

전체 통계표 카탈로그가 패키지에 동봉되어 있어 네트워크 없이 탐색합니다.

import ecos

# 키워드로 통계표 검색
hits = ecos.search_tables("소비자물가")
print(hits[["stat_code", "stat_name", "cycle"]])

# 카테고리(부모) 아래 직계 표 나열 — parent=None 이면 최상위
roots = ecos.list_tables()
children = ecos.list_tables(roots.iloc[0]["stat_code"])

# 전체 트리(중첩 dict)
tree = ecos.get_table_tree()

# 카탈로그 전체 DataFrame
catalog = ecos.load_catalog()

항목 찾기 — list_items

조회에 필요한 item_code 를 표에서 찾습니다.

items = ecos.list_items("722Y001")
print(items[["item_code", "item_name", "cycle"]].head())

# 찾은 item_code 로 바로 조회
code = items.iloc[0]["item_code"]
df = ecos.get_series("722Y001", "monthly", start_date="202401", end_date="202412", item_code=code)

완결 흐름

검색 → 항목 해석 → 조회로 ECOS 전체에 도달합니다.

import ecos
ecos.set_api_key("YOUR_KEY")

table = ecos.search_tables("소비자물가").iloc[0]["stat_code"]   # 901Y009
item = ecos.list_items(table).iloc[0]["item_code"]               # 0 (총지수)
df = ecos.get_series(table, "quarterly", start_date="2023Q1", end_date="2023Q4", item_code=item)

대량 수집 시의 rate limiter·디스크 캐시 설정은 고급 기능을 참고하세요.