(python) json 파일을 데이터프레임으로 만들기

json 파일에 대해 알아보고 , 이를 데이터프레임으로 변환해보자.



(python) json 파일을 데이터프레임으로 만들기



1. JSON 이란?

1-1 Json 의 정의


json은 JavaScript Object Notation의 약자로써,
자료를 주고 받을 때 주로 사용하는 파일형식이다.

약자에서 알 수 있듯이, json은 자바스크립트에서 파생되었다.
따라서 json은 자바스크립트 구문형식을 따른다.

1-2 . Json의 특징 ( 장점 )


  • 특정 프로그래밍 언어, 플랫폼에 종속적이지 않다.
    • 따라서 다양한 프로그래밍 언어에서 사용 가능하다.
    • 서로 다른 시스템과 객체를 교환할 때 유용하다.
  • 텍스트 형식으로 되어 있어, 사람과 기계 모두 파일을 읽고 쓰기 편하다.




2. Json을 판다스 데이터프레임으로 불러오기.




미국 GDP 정보가 저장된 json파일이 로컬 디렉토리에 있다.
이 파일을 판다스를 통해 데이터프레임으로 변환해보자.

(크롤링을 통해 웹에 저장된 json파일을 불러오는 경우,
urlopen 모듈을 이용하면 된다.)

import pandas as pd # pandas 모듈 로드
import json  # json 모듈 로드


우선 pandas와 json 모듈을 임포트한다.


json_file_path="./NY.GDP.MKTP.CD.json" # 파일로드 (파일명 : NY.GDP.MKTP.CD.json )

with open(json_file_path,'r') as j:
    contents=json.loads(j.read())  # open : r - 읽기모드, w-쓰기모드, a-추가모드  


위와 같이 json 파일을 로드한다.

json.loads( )로 파일을 불러올 경우,
아래 그림과 같이 오류가 발생할 수도 있다.

따라서 위 구문으로 json 파일을 로딩하자.



참고)

Expecting value : line 1 column 1 (char 0) 에러 발생이유

1) 인코딩 에러

2) 빈 문자열이 삽입되어 있을 경우.



contents 객체에 json 데이터가 저장되었다.

contents 객체의 구조는 위 그림과 같다.
2번 리스트에 저장된 정보를 데이터프레임으로 만들것이다.

우선 2번 리스트에 저장된 데이터를 확인해보자.

contents[1][1] 

데이터가 딕셔너리 형태로 저장되어 있다.

key값을 칼럼으로, value를 레코드로 사용할 것이다.

이를 위해 , 3단계의 과정을 거치면 된다.

  1. key와 같은 이름을 가진 빈 리스트를 만들기.
  2. for문과 인덱싱을 이용하여 각 리스트에 value 집어넣기.
  3. pd.DataFrame( {칼럼명 : 리스트} ) 이용.

date=[]
value=[]
unit=[]
obs_status=[]
decimal=[]
for i in range(len(contents[1])):
    date.append(contents[1][i]["date"])
    value.append(contents[1][i]["value"])
    unit.append(contents[1][i]["unit"])
    obs_status.append(contents[1][i]["obs_status"])
    decimal.append(contents[1][i]["decimal"])
USA_GDP=pd.DataFrame({"date":date,
                    "value":value,
                    "unit":unit,
                    "obs_status":obs_status,
                    "decimal":decimal})

정상적으로 데이터프레임이 출력되었다.


© 2024. All rights reserved.