본문 바로가기
데이터분석

JSON

by ADELA_J 2023. 4. 18.

 

*JSON : JavaScript Object Notation 

  - 딕셔너리와 리스트를 중첩해 놓은 것과 비슷한 구조를 가지고 있음. 

  - 키와 값을 콜론으로 연결함. key:value    ex. {"name" : "혼자 공부하는 데이터 분석"}

    △ 키와 값에 문자열을 쓰려면 항상 큰 따옴표로 감싸줘야함.

  - 파이썬의 딕셔너리와 잘 호환됨. (하지만 웹기반 API로 데이터를 전달할때는 텍스트로 전달해야함)

  - 비교적 읽기 쉽고 간결하기 때문에 최근 웹 기반 API에서 많이 사용함.

d = {"name": "이것이 JSON의 값입니다."}
print(d['name'])

 

* JSON 패키지 

  1. json.dumps() : 파이썬객체를 JSON 형식에 맞는 텍스트로 바꿀 때 ▶하고나면 문자열로 바뀐다구여

  2. json.loads() : JSON 문자열을 파이썬 객체로 변환. 

   - 왜 바로 파이썬 객체로 안하고 문자열로 바꿔서 전송하냐구요? 

      ▶ 웹 기반 API가 사용하는 HTTP 프로토콜이 텍스트 기반이라서요. 그래서 데이터를 전송하려면 객체를 텍스트로 바꿔야해. 이렇게 수정가능한 형태로 변환하는걸 직렬화(serialization), 다시 객체로 바꾸는걸 역직렬화(deserialization)

 

 

▲ ensure_ascii = False로 한 이유는 딕셔너리에 한글이 포함되어 있어서. 저장된 문자 그대로 출력할 수 있게

 

 

 

*JSON 배열 : 여러 개의 JSON 객체를 합쳐서 하나의 대괄호 안에 나열해서 만든 배열. 콤마(,)로 나열

   ▷ 문자열이 길면 세겹따옴표를 쓰자 (""") 이런 기본은 기억해야한다 인간적으로

 

#복잡한 데이터 구조 (문자열 형식의 JSON 타입이라고 가정)
d4_str ="""
    [   
        {"name" : "cat", "age" : 3},
        {"name" : "dog", "age" : 4}
    ]
""" 
#파이썬 데이터 타입으로 변환 > 데이터를 가공하기 쉽게 하기 위해서 
import json 
d4 = json.loads(d4_str)         #파이썬 데이터타입(이 경우는 리스트형으로 변환)
print(d4[0]["name"])            #d4 리스트의 첫번째 요소({"name" : "cat", "age" : 3})는 딕셔너리 구조이고 그 딕셔너리의 "name"키에 해당하는 값 출력

# JSON  문자열을 조금 더 간편하게 그리고 한꺼번에 변환(가공하기 쉽게)
import pandas as pd
print(pd.read_json(d4_str))        #1. JSON 문자열을 판다스의 DataFrame 형식(행, 열)으로 변환

print(pd.DataFrame(d4))     #2. 파이썬 객체(여기서는 리스트)를 DataFrame형식으로 전환​

  3. read_json() : JSON 문자열을 데이터프레임으로 변환

     3-1 . pd.DataFrame() : JSON 문자열을 파이썬 객체로 만든다음 DataFrame 클래스를 이용해도 ㅇㅋ

     ▼ 위에 있는 것을 그대로 가져다가 실행해보았다. 각 행에 잘 매핑mapping되었다.

 

'데이터분석' 카테고리의 다른 글

API  (1) 2023.04.18
XML  (0) 2023.04.18
API  (0) 2023.04.18
데이터 분석의 시작- CSV파일 파이썬으로 출력하기  (0) 2023.04.17
데이터 분석이란  (0) 2023.04.17