Python

[Python/ 데이터 분석] JSON 데이터

2023. 4. 11. 00:48

JSON 데이터 다루기


  • 파이썬 객체 → JSON 문자열로 변환하기
  • JSON 문자열 → 파이썬 객체로 변환하기
  • 여러 개의 항목을 가진 JSON 문자열 딕셔너리로 변경하기
  • 여러 개의 JSON 객체 나타내기
  • JSON 문자열 데이터프레임으로 변환하기

JSON

Java Script  Object  Notation

원래는 자바 스크립트 언어를 위해 만들어졌지만, 현재는 범용적인 포맷으로 사용되고 있다.

대부분의 프로그래밍 언어는 JSON 형태의 텍스트로 읽고 쓰기가 가능하다.

 

형태

JSON은 파이썬의 딕셔너리와 리스트를 섞어놓은 것 같이

중괄호 안에 이 콜론(:) 으로 연결되어 있다.

 

"tistory" "chummlog"  }

 

· 키와 값에 문자열을 사용하기 위해서는 항상 큰 따옴표(")로 감싸주어야 한다.

 

 

💻 연습 >

JSON 형식으로 구글 코랩에서 파이썬 딕셔너리를 만들어보았다.

위와 같이 JSON 포맷은 파이썬 딕셔너리와 잘 호환된다.

다만, 웹 기반 API로 데이터를 전달할 때에는 파이썬 딕셔너리가 아닌 '텍스트'로 전달해야 한다.

 


 

 ✔  파이썬 객체 → JSON 문자열로 변환하기  

json.dumps() 함수

json 패키지에서 파이썬 객체를 json 형식에 맞는 텍스트로 바꿀 때 사용한다.

 

💻 연습 >

❓ ensure_ascii 매개변수를 'False'로 지정한 이유

→ 딕셔너리 dic에 한글이 포함되어 있기 때문이다.

 

· 기본적으로 json.dumps() 함수는 아스키 문자 외 다른 문자를 16진수로 출력하기 때문에 한글이 제대로 보이지 않는다.

 

dic_str의 type 확인 결과 딕셔너리에서 문자열 객체로 잘 변환된 것을 확인할 수 있음.

 

이처럼 웹기반 api로 전송하려는 파이썬 객체는 json.dumps() 함수를 사용해서 JSON 문자열로 변환>전송할 수 있다.

 

그렇다면 반대로

 ✔   JSON 문자열 파이썬 객체로 변환하기

json.loads() 함수

JSON 문자열을 파이썬 객체로 변환할 때 사용한다.

 

 

💻 연습 >

 위의 dic_str를 json.loads() 함수를 사용해서 파이썬 객체(딕셔너리)로 변환해보자.

변환 결과 dic2 의 data type 은 dictionary로 변환된 것도 확인할 수 있음.

 

∴ 웹 기반 API에서 전달되는 데이터가 JSON 문자열이라면 json.loads() 함수를 사용해서 파이썬 객체로 변환한 후 분석 프로그램에서 사용이 가능하다.

 


 ✔   여러 개의 항목을 가진 JSON 문자열 딕셔너리로 변경하기

  Step1  

name, author, year 항목을 가진 json 문자열을 dictionary 로 변경해보자.

  Step2  

name 키에 여러 항목을 넣어보자

dic3_1 = json.loads('{"name":["데이터를 엮는 사람들 데이터 과학자","데이터 분석 업계에 진솔한 이야기"]
					  ,"author":"권정민"
					  ,"year":"2023"}'
                      )

 

Step2 의 name 키-값의 모습은 딕셔너리 안에 리스트가 중첩된 것으로 볼 수 있다.


 ✔  여러개의 JSON 객체 나타내기

JSON 객체를 대괄호 안에 나열해서 JSON 배열로 나타낼 수 있다.

[{"name":"데이터를 엮는 사람들 데이터 과학자", "author":"권정민", "year":2023},
 {"name":"혼자 공부하는 데이터 분석", "author":"박해선", "year":2022}'
 ]

세겹 따옴표(""" """)를 입력해서 긴 문자열을 줄바꿈해서 입력할 수 있음.

JSON 배열은 파이썬 리스트로 변환된다.

d4_dic[0]은 파이썬 리스트의 첫번째 딕셔너리가 된다.

 

d4_dic[1]['name'] 이라면 두 번째 딕셔너리의 'name'의 키값을 반환한다.


 ✔  JSON 문자열 데이터프레임으로 변환하기

read_json() 함수

json 문자열을 읽어서 데이터 프레임으로 변환하는 pandas 함수

 

💻 연습 >

dic4_str을 데이터프레임으로 변환해보자.

 

> 판다스 데이터프레임 클래스를 사용해서도 가능하다.

파이썬 DataFrame 클래스에 파이썬 리스트를 넣어준다.