본문 바로가기
데이터분석/Pandas

[Python] Pandas 04 _ json

by nemonemonemo 2025. 8. 19.

JSON

  • JSON → 서로 다른 프로그램/서비스/어플 사이에서 데이터를 주고받을 때 사용하는 약식 중 하나
    • 어떤 값은 뭐에요
    • +1개 아니라 여러개
    • 파이썬 리스트, dict 상당히 유사함
  • 실제 JSON 데이터 : 문자열로 작성된 text
    • 실제 문자열 작성하는 약식으로 파이썬 리스트/ dict에 대응
    • re 패키지를 활용해서 추출하면 되는데.. 규격화/패키지화 → json 패키지 (anaconda/colab 기본 설치된 패키지)
    • 굳이 정규식을 안 써도, 파이썬 리스트/dict로 접근이 가능하게 변경
    • 값에 대한 접근을 정규식 대신에 “정수인덱스” or “키”
import json

json_data1= """{
    "color":"red",
    "value":"$100"
}"""
json_data1
#{\\n    "color":"red",\\n    "value":"$100"\\n}

json_data1["color"]
#TypeError: string indices must be integers, not 'str'

temp = json.loads( json_data1)
temp
#{'color': 'red', 'value': '$100'}

type(temp)
#dict

type(json_data1)
#str

temp["color"]
#'red'

json_data2 = """{
    "id" : "0001",
    "type" : "donut",
    "name" : "Cake",
    "ppu" : 0.55,
    "groups" : {
        "group" : [
                    {"id":"1001", "type":"Regular"},
                    {"id":"1002", "type":"Choco"},
                    {"id":"1003", "type":"Cream"}
                ]
    },
    "topping" : [
        {"id":"5001", "type":"None"},
        {"id":"5002", "type":"Sugar"},
        {"id":"5003", "type":"Choco"}
    ]
}
"""
json_data2
#{\\n    "id" : "0001",\\n    "type" : "donut",\\n    "name" : "Cake",\\n    "ppu" : 0.55,\\n    "groups" : {\\n        "group" : [\\n                    {"id":"1001", "type":"Regular"},\\n                    {"id":"1002", "type":"Choco"},\\n                    {"id":"1003", "type":"Cream"}\\n                ]\\n    },\\n    "topping" : [\\n        {"id":"5001", "type":"None"},\\n        {"id":"5002", "type":"Sugar"},\\n        {"id":"5003", "type":"Choco"}\\n    ]\\n}\\n

data = json.loads(json_data2)
data
#{'id': '0001',
 #'type': 'donut',
 #'name': 'Cake',
 #'ppu': 0.55,
 #'groups': {'group': [{'id': '1001', 'type': 'Regular'},
 #  {'id': '1002', 'type': 'Choco'},
 #  {'id': '1003', 'type': 'Cream'}]},
 #'topping': [{'id': '5001', 'type': 'None'},
 # {'id': '5002', 'type': 'Sugar'},
 # {'id': '5003', 'type': 'Choco'}]}
#JSON 양식으로 작성된 문자열에 대해서
# 파이썬의 자료형으로 변환해주는 역할 : json패키지

# --> 내가 원하는 정보에 대한 접근을 정규식이 아니라...
#     키값, 정수인덱스로 접근 할 수 있다!!!

type(data)
#dict

data.keys()
#dict_keys(['id', 'type', 'name', 'ppu', 'groups', 'topping'])

# 받은 데이터 중에서 id값은 얼마인가요?
data["id"]
#'0001'

# 받은 데이터 중에서 topping 항목 중에서
# 처음 토핑 항목의 id 값은 얼마인가요?
data["topping"][0]["id"]
#'5001'

#받은 데이터 중에서 2번째 group의 type은 뭔가요?
data["groups"]["group"][1]["type"]
#'Choco'

json으로 되어있는 정보를 파이썬으로 접근하기 위해서는

  • 순차적으로 한 depth씩 접근을 해야함
  • 하나씩 보면서.. 순차적으로 맞춰서 진행을 해야됨: 정수/key
  • 눈에 보이는 대로 하나씩 처리하면 됨

++접속에 대한 부분

  • json 패키지 사용해서 필요한 정보를 접근
  • ⇒ DF에 어떻게 쌓을지/기록할지
  • 데이터 크롤링!!