웹 백엔드를 배우고 난 뒤, json 데이터는 내게 많이 익숙한 포맷이다.
다만 학부시절과 졸업 직후 취준 시즌때 파이썬을 배울 때에는 json포맷을 사용하지 않았어서, GPT api를 본격적으로 사용하기 전까지는 이 둘을 함께 고려해볼 상황은 없었다.
예시 코드를 통해 Python에서 JSON데이터를 Pandas 데이터프레임으로 소화해볼 것이다.
obj = """
{
"name": "Wes",
"cities_lived": ["Akron", "Nashville", "New York", "San Francisco"],
"pet": null,
"siblings": [
{"name": "Scott", "age": 34, "hobbies": ["guitars", "soccer"]},
{"name": "Katie", "age": 42, "hobbies": ["diving", "art"]}
]
}
"""
우선 변수 obj에 텍스트 형태로 JSON 데이터를 할당한다. 일단 구조상, 딕셔너리와 유사한 느낌으로 사용할 수 있을 것 같다.
import json
result = json.loads(obj)
result
gpt API를 이용해 랭체인이나 펑션콜을 사용했을때의 경험이 떠올랐다. 프롬프트에 프론트엔드에서 넘어온 json데이터를 넣어줄 때, f스트링을 이용해서 json데이터를 넣어줄 필요가 있었다. 그 때 import json이후 json.loads() 방식으로 불러왔었던 것 같다.
{'name': 'Wes',
'cities_lived': ['Akron', 'Nashville', 'New York', 'San Francisco'],
'pet': None,
'siblings': [{'name': 'Scott', 'age': 34, 'hobbies': ['guitars', 'soccer']},
{'name': 'Katie', 'age': 42, 'hobbies': ['diving', 'art']}]}
터미널의 출력 결과는 위와 같다. print(type(result))의 결과는 <class 'dict'>로 출력된다.
Python to JSON
json.dumps() 함수를 사용하면, 파이썬 객체를 JSON 문자열로 바꿀 수 있다.
asjson = json.dumps(result)
print(asjson)
{"name": "Wes", "cities_lived": ["Akron", "Nashville", "New York", "San Francisco"], "pet": null, "siblings": [{"name": "Scott", "age": 34, "hobbies": ["guitars", "soccer"]}, {"name": "Katie", "age": 42, "hobbies": ["diving", "art"]}]}
JSON to DataFrame
pd.DataFrame() 함수를 사용하면, 딕셔너리 객체의 키(key)들은 데이터프레임의 열(column) 이름이 되고, 값(value)들은 각 행의 데이터로 변환된다.
예시 JSON 데이터에서 자녀데이터를 데이터프레임화하는 코드는 이렇게 표현할 수 있다.
siblings = pd.DataFrame(result["siblings"], columns=["name", "age"])
출력 결과는 아래와 같다.
name | age | |
---|---|---|
0 | Scott | 34 |
1 | Katie | 42 |
이러한 방식이라면, 다차원 JSON데이터도 필요한 만큼 국소적으로 파편화하여 2차원 테이블 데이터로 다룰 수 있을 것 같다. (다만 그러한 형태의 데이터 타입은 가급적 지양해야 할 것이다.)
본 후기는 [한글과컴퓨터x한국생산성본부x스나이퍼팩토리] 한컴 AI 아카데미 2기 (B-log) 리뷰로 작성 되었습니다.
'한컴AI 2기' 카테고리의 다른 글
[스나이퍼팩토리] 한컴AI 2기 - gemini CLI (0) | 2025.09.14 |
---|---|
[스나이퍼팩토리] 한컴AI 2기 - 파이썬 파일 I/O, 랜덤시드 숫자 맞추기 게임, CLI 학생 성적 관리 프로그램 (1) | 2025.09.10 |
[스나이퍼팩토리] 한컴AI 2기 - npm, mysql, 몽고DB CRUD (0) | 2025.09.03 |
[스나이퍼팩토리] 한컴AI 2기 - REPL, 모듈, Process, os, path (1) | 2025.08.22 |
SQL 공부 1 : SELECT, DISTINCT, CONCAT (0) | 2025.08.21 |