중소 중견기업 빅데이터 플랫폼에서 국민연금정보 데이터를 불러와보자.
https://bigdata-sme.kr/#/datastore/detail/data/DATASET_NICE_8
중소·중견기업을 위한 빅데이터 플랫폼
기업과 산업의 다양한 데이터를 개방하고 활용하여, 기업의 혁신 성장과 산업 생태계를 창출하는 융합 가치를 제공합니다.
dataportal.wehago.com
이 api주소는 기존에 공공데이터포털에서 불러오던 open api주소와는 불러오는 방법이 다르다.
해당 플랫폼에 자세한 설명이나 코드예시가 나와있지 않다.
(이 방법을 찾느라 개고생했음..ㅜㅜ)
구글링을 해도 잘 나오지 않아서 그 방법에 대해 포스팅을 해보려 한다.
먼저 requests 모듈을 불러와준다.
import requests
'구매정보 및 사용방법'에 나와있는 url을 복붙해준다.
url = 'https://dataapi.wehago.com/data/?dataset_key=DATASET_NICE_8&from=0&to=499'
url 마지막 부분에 있는 from=0&to=499는 전체 데이터에서 0~499번째 데이터를 불러오라는 의미이다.
한 번 불러올 때마다 최대 500개의 데이터를 불러올 수 있어서 범위의 넓이를 500이하로 주어야한다.
(from=1&to=500 가능, from=1&to=501 불가능)
그 후, 다시 플랫폼으로 돌아와 발급된 서비스키를 복사해준다.
밑 코드에 붙여넣기 해준다.
데이터를 신청하는 사람마다 서비스키가 다르니 로그인하고 데이터 신청 후 서비스키를 받아가길 바란다.
headers = {'apicode':'본인에게 발급된 인증키를 이곳에 복붙하세요!'}
Headers 부분에 key name이 apicode이기 때문에 위 코드에 'apicode'라고 입력해 주어야 한다.
이제, 해당 url로 접근하여 headers를 입력해주면 데이터를 불러올 수 있다.
r= requests.get(url, headers=headers)
하지만 문제는,
r을 확인해보면 다음과 같이 한글이 아닌 이상한 형태의 문자가 나온다.
이는 json형식으로 확인하지 않았기 때문이다.
r.json()
위 코드를 입력해주면 아래와 같은 이상적인 결과가 나온다.
하지만 이런 json 형태를 바로 분석에 이용할 수 없으니
우리에게 친숙한 데이터 프레임으로 바꿔보겠다.
import pandas as pd
d=r.json()
df=pd.DataFrame(d["data"])
df
이렇게 하면 df에 데이터프레임 형식으로 데이터가 불러와지는 것을 확인할 수 있다.
앞으로 해결해야 할 문제는 다음과 같다.
마지막 데이터의 index를 알 수가 없다. 그래서 코드의 from=&to=에 숫자를 마구잡이로 넣어서 마지막 데이터의 index를 파악하게 되었다. 하지만 이런 방법은 너무나 비효율적......
또한, 그렇게 알아낸 총 데이터 개수는 1,810,363개 인데, 한 번에 500개씩 불러오는 코드로는 전체 데이터를 가져오기에 무리가 있다는 점이다.(심지어 하루에 제한된 해당 api 호출 수는 100번...)
어떻게 위 문제를 해결해야 할지 조금 더 고민해봐야겠다.
(늘 그렇듯 미래의 내가 어떻게든 헤쳐나가겠지..)
'알면 도움 되는 꾸루팁' 카테고리의 다른 글
의사코드, 슈도코드, Pseudo code 작성하는 무료 사이트(LaTex) with Chat GPT (1) | 2023.08.19 |
---|---|
[QGIS]csv파일 불러올 때 한글 깨짐 현상 해결(매우 간단) (0) | 2023.08.08 |
[QGIS] 6자리 좌표계 지도에 나타내기(KATEC -> WGS84 변환) (3) | 2023.08.08 |
[에러] 'numpy.ndarray' object has no attribute 'decode' (0) | 2023.07.12 |
[지오코딩] 주소를 좌표로, 좌표를 주소로 변환하기(프로그램 설치X) (5) | 2023.07.03 |