JSON 데이터를 합리적인 데이터 프레임으로 가져 오려면 어떻게해야합니까? 나는 큰 데이터 프레임에 들어가기를 목표로 깊게 중첩 된 파일을 가지고있다. 모든 아래 Github의 저장소에 described입니다 :데이터 탐색 팬더의 JSON 중첩 데이터
http://www.github.com/simongraham/dataExplore.git
JSON 데이터를 합리적인 데이터 프레임으로 가져 오려면 어떻게해야합니까? 나는 큰 데이터 프레임에 들어가기를 목표로 깊게 중첩 된 파일을 가지고있다. 모든 아래 Github의 저장소에 described입니다 :데이터 탐색 팬더의 JSON 중첩 데이터
http://www.github.com/simongraham/dataExplore.git
중첩 jsons를 사용하면 필요한 세그먼트를 추출 수준을 걸어해야합니다. 더 큰 JSON의 영양 부문의 경우, 모든 nutritionPortions
수준을 반복하고 각 시간은 팬더의 정상화를 실행하고 최종 dataframe에 합치 고려 :
import pandas as pd
import json
with open('/Users/simongraham/Desktop/Kaido/Data/kaidoData.json') as f:
data = json.load(f)
# INITIALIZE DF
nutrition = pd.DataFrame()
# ITERATIVELY CONCATENATE
for item in data[0]["nutritionPortions"]:
if 'ftEnergyKcal' in item.keys(): # MISSING IN 3 OF 53 LEVELS
temp = (pd.io
.json
.json_normalize(item, 'nutritionNutrients',
['vcNutritionId','vcUserId','vcPortionId','vcPortionName','vcPortionSize',
'ftEnergyKcal', 'vcPortionUnit','dtConsumedDate'])
)
nutrition = pd.concat([nutrition, temp])
nutrition.head()
출력
ftValue nPercentRI vcNutrient vcNutritionPortionId \
0 0.00 0.0 alcohol c993ac30-ecb4-4154-a2ea-d51dbb293f66
1 0.00 0.0 bcfa c993ac30-ecb4-4154-a2ea-d51dbb293f66
2 7.80 6.0 biotin c993ac30-ecb4-4154-a2ea-d51dbb293f66
3 49.40 2.0 calcium c993ac30-ecb4-4154-a2ea-d51dbb293f66
4 1.82 0.0 carbohydrate c993ac30-ecb4-4154-a2ea-d51dbb293f66
vcTrafficLight vcUnit dtConsumedDate \
0 g 2016-04-12T00:00:00
1 g 2016-04-12T00:00:00
2 µg 2016-04-12T00:00:00
3 mg 2016-04-12T00:00:00
4 g 2016-04-12T00:00:00
vcNutritionId ftEnergyKcal \
0 070b97a4-d562-427d-94a8-1de1481df5d1 18.2
1 070b97a4-d562-427d-94a8-1de1481df5d1 18.2
2 070b97a4-d562-427d-94a8-1de1481df5d1 18.2
3 070b97a4-d562-427d-94a8-1de1481df5d1 18.2
4 070b97a4-d562-427d-94a8-1de1481df5d1 18.2
vcUserId vcPortionName vcPortionSize \
0 fe585e3d-2863-46fe-a41f-290bf58ad169 1 mug 260
1 fe585e3d-2863-46fe-a41f-290bf58ad169 1 mug 260
2 fe585e3d-2863-46fe-a41f-290bf58ad169 1 mug 260
3 fe585e3d-2863-46fe-a41f-290bf58ad169 1 mug 260
4 fe585e3d-2863-46fe-a41f-290bf58ad169 1 mug 260
vcPortionId vcPortionUnit
0 2 ml
1 2 ml
2 2 ml
3 2 ml
4 2 ml
매우 원활하게 작동하는 @parfait에게 감사드립니다. 이제 각 열을 데이터 프레임으로 개별적으로 파싱 할 수 있습니다. 이 작업을 수행 한 다음 각 데이터 프레임을 나란히 병합하는 것이 좋은 방법입니까? 또는 가능하다면이 모든 것을 한 번에 수행하는 것이 가장 좋을까요? – simongraham
듣기 좋습니다! 각 데이터 프레임을 병합하여 병합하지 않습니다. 정규화 된 절차에는 모두가 아니라 하나의 별개의 집합이 필요합니다. 당신이'temp'를 사용하지 않았다면'nutritionPortions'의 마지막 부분 만 루프가'영양 'df를 대체하기 때문에 유지 될 것입니다. – Parfait
외부에 연결하지 마십시오 리소스가 큰 데이터 파일. 대신 게시물에 데이터의 대표적인 * 샘플 *을 포함 시키십시오. – BrenBarn