[Python] 연습

[python] json 파일 data frame 으로 읽기

Simon Yoon 2022. 11. 11. 23:35

1. 간단한 json 파일

[
    {
      "id": "A001",
      "city": "Tokyo",
      "country": "Japan",
    },
    {
      "id": "B012",
      "city": "Jerusalem",
      "country": "Isreal",
    },
    {
      "id": "C123",
      "city": "Busan",
      "country": "South Korea",
    }
]

위와 같은 json 파일을 pandas 로 읽어오려면, 아래와 같이 코드를 작성할 수 있다.

 

import pandas as pd

df = pd.read_json('./data/simple.json')

read_json result

 

2. json 파일 내부 요소를 불러오기 ( nest list 형태 )

만약에 아래와 같은 구조를 보이는 json 파일이라면, 위에서처럼 단순히 read_json() 을 사용할 수 없다.

그러면 아래의 그림처럼 데이터프레임이 생성된다.

우리는 "body" 에 있는 나라와 도시에 대한 정보를 데이터프레임으로 만들고 싶기 때문에 다른 함수를 사용해야 한다.

 

먼저 json 파일을 로드하고 Flatten 하게 만든다. 이때는 json_normalize() 함수를 사용한다.

import pandas as pd
import json

# opening JSON file
f = open('./data/nested.json')
data = json.load(f)
df = pd.json_normalize(data, record_path=['Geo', 'body'])

위의 코드를 보면,

1. pandas, json 을 import 해주고

2. json 파일을 읽어서 load 시켜준다.

3. 이후, json_normalize 를 하며, record_path 를 통해 어느 부분까지 들어가서 읽을 것인지를 설정해준다.

다음은 위 코드를 실행한 결과이다.

json_normalize result

 

이 외에도, meta 정보를 붙여서 출력하던지, single value 만 출력하는 방식이 있으므로 다음의 사이트를 참고하면 더욱 자세한 내용을 확인할 수 있다.

https://towardsdatascience.com/how-to-convert-json-into-a-pandas-dataframe-100b2ae1e0d8