[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

    ....