json 라이브러리를 이용해 읽어오기
이 db의 길이는 6636이다.
단, json데이터의 특성상 그냥 6636개의 데이터가 있다고 볼 수 없다.
그 이유는
db의 첫번째 값은
위와 같기 때문이다.
Key | Value |
id | 단일값 |
description | 문자열 값(들) |
tags | (빈) 리스트 |
manufacturer | 문자열 값(들) |
group | 문자열 값(들) |
portions | 리스트 안의 딕셔너리 딕셔너리의 키 = amount, unit, grams |
nutrients | 리스트 안의 딕셔너리 딕셔너리의 키 = value, units, description, group |
위 표의 내용대로 db의 key들은 총 7개이다.
그러나 여기서 눈여겨봐야할 키는 바로 nutrients이다.
nutrients 하나로도 데이터프레임을 만들 수 있다.
무슨 말인지 코드로 보자
db의 첫번째 값의 nutrients만 보면
총 162개의 데이터가 있으며, 딕셔너리 형태로 되어 있다.
즉, 위 사전을 바로 162행의 데이터프레임으로 만들 수 있다는 것이다.
보통 데이터프레임을 만들 때와 같이
키가 컬럼으로, 값들이 각 컬럼의 행으로 들어가서 데이터프레임이 만들어졌다.
추가적으로
이 nutrients의 id 값은 1008이다.
id를 컬럼으로 추가하면 이 영양소 정보가 몇번의 id에 해당하는지 알 수 있다.
위 데이터프레임은
첫번째 db의 nutrients를 데이터프레임으로 만들고
첫번째 db의 아이디를 컬럼으로 추가해 준 것이다.
여기까지 이해가 됐다면
for loop를 이용해 db에 있는 모든 nutrients를
id 컬럼을 추가해서 데이터프레임으로 만들어보자
각 nutrients 데이터프레임에 id를 컬럼으로 추가하고
리스트에 담아뒀다.
이를 이제 concat하면 모두 연결된 데이터프레임이 만들어진다.
db의 전체 길이는 원래 6636이었다.
그러나 nutrients에 있는 데이터만 모아도 총 389355개가 된다.
다만, 어떤 이유에서인지는 몰라도 중복된 데이터가 있다.
문제의 소지가 있을 수 있기에 중복데이터는 삭제해 주자
이렇게 잘 정제된 nutrients 데이터는 총 375176개로 확인됐다.
이후 전처리는 아래 포스팅으로 연결
https://steadiness-193.tistory.com/106
'Pandas > 실전' 카테고리의 다른 글
판다스 - 미국농무부 영양소 정보 : 음식 그룹별 영양소 중간값, 최댓값 (0) | 2020.07.08 |
---|---|
판다스 - 미국농무부 영양소 정보 (json 데이터 전처리2) (0) | 2020.07.08 |
판다스 - 미국 신생아 이름 : 이름의 성별 변화 (0) | 2020.07.05 |
판다스 - 미국 신생아 이름 : 마지막 글자의 변화 (0) | 2020.07.04 |
판다스 - 미국 신생아 이름2 : 유행 분석, 이름 사용 경향 (0) | 2020.07.03 |