[Pandas] Json 파일 불러오기
- Python/Pandas
- 2023. 8. 17.
판다스로 Json 불러오기
Json(JavaScript Object Notation) 은 Javascript 객체 문법을 따르는 문자 기반의 데이터이입니다. 네트워크를 통해 전송할 때 유용한 면이 많기 때문에 다양한 곳에서 쉽게 볼 수 있는 포맷입니다. 데이터를 크롤링하거나 다른 외부에서 가져올 때 Json 객체로 변환되어서 가져오는 경우가 많은데 파이썬에서 json 모듈을 이용해 json 파일을 열 수도 있지만 보기 불편합니다.
가독성을 위해 판다스에서 Json파일을 저장, 불러올 수 있습니다.
pd.read_json()
함수를 사용하여 JSON 파일이나 문자열을 데이터프레임으로 변환할 수 있습니다. 아래는 JSON 데이터를 판다스 데이터프레임으로 불러오는 예시 코드입니다:
JSON 파일을 데이터프레임으로 불러오기
import pandas as pd
# JSON 파일을 데이터프레임으로 불러오기
dataframe = pd.read_json('data.json',orient='index')
# 데이터프레임 확인
print(dataframe)
JSON 문자열을 데이터프레임으로 불러오기
import pandas as pd
# JSON 문자열
json_string = '{"name": "John", "age": 30, "city": "New York"}'
# JSON 문자열을 데이터프레임으로 불러오기
dataframe = pd.read_json(json_string, orient='index')
# 데이터프레임 확인
print(dataframe)
orient 파라미터 설정
각각의 orient
옵션에 따른 예제를 아래에 제시합니다. 이 예제들은 pd.read_json()
함수를 사용하여 JSON 데이터를 데이터프레임으로 변환하는 방법을 보여줍니다.
- 'split' 옵션:
JSON 데이터가 리스트 내에 있는 경우, 각 리스트 내의 요소들이 데이터프레임의 열이 됩니다. split인 경우 json이 이미 나누어져 있는 상태여야 합니다.
data = pd.DataFrame({
"name": ["John", "Alice", "Bob"],
"age": [30, 25, 28]
})
# 데이터프레임을 JSON 파일로 저장 (split 옵션 사용)
data.to_json('data.json', orient='split')
위와 같이 column,index,data로 나눠져있는 json파일인 경우 불러올 때 split으로 불러와야 합니다.
# JSON 파일을 데이터프레임으로 읽어오기
dataframe = pd.read_json('data.json', orient='split')
print(dataframe)
- 'records' 옵션:
JSON 데이터가 리스트의 딕셔너리 형태로 구성된 경우, 딕셔너리의 키가 데이터프레임의 열이 됩니다.
# json 저장
data = [
{"name": "John", "age": 30},
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 28}
]
with open('data.json', 'w') as json_file:
json.dump(data, json_file)
import pandas as pd
dataframe = pd.read_json('./data.json',orient='record')
print(dataframe)
- 'index' 옵션:
JSON 데이터가 딕셔너리 형태로 구성되며, 딕셔너리의 키가 데이터프레임의 인덱스가 됩니다.
# json 저장
data = {
"John": {"age": 30},
"Alice": {"age": 25},
"Bob": {"age": 28}
}
with open('data.json', 'w') as json_file:
json.dump(data, json_file)
import pandas as pd
dataframe = pd.read_json('data.json', orient='index')
print(dataframe)
- 'columns' 옵션:
JSON 데이터가 딕셔너리의 리스트 형태로 구성된 경우, 각 딕셔너리 내의 키가 데이터프레임의 열이 됩니다.
data = [
{"name": "John", "age": 30},
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 28}
]
with open('data.json', 'w') as json_file:
json.dump(data, json_file)
import pandas as pd
dataframe = pd.read_json('./data.json',orient='column')
print(dataframe)
- 'values' 옵션:
JSON 데이터가 값의 리스트 형태로 구성되는 경우, 각 값이 데이터프레임의 행이 됩니다.
data = ["John", "Alice", "Bob"]
with open('data.json', 'w') as json_file:
json.dump(data, json_file)
import pandas as pd
dataframe = pd.read_json('./data.json',orient='values')
print(dataframe)
orient
옵션은 JSON 데이터의 구조를 제대로 해석하고 데이터프레임으로 변환하는 데 중요한 역할을 합니다. JSON 데이터의 구조에 따라 적절한 orient
옵션을 선택하여 사용해야 합니다.
마치며
빅데이터 분석을 하게 되면 마주하는 json파일 다루는 방법이었습니다. 큰 골자는 json-> dataframe으로의 변환입니다. json의 형태에 따라 orient 옵션 선택방법도 달라지니 참고하시기 바랍니다.
'Python > Pandas' 카테고리의 다른 글
[Pandas] 교차표 만들기(crosstab) (0) | 2023.12.14 |
---|---|
[Pandas] 데이터프레임 HTML로 변환하기 (0) | 2023.11.02 |
[파이썬] 엑셀 파일 빠르게 읽는 방법(dask, csv, xlsx) (0) | 2023.08.03 |
[파이썬] xlsx 파일 csv로 변환하기 (0) | 2023.07.27 |
[Pandas] 엑셀 시트 여러개 불러오기(보다 쉬운 관리) (0) | 2023.07.24 |