(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단계의 과정을 거치면 된다.
- key와 같은 이름을 가진 빈 리스트를 만들기.
- for문과 인덱싱을 이용하여 각 리스트에 value 집어넣기.
- 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})
정상적으로 데이터프레임이 출력되었다.