JSON을 Pandas DataFrame으로 변환

  1. json_normalize()를 사용하여 Pandas DataFrame에 JSON
  2. read_json()을 사용하여 Pandas DataFrame에 JSON

이 기사에서는 JSON을 Pandas DataFrame으로 변환하는 방법을 소개합니다.

JSON은 JavaScript Object Notation을 나타냅니다. 이것은 JavaScript의 객체 형식을 기반으로하며 구조화 된 데이터를 표현하는 인코딩 기술입니다. 요즘에는 특히 서버와 웹 응용 프로그램 간의 데이터 공유에 널리 사용됩니다.

프로그래밍 언어 데이터 구조의 단순성과 영향으로 인해 JSON은 매우 인기를 얻고 있습니다. 비교적 이해하기 쉽고 다음은 API의 JSON 응답에 대한 간단한 예입니다.

{
"Results":
         [
         { "id": "01", "Name": "Jay" },
         { "id": "02", "Name": "Mark" },
         { "id": "03", "Name": "Jack" }
         ],
"status": ["ok"]
}

예제에서 볼 수 있듯이 JSON은 중첩 된 목록과 사전의 조합으로 보입니다. 따라서 JSON 파일에서 데이터를 추출하고이를 Pandas DataFrame으로 저장하는 것이 비교적 쉽습니다.

Python의 Pandas 및 JSON 라이브러리는이를 달성하는 데 도움이 될 수 있습니다. JSON 문자열을 DataFrame으로 변환하는 데 도움이 될 수있는 두 개의 함수read_json()json_normalize()가 있습니다.

json_normalize()를 사용하여 Pandas DataFrame에 JSON

json_normalize()함수는 중첩 된 JSON 문자열을 읽고 DataFrame을 반환하는 데 매우 널리 사용됩니다. 이 함수를 사용하려면 먼저 Python의 JSON 라이브러리에있는json.loads()함수를 사용하여 JSON 문자열을 읽어야합니다. 그런 다음이 JSON 객체를json_normalize()에 전달하면 필요한 데이터가 포함 된 Pandas DataFrame이 반환됩니다.

import pandas as pd
import json
from pandas import json_normalize

data = '''
{
"Results":
         [
         { "id": "1", "Name": "Jay" },
         { "id": "2", "Name": "Mark" },
         { "id": "3", "Name": "Jack" }
         ],
"status": ["ok"]
}
    '''

info = json.loads(data)

df = json_normalize(info['Results']) #Results contain the required data
print(df)

출력:

   id  Name
0  1   Jay
1  2  Mark
2  3  Jack

read_json()을 사용하여 Pandas DataFrame에 JSON

JSON을 DataFrame으로 변환하는 또 다른 Pandas 함수는 더 간단한 JSON 문자열을위한read_json()입니다. Pandas DataFrame에 데이터를 저장하는 함수에 JSON 파일 또는 JSON 문자열의 경로를 직접 전달할 수 있습니다. read_json()에는 많은 매개 변수가 있으며, 그중orient는 JSON 문자열의 형식을 지정합니다.

단점은 중첩 된 JSON 문자열과 함께 사용하기 어렵다는 것입니다. 따라서read_json()을 사용하기 위해 아래와 같이 훨씬 더 간단한 예제를 사용합니다.

import pandas as pd

data = '''
          {
              "0":{
                  "Name": "Jay",
                  "Age": "17"
              },
              "1":{
                  "Name": "Mark",
                  "Age": "15"
              },
              "2":{
                  "Name": "Jack",
                  "Age":"16"
              }
          }
    '''

df = pd.read_json(data, orient ='index')
print(df)

출력:

   Name  Age
0   Jay   17
1  Mark   15
2  Jack   16

JSON 문자열 fromat이 패턴과 {index: {column: value}}와 일치하기 때문에orient'index'로 설정합니다.

관련 문장 - Pandas DataFrame

  • Pandas DataFrame 에 헤더 행을 추가하는 방법
  • Pandas DataFrame의 여러 열에 함수 적용
  • 관련 문장 - Pandas JSON

  • Pandas 그룹 및 합계를 집계하는 방법
  • Pandas DataFrame 열을 목록으로 변환