흔히 데이터를 다루는 상황에서 마주칠 수 있는 데이터 형식 중에는 이전 게시글에서 다뤄본 csv 파일 말고도 json 파일이 있습니다. 하지만, 처음 json을 접한 사람은 보통 csv 파일을 다룰 때보다 어려워 하는 것 같은데요, 그것은 csv 파일이 아마 엑셀로 열어서 쉽게 열람이 가능하지만 json은 엑셀로 열 수도 없고 억지로 열어봐도 json 나름의 생소한 문법 때문에 당황하기 때문일 것입니다.
아래와 같이 말이죠.
data.json
{
'name': 'nero',
'age': 2,
'color': 'black',
'like_food': ['banana', 'apple', 'chewrrr'],
'is_cat': True,
'is_dog': False,
'friends': {
'poki': 'cat',
'bowow': 'dog',
'yatong': 'cat',
}
}
아마, 파이썬에 조금 익숙하신 분들은 "이거 그냥 파이썬 딕셔너리 아니야...?" 라고 생각하시는 분들이 있을거고, 그렇지 않다면 "그래서 이게 뭔데" 같은 반응을 할 수도 있을 것 같습니다. 오늘은 json 파일을 필요한 만큼만 이해해보고 python으로 간단히 다뤄보도록 하겠습니다.
json 파일이란?
json은 JavaScript Object Notation의 줄임말로, 데이터의 한 형태라고 간단히 생각하시면 됩니다. 위의 예시처럼 키(:을 기준으로 왼쪽 값)와 값(:을 기준으로 오른쪽 값)이 한 쌍을 이루는 파이썬의 딕셔너리와 유사한 자료 형식을 가지고 있습니다. 만약, 데이터 분석을 진행하다가 json 파일을 가지고 무언가를 해야한다... 하는 상황이 나오면 위의 예시처럼 작성되어 있는 .json
파일을 읽어들여 작업을 한다고 생각하면 됩니다.
{
'name': 'nero',
'age': 2,
'color': 'black',
'like_food': ['banana', 'apple', 'chewrrr'],
'is_cat': True,
'is_dog': False,
'friends': {
'poki': 'cat',
'bowow': 'dog',
'yatong': 'cat',
}
}
주요한 장점은 데이터의 속성 안에 또다른 속성이 있는, 즉, 데이터 구조에 깊이 개념이 있는 경우에 표로 보여지는 csv 데이터보다는 좀 더 다뤄지기 쉽다는 것에 있겠네요.
json은 위와 같은 키와 쌍으로 이루어진 파일이라고 했지만 사실은 구체적인 문법이 존재합니다. (즉, 문법이 조금이라도 어긋나면 json 파일이 아니게 됩니다.) 여러 다른 게시글을 보면 json이 구체적으로 어떤 문법으로 작성되어야 하는지 자세히 설명하기도 합니다. 하지만, 저는 json 파일을 다루면서 그 문법을 자세히 보고 숙지하지 않고도 여태 잘 사용해 왔는데, 그 이유는 파이썬의 딕셔너리와 정말 많이 유사하기 때문입니다. 유사한 정도가 아니라 그냥 똑같습니다. 그래서 이 게시글에서는 json 문법에 대해서 자세히 다루지는 않고 그저 "파이썬 딕셔너리 변수가 파일로 저장되어 있는게 json이구나~" 정도로만 생각하셔도 무방하다고 말씀드리고 시작하겠습니다. 필요한 경우에는 여기서 문법을 확인해보시면 좋을 것 같네요!
json
모듈로 json 파일 읽기/쓰기
다시 한 번 강조하지만 json은 파이썬의 딕셔너리와 유사합니다. 그래서 그런진 몰라도 파이썬에서 json 모듈로 쉽게 읽어들일 수 있고, 읽은 파일 자체를 파이썬의 딕셔너리 변수에 저장할 수 있습니다. 또한, 내가 파이썬에서 다루고 있는 딕셔너리 변수를 손쉽게 json 파일로 저장할 수도 있습니다.
json 모듈은 csv 모듈처럼 파이썬에서 기본적으로 제공하는 패키지입니다. 따라서, 별도의 패키지 설치없이 이렇게 import 할 수 있습니다.
import json
json 파일 쓰기
먼저 샘플 파일을 만들어볼겸, json.dump
함수를 통해 내가 만든 딕셔너리 변수를 json 파일로 저장하는 것을 먼저 해볼게요. json.dump
함수의 첫번째 인자에는 json으로 변환할 변수를, 두번째 인자에는 파일 객체를 넣어주면 됩니다. 그러면, 첫번째 인자에 있는 딕셔너리 변수를 두번째 인자에 있는 파일 경로로 저장할 수 있게 됩니다.
import json
data = {
'name': 'nero',
'age': 2,
'color': 'black',
'like_food': ['banana', 'apple', 'chewrrr'],
'is_cat': True,
'is_dog': False,
'friends': {
'poki': 'cat',
'bowow': 'dog',
'yatong': 'cat',
}
}
with open("data.json", "w") as f:
json.dump(data, f)
위의 예제를 수행했다면, 수행한 곳과 같은 폴더 내에 data.json
이라는 파일이 저장되어 있을 것이고, 그 파일을 메모장이나 vscode 등으로 열면 data
변수의 값들이 파일에 그대로 저장된 것을 알 수가 있습니다. 확인해 보세요!
json 파일 읽기
그리고나서 정말 간단하게, json.load
함수에 파일 변수를 인자로 넣어 다음과 같이 json 파일을 파이썬의 딕셔너리 자료형으로 불러올 수 있습니다.
import json
with open("data.json", "r") as f:
data = json.load(f)
print(data)
print(data["name"]) ## "nero"
'Python > 데이터 다루기' 카테고리의 다른 글
Python으로 CSV 파일 읽기/쓰기: csv 모듈 활용법 (3) | 2021.01.31 |
---|