URL 상세 정보
통계설명
통계설명 API를 이용하기 위한 요청변수, 출력정보, 샘플데이터를 제공합니다. 출력포맷으로 JSON과 XML을 제공합니다.
-
요청URL
https://kosis.kr/openapi/statisticsExplData.do?method=getList
-
요청변수
요청URL로 요청변수, 변수타입, 설명, 비고를 제공합니다 요청변수 변수타입 설명 비고 apiKey String 발급된 인증 Key 필수 statId * orgId(기관ID)+tblId(통계표ID)로도 가능
String 통계조사 ID 필수 예) &statId=통계조사ID 또는
&orgId=기관ID&tblId=통계표IDmetaItm String 요청 항목 필수 전체 - All
조사명-statsNm
작성유형-statsKind
통계종류-statsEnd
계속여부-statsContinue
법적근거-basisLaw
조사목적-writingPurps
조사기간-examinPd
조사주기-statsPeriod
조사체계-writingSystem
연락처-writingTel
통계(활용)분야·실태-statsField
조사 대상범위-examinObjrange
조사 대상지역-examinObjArea
조사단위 및 조사대상규모-josaUnit
적용분류-applyGroup
조사항목-josaItm
공표주기-pubPeriod
공표범위-pubExtent
공표시기-pubDate
공표방법 및 URL-publictMth
조사대상기간 및 조사기준시점-examinTrgetPd
자료이용시 유의사항 -dataUserNote
주요 용어해설-mainTermExpl
자료 수집방법-dataCollectMth
조사연혁-examinHistory
승인번호-confmNo
승인일자-confmDtformat String 결과유형(json) 필수 content String 헤더 유형(html, json) 선택 -
출력결과
출력변수
출력변수로 출력변수,내용,설명을 제공합니다 출력변수 설명 형식 statsNm 조사명 VARCHAR2(4000) statsKind 작성유형 VARCHAR2(4000) statsEnd 통계종류 VARCHAR2(4000) statsContinue 계속여부 VARCHAR2(4000) basisLaw 법적근거 VARCHAR2(4000) writingPurps 조사목적 VARCHAR2(4000) examinPd 조사기간 VARCHAR2(4000) statsPeriod 조사주기 VARCHAR2(4000) writingSystem 조사체계 VARCHAR2(4000) writingTel 연락처 VARCHAR2(8000) statsField 통계(활용)분야·실태 VARCHAR2(4000) examinObjrange 조사 대상범위 VARCHAR2(4000) examinObjArea 조사 대상지역 VARCHAR2(4000) josaUnit 조사단위 및 조사대상규모 VARCHAR2(4000) applyGroup 적용분류 VARCHAR2(4000) josaItm 조사항목 VARCHAR2(4000) pubPeriod 공표주기 VARCHAR2(4000) pubExtent 공표범위 VARCHAR2(4000) pubDate 공표시기 VARCHAR2(4000) publictMth 공표방법 및 URL VARCHAR2(4000) examinTrgetPd 조사대상기간 및 조사기준시점 VARCHAR2(4000) dataUserNote 자료이용시 유의사항 VARCHAR2(4000) mainTermExpl 주요 용어해설 VARCHAR2(4000) dataCollectMth 자료 수집방법 VARCHAR2(4000) examinHistory 조사연혁 VARCHAR2(4000) confmNo 승인번호 VARCHAR2(4000) confmDt 승인일자 VARCHAR2(4000) -
통계자료 예제
(JSP, R, Python) -
샘플데이터 확인
파라미터(Input)
파라미터(Input)로 필드명,설명,조회조건을 제공합니다 요청변수 설명 조회조건 통계조사 ID statId 요청 항목 request 결과(Output)
JSON 결과
소스보기
소스
-
<!--
KOSIS OpenAPI를 이용하여 통계설명자료를 출력하는 예제입니다.
이 소스는 KOSIS API를 사용하는데 참고가 되도록 제공하는 것으로
사용자의 운영환경에 따라 수정작업이 필요합니다
* 유의사항 : Ajax를 활용하여 개발을 진행하실 때에는 CrossDomain으로 인한
통신문제가 발생 할 수 있습니다.
JSON 방식으로 제공받으실 때에는 개발홈페이지에 임의의 jsp를 생성하여
호출함으로써 CrossDomain에 대한 제약을 우회하실 수 있는 개발소스를 제공합니다.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page contentType="text/html; charset=utf-8" %>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>통계청 - 공유서비스</title>
<link type="text/css" rel="stylesheet" media="all" href="https://kosis.kr/openapi/ext/style/subCommon.css" />
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide04/js/dojo.js" ></script>
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide04/js/json.js" ></script>
<script type="text/javascript" language="JavaScript" src="https://kosis.kr/openapi/devGuide/devGuide04/js/ajax.js"></script>
<script type="text/javascript" language="JavaScript">
var mapData;
// window onload 되었을때 실행 함수
dojo.addOnLoad ( function() {
// 통계설명자료를 조회하기위해 함수를 호출한다.
getSubList("ALL", "1962009");
});
/****************************************************
* 통계목록 리스트 조회 함수
* parameter : metaItm - 요청 항목
* statId - 통계조사 Id
****************************************************/
function getSubList(metaItm, statId) {
// ajax 통신을 위한 파라메터를 변수에 담는다.
var paraObj = {
// 임의의 jsp 페이지를 호출함으로써 cross domain 제약을 우회할 수 있다.
url : "http://kosis.kr/openapi/devGuidePop.jsp?method=getList&key=ZjZjOTI3MjRjNmU1YzdhZTMwOWRjNjgxN2MzNDgwNmY=&metaItm=" + metaItm + "&statId=" + statId + "&type=json",
sync : true,
load : function(resObj, a, b) { mapData = resObj; },
error : function ( resObj, e ) { alert(dojo.toJson(resObj)); }
}
sendPost( paraObj );
var nodeInfo="";
// 통계설명자료를 화면에 출력하기 위해 변수에 적재
nodeInfo= "<table class='TB02' >";
nodeInfo+=" <thead>"
nodeInfo+=" <tr>"
nodeInfo+=" <th class='fst al_C' scope='col' style='width:20%;'>항목</th>"
nodeInfo+=" <th scope='col'>설명</th>"
nodeInfo+=" </tr>"
nodeInfo+=" </thead>"
nodeInfo+=" <tbody>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>조사명</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].statsNm+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>작성유형</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].statsKind+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>통계종류</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].statsEnd+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>계속여부</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].statsContinue+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>법적근거</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].basisLaw+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>조사목적</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].writingPurps+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>조사기간</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].examinPd+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>조사주기</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].statsPeriod+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>조사체계</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].writingSystem+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>연락처</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].writingTel+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>통계(활용)분야·실태</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].statsField+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>조사대상범위</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].examinObjrange+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>조사대상지역</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].examinObjArea+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>조사단위및조사대상규모</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].josaUnit+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>적용분류</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].applyGroup+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>조사항목</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].josaItm+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>공표주기</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].pubPeriod+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>공표범위</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].pubExtent+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>공표시기</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].pubDate+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>공표방법및URL</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].publictMth+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>조사대상기간및조사기준시점</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].examinTrgetPd+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>자료이용시 유의사항</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].dataUserNote+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>주요용어해설</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].mainTermExpl+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>자료수집방법</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].dataCollectMth+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>조사연혁</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].examinHistory+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>승인번호</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].confmNo+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" <tr>"
nodeInfo+=" <td class='fst al_C' scope='row'>승인일자</td>"
nodeInfo+=" <td class='al_C'>"+mapData[0].confmDt+"</td>"
nodeInfo+=" </tr>"
nodeInfo+=" </tbody>"
nodeInfo+="</table>"
// 변수에 적재된 UI를 화면에 출력
var r_node = document.getElementById("content");
r_node.innerHTML =nodeInfo;
}
</script>
</head>
<body>
<div id="content" ></div>
</body>
</html>
// cross domain 제약을 우회하기 위한 jsp (devGuidePop.jsp)
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<c:set var="method" ><%out.println(request.getParameter("method") == null ? "" : (request.getParameter("method"))); %></c:set>
<c:set var="key" ><%out.println(request.getParameter("key") == null ? "" : (request.getParameter("key"))); %></c:set>
<c:set var="metaItm" ><%out.println(request.getParameter("metaItm") == null ? "" : (request.getParameter("metaItm")));%></c:set>
<c:set var="statId" ><%out.println(request.getParameter("statId") == null ? "" : (request.getParameter("statId"))); %></c:set>
<c:set var="type" ><%out.println(request.getParameter("type") == null ? "" : (request.getParameter("type"))); %></c:set>
<c:import url="http://kosis.kr/openapi/Expt/statisticsExplData.do?method=&apiKey=&metaItm=&statId=&format=" charEncoding="utf-8"/>
-
library(httr)
library(rvest)
library(jsonlite)
library(dplyr)
rm(list = ls()) # 모든변수 초기화
all_items <- data.frame(
ename = c(
'statsNm',
'statsKind',
'statsEnd',
'statsContinue',
'basisLaw',
'writingPurps',
'examinPd',
'statsPeriod',
'writingSystem',
'writingTel',
'statsField',
'examinObjrange',
'examinObjArea',
'josaUnit',
'applyGroup',
'josaItm',
'pubPeriod',
'pubExtent',
'pubDate',
'publictMth',
'examinTrgetPd',
'dataUserNote',
'mainTermExpl',
'dataCollectMth',
'examinHistory',
'confmNo',
'confmDt',
),
hname = c(
'조사명',
'작성유형',
'통계종류',
'계속여부',
'법적근거',
'조사목적',
'조사기간',
'조사주기',
'조사체계',
'연락처',
'통계(활용)분야·실태',
'조사 대상범위',
'조사 대상지역',
'조사단위 및 조사대상규모',
'적용분류',
'조사항목',
'공표주기',
'공표범위',
'공표시기',
'공표방법 및 URL',
'조사대상기간 및 조사기준시점',
'자료이용시 유의사항',
'주요 용어해설',
'자료 수집방법',
'조사연혁',
'승인번호',
'승인일자',
'통계종류'
)
)
# 환경변수에 사용자 key 정의 (환경변수 편집 usethis::edit_r_environ() )
# KOSIS_TOKEN = ZjZjOTI3MjRjNmU1YzdhZTMwOWRjNjgxN2MzNDgwNmY=
v_apiKey = Sys.getenv('KOSIS_TOKEN')
baseurl <- 'https://kosis.kr/openapi/statisticsExplData.do?'
res <- GET(
url = baseurl,
query = list(
method = 'getList',
format = 'json',
jsonVD = 'Y',
apiKey = v_apiKey,
statId = '1962009',
metaItm = 'ALL'
)
)
res %>% content(as = 'text', encoding = 'UTF-8') %>% fromJSON() -> json
df_lists <- data.frame()
json_names <- names(json)
for (i in 1:length(all_items$ename)) {
if (is.na(match(all_items$ename[i], json_names))==FALSE) {
v_desc <- select(json, all_items$ename[i])
df_lists <-
rbind(df_lists, c(all_items$hname[i], paste(na.omit(v_desc))))
}
}
colnames(df_lists) <- c("항목", "내용")
View(df_lists)
-
import sys
import json
# python 3.x 버전에서 사용 (2.x 버전이라면 from urllib import urlopen)
from urllib.request import urlopen
from PyQt5.QtWidgets import *
# 한글 폰트 사용을 위해서 세팅
from matplotlib import font_manager, rc
font_path = "C:/Windows/Fonts/malgun.ttf"
font = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font)
#url을 통해 json 데이터 가져오기
with urlopen("http://kosis.kr/openapi/statisticsExplData.do?method=getList&apiKey=ZjZjOTI3MjRjNmU1YzdhZTMwOWRjNjgxN2MzNDgwNmY=&format=json&jsonVD=Y&statId=1962009&metaItm=All") as url:
json_file = url.read()
py_json = json.loads(json_file.decode('utf-8'))
#변수 지정 및 데이터 저장
data = []
for i, v in enumerate(py_json): #i는 인덱스를 나타냄
#print(json.loads(json_file[i]))
value = []
if 'statsNm' in v:
value.append("조사명")
value.append(v['statsNm'])
data.append(value)
if 'statsKind' in v:
value.append("작성유형")
value.append(v['statsKind'])
data.append(value)
if 'statsEnd' in v:
value.append("통계종류")
value.append(v['statsEnd'])
data.append(value)
if 'statsContinue' in v:
value.append("계속여부")
value.append(v['statsContinue'])
data.append(value)
if 'basisLaw' in v:
value.append("법적근거")
value.append(v['basisLaw'])
data.append(value)
if 'writingPurps' in v:
value.append("조사목적")
value.append(v['writingPurps'])
data.append(value)
if 'examinPd' in v:
value.append("조사기간")
value.append(v['examinPd'])
data.append(value)
if 'statsPeriod' in v:
value.append("조사주기")
value.append(v['statsPeriod'])
data.append(value)
if 'writingSystem' in v:
value.append("조사체계")
value.append(v['writingSystem'])
data.append(value)
if 'writingTel' in v:
value.append("연락처")
value.append(v['writingTel'])
data.append(value)
if 'statsField' in v:
value.append("통계(활용)분야·실태")
value.append(v['statsField'])
data.append(value)
if 'examinObjrange' in v:
value.append("조사대상범위")
value.append(v['examinObjrange'])
data.append(value)
if 'examinObjArea' in v:
value.append("조사대상지역")
value.append(v['examinObjArea'])
data.append(value)
if 'josaUnit' in v:
value.append("조사단위및조사대상규모")
value.append(v['josaUnit'])
data.append(value)
if 'applyGroup' in v:
value.append("적용분류")
value.append(v['applyGroup'])
data.append(value)
if 'josaItm' in v:
value.append("조사항목")
value.append(v['josaItm'])
data.append(value)
if 'pubPeriod' in v:
value.append("공표주기")
value.append(v['pubPeriod'])
data.append(value)
#if 'pubExtent' in v:
#value.append("공표범위")
#value.append(v['pubExtent'])
#data.append(value)
if 'pubDate' in v:
value.append("공표시기")
value.append(v['pubDate'])
data.append(value)
if 'publictMth' in v:
value.append("공표방법및URL")
value.append(v['publictMth'])
data.append(value)
if 'examinTrgetPd' in v:
value.append("조사대상기간및조사기준시점")
value.append(v['examinTrgetPd'])
data.append(value)
if 'dataUserNote' in v:
value.append("자료이용시 유의사항")
value.append(v['dataUserNote'])
data.append(value)
if 'mainTermExpl' in v:
value.append("주요용어해설")
value.append(v['mainTermExpl'])
data.append(value)
if 'dataCollectMth' in v:
value.append("자료수집방법")
value.append(v['dataCollectMth'])
data.append(value)
if 'examinHistory' in v:
value.append("조사연혁")
value.append(v['examinHistory'])
data.append(value)
if 'confmNo' in v:
value.append("승인번호")
value.append(v['confmNo'])
data.append(value)
if 'confmDt' in v:
value.append("승인일자")
value.append(v['confmDt'])
data.append(value)
#데이터개수
count = len(data)
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setupUI()
def setupUI(self):
self.setGeometry(800, 200, 600, 600)
self.tableWidget = QTableWidget(self)
self.tableWidget.resize(600, 600)
self.tableWidget.setRowCount(count)
self.tableWidget.setColumnCount(2)
self.tableWidget.setColumnWidth(1, 450)
self.setTableWidgetData()
self.tableWidget.resizeRowsToContents()
def setTableWidgetData(self):
column_headers = ['항목', '설명']
self.tableWidget.setHorizontalHeaderLabels(column_headers)
for i in range(count):
str_data = str(data[i])
item = str_data.replace("'", "").replace("[", "").replace("]", "")
total_count = len(item.split(","))
#항목
title = item.split(",")[0]
#설명
content = ""
for j in range(1, total_count):
content += item.split(",")[j]
self.tableWidget.setItem(0, i*2, QTableWidgetItem(title))
self.tableWidget.setItem(0, (i*2)+1, QTableWidgetItem(content))
if __name__ == "__main__":
app = QApplication(sys.argv)
mywindow = MyWindow()
mywindow.show()
app.exec_()