[python] dict형식의 string dict으로 변환(json 활용)
- Python/웹크롤링
- 2022. 4. 21.
파이썬에서 공공데이터나 외부에서 크롤링을 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
자세한 내용은 위 포스팅에 맡기고 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 방식 크롤링)
'Python > 웹크롤링' 카테고리의 다른 글
우분투에서 셀레니움 한글 깨짐 해결 (0) | 2023.03.15 |
---|---|
[파이썬] chrome-driver 설치 안하고 사용하기 (0) | 2022.08.31 |
[Python] FinanceDataReader로 주식데이터 가져오기 (0) | 2021.08.20 |
[웹크롤링] 네이버증권에서 재무제표 가져오기 (13) | 2021.07.19 |
뉴스 크롤링하기 (0) | 2020.05.06 |