[Python] json to dataframe
2022. 4. 4. 10:47ㆍ파이썬
2~3가지 방법들이 있는데 해당 내용들을 정리해보고자 한다.
1. Dict to Dataframe in Python
JSON 형식을 Dataframe으로 변환하는 방법을 찾아 헤메던 과정에서 알게 된 내용을 정리해보았다.
나사 날씨데이터로 받은 날씨 JSON은 아래와 같다.
{'ALLSKY_SFC_SW_DWN': {'20170101': 2.06,
'20170102': 1.8,
'20170103': 3.12,
'20170104': 2.71,
'20170105': 1.34,
'20170106': 2.05,
...
- 이 정보들을 최상위 key를 컬럼으로 2번쨰 key를 인덱스로, value들을 value로 변환하려고 했다
- json_normalize()함수를 사용해서 어떻게 집어넣어야 겠다라고 생각했으나... 너무 복잡하게 생각했다
- 리스트던 아니던 상관 없는듯?
df_stat = pd.DataFrame(json_stat)
한줄이면 JSON to Dataframe 완성.
ALLSKY_SFC_SW_DWN | CLRSKY_SFC_SW_DWN | ALLSKY_KT | ALLSKY_SFC_LW_DWN | T2M | T2MDEW | T2MWET | T2M_RANGE | T2M_MAX | T2M_MIN | QV2M | RH2M | PS | WS10M | WS10M_MAX | WS10M_MIN | WS10M_RANGE | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
20170101 | 2.06 | 2.42 | 0.46 | 290.90 | 4.08 | 2.30 | 3.19 | 5.84 | 7.88 | 2.05 | 4.39 | 88.69 | 102.18 | 2.56 | 3.99 | 1.12 | 2.88 |
20170102 | 1.80 | 2.29 | 0.41 | 306.69 | 3.92 | 3.13 | 3.53 | 9.31 | 8.92 | -0.39 | 4.76 | 92.38 | 101.70 | 4.05 | 5.61 | 3.05 | 2.56 |
그렇지만 찾은 게 아까우니까 기록은 남긴다.
Dict to Dataframe
test_row = json_stat[0]
test_result = pd.DataFrame.from_dict(test_row)
[pd.DataFrame.from_dict]
pd.DataFrame.from_dict(data, orient='columns', dtype=None, columns=None)
- data : dict 형식의 데이터 ({field : array-like} 또는 {field : dict})
- orient : 데이터의 방향 (orientation).
columns - dict 데이터의 key가 column값 (default)
index - dict 데이터의 key가 row값 (transposed된 형태)
- dtype : 데이터 타입 (보통 default)
- columns : orient='index'일 때 컬럼 라벨 지정. 리스트 형식
그러나... 이렇게 실행하면 다음의 에러가 발생한다.
If using all scalar values, you must pass an index
json_stat의 key value가 모두 스칼라 형식으로 되어 있기 때문!
에러 해결방식은 다음의 4가지 방식이 있다.
- Index 값 설정
test_result = pd.DataFrame(test_row, index = [0])
- Scalar 형식 -> 리스트 형식 (여기선 하지 말자...)
# dict.values 값을 모두 리스트 형식으로 처리
test_row = {'TBL_NM': ['인구 가구 및 주택 - 읍면동(2015) 시군구(2016~)'],
'PRD_DE': [2017'],...
}
- 리스트 처리된 dict 데이터를 from_records로 변환
test_result = pd.DataFrame.from_records([test_row])
- 리스트 처리된 dict 데이터를 from_dict로 변환
test_result = pd.DataFrame.from_dict([test_row])
json_normalize()
'파이썬' 카테고리의 다른 글
[Python] Dataframe Column Change (0) | 2022.04.07 |
---|---|
[Python] GroupBy 분할, 적용, 결합 (aggregate, apply, filter, transform) (0) | 2022.04.05 |
[Python] JSON to dataframe (0) | 2022.04.04 |
[Python] Colab(코랩)과 로컬 Pycharm 연동하기 (6) | 2021.12.08 |
[python] shift() , pct_change(), diff(), rolling(), resample() (0) | 2021.10.13 |