[Pandas] Json 파일 불러오기

반응형
반응형

판다스로 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 데이터를 데이터프레임으로 변환하는 방법을 보여줍니다.

  1. '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)

  1. '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)

 

  1. '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)

  1. '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)

  1. '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 옵션 선택방법도 달라지니 참고하시기 바랍니다.

데이터목장님의
글이 좋았다면 응원을 보내주세요!

Designed by JB FACTORY