[python] dict형식의 string dict으로 변환(json 활용)

반응형
    반응형

    파이썬에서 공공데이터나 외부에서 크롤링을 json 형태로 가져오게 되면 dict형식인데 string으로 가져올 때가 있습니다.
    string 자체로는 데이터 처리를 하기가 굉장히 난감합니다.
    더군다나 dict형식으로 되어있어서 더더욱 어렵습니다.
    string을 완벽한 dict형식으로 바꾸어야 판다스에서 데이터 전처리를 할 수 있게 됩니다.

    사실 json으로 바꾸는 거긴 합니다 json이라 하면 잘 모를수도 있으니깐 일단 dict형식이라고 하겠습니다


    json 모듈을 이용해 dict으로 변환합니다.

    json 활용

    dict_string = '{"a":"b","a2":"c"}'
    type(dict_string)

    to_json = json.loads(dict_string)
    type(to_json)

    이런식으로 바꾸고 판다스에 적당하게 넣으면 됩니다.

    실제 데이터 활용 예제

    requests를 통해 공공데이터를 가져왔습니다.
    api는 보통 get방식으로 하니 requests를 이용한 get방식 크롤링에 대한 방법을 알아야 합니다.
    방법에 대해 잘 알지 못하시는 분은 아래 해당 포스팅을 링크해놓을테니 참고하시기 바랍니다.
    https://seong6496.tistory.com/43

     

    requests 모듈(get 방식 크롤링)

    크롤링을 하는데 꼭 필요한 모듈이 requests 모듈입니다. 웹사이트를 내 공간으로 불러들여야 코딩작업을 할 수 있는데 requests로 불러올 수 있습니다. 웹크롤링의 시작이고 반드시 해야 하는 작업

    seong6496.tistory.com


    자세한 내용은 위 포스팅에 맡기고 get으로 데이터를 가져오면 다음과 같은 형식으로 나옵니다. 주로 api에서 'json 형태로 가져와줘' 라고 얘기하면 나오는 형태입니다.

    re.text

    현재 상태는 작은 따옴표로 시작하니 string입니다.
    이를 위의 방법으로 하면 dict으로 바꿀 수 있습니다.

    to_json = json.loads(re.text)
    to_json

    dict(json)형식으로 바뀌게 됩니다.
    그러면 이제 딕셔너리처럼 사용할 수 있게 됩니다.
    그림에서 보면 'I790'의 'row'자료가 필요한 테이블로 보입니다.
    이를 정리해서 데이터프레임으로 만듭니다.

    그래서 판다스로 불러오게 되면 다음과 같이 나오게 됩니다.

    df = pd.DataFrame(to_json['I1790']['row'])

     

    마치며

    공공데이터라 블로그에서 막 공개할 수가 없네요 ㅜ
    공공 데이터 사이트에서 api 신청으로 데이터를 가져올 수 있으니 참고하시면 좋을 것 같습니다.

    공공 데이터 사이트는 아래에 링크 걸어놓겠습니다.

    아무튼 api를 json 형식으로 받은 경우 json모듈로 처리를 하면 보다 쉽게 전처리를 할 수 있습니다.

    공공 데이터 사이트 링크: https://www.data.go.kr/

     

    관련 포스팅
    requests 모듈(get 방식 크롤링)

    댓글

    Designed by JB FACTORY

    ....