Python/Pandas

JSON 파일 포맷 다루기

임베디드 친구 2025. 9. 28. 21:07
728x90
반응형

JSON 파일 포맷 다루기

JSON(JavaScript Object Notation)은 데이터를 구조화하여 저장하는 대표적인 포맷 중 하나입니다. Pandas는 JSON 데이터를 효율적으로 다룰 수 있는 다양한 기능을 제공합니다. 이번 포스팅에서는 JSON 파일을 Pandas에서 로드하고 저장하는 방법을 상세히 알아보겠습니다.

1. JSON 파일이란?

JSON은 키-값 쌍으로 이루어진 경량 데이터 교환 형식으로, 사람이 읽고 쓰기 쉽고 기계가 파싱하고 생성하기 용이한 특징을 가집니다. 주로 웹 서비스에서 데이터를 주고받을 때 사용됩니다.

JSON 데이터의 예시는 다음과 같습니다:

{
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

또한, JSON은 리스트 형식의 데이터를 저장할 수도 있습니다:

[
    {"name": "Alice", "age": 25, "city": "New York"},
    {"name": "Bob", "age": 30, "city": "Chicago"}
]

이제 Pandas에서 JSON 파일을 다루는 방법을 살펴보겠습니다.

2. JSON 파일 로딩

Pandas에서는 read_json() 함수를 사용하여 JSON 데이터를 DataFrame으로 변환할 수 있습니다.

2.1 단순 JSON 로딩

import pandas as pd

# JSON 데이터 로딩
json_file = "data.json"
df = pd.read_json(json_file)
print(df)

위 코드에서 data.json 파일을 DataFrame으로 불러왔습니다. JSON 데이터의 구조에 따라 자동으로 적절한 형태로 변환됩니다.

2.2 JSON 문자열 로딩

파일이 아니라 문자열 형태의 JSON 데이터를 처리할 수도 있습니다.

json_data = '[{"name": "Alice", "age": 25, "city": "New York"}, {"name": "Bob", "age": 30, "city": "Chicago"}]'

# 문자열을 DataFrame으로 변환
df = pd.read_json(json_data)
print(df)

3. JSON 파일 저장

DataFrame을 JSON 파일로 저장하려면 to_json() 함수를 사용합니다.

3.1 기본 JSON 저장

# DataFrame을 JSON 파일로 저장
df.to_json("output.json")

3.2 JSON 포맷 지정

JSON에는 다양한 저장 방식이 있으며, orient 인자를 사용하여 지정할 수 있습니다.

3.2.1 records 형식 (리스트 내부에 딕셔너리)

df.to_json("output_records.json", orient="records", indent=4)

출력된 JSON 형식은 다음과 같습니다:

[
    {
        "name": "Alice",
        "age": 25,
        "city": "New York"
    },
    {
        "name": "Bob",
        "age": 30,
        "city": "Chicago"
    }
]

3.2.2 split 형식 (컬럼 분리)

df.to_json("output_split.json", orient="split", indent=4)

출력된 JSON 형식:

{
    "columns": ["name", "age", "city"],
    "index": [0, 1],
    "data": [["Alice", 25, "New York"], ["Bob", 30, "Chicago"]]
}

3.2.3 table 형식 (테이블 구조)

df.to_json("output_table.json", orient="table", indent=4)

출력된 JSON 형식:

{
    "schema": {
        "fields": [
            {"name": "index", "type": "integer"},
            {"name": "name", "type": "string"},
            {"name": "age", "type": "integer"},
            {"name": "city", "type": "string"}
        ],
        "primaryKey": "index"
    },
    "data": [
        {"index": 0, "name": "Alice", "age": 25, "city": "New York"},
        {"index": 1, "name": "Bob", "age": 30, "city": "Chicago"}
    ]
}

4. JSON 파일을 다룰 때 주의할 점

4.1 JSON 구조 확인

JSON 파일을 로드할 때 read_json()이 예상과 다른 결과를 반환할 수 있습니다. 이럴 때 orient 옵션을 확인해야 합니다.

df = pd.read_json("data.json", orient="records")

4.2 인코딩 문제

JSON 파일을 저장하거나 읽을 때 인코딩 문제를 방지하려면 utf-8을 명시적으로 지정하는 것이 좋습니다.

df.to_json("output.json", orient="records", force_ascii=False, indent=4)

5. 결론

Pandas를 사용하면 JSON 데이터를 쉽게 로드하고 저장할 수 있습니다. 다양한 orient 옵션을 사용하여 원하는 JSON 형식으로 변환할 수 있으며, 데이터 분석과 웹 API 연동 시 유용하게 활용할 수 있습니다. JSON 파일을 다룰 때는 데이터 구조를 확인하고, 인코딩 문제를 신경 쓰는 것이 중요합니다.

반응형