JSONデータを適切なデータフレームにするにはどうすればよいですか?私は大きなデータフレームに入ることを目指して、深くネストされたファイルを持っています。すべては、以下のGithubリポジトリ内describedです:データの探索パンダのJSONネストされたデータ
http://www.github.com/simongraham/dataExplore.git
JSONデータを適切なデータフレームにするにはどうすればよいですか?私は大きなデータフレームに入ることを目指して、深くネストされたファイルを持っています。すべては、以下のGithubリポジトリ内describedです:データの探索パンダのJSONネストされたデータ
http://www.github.com/simongraham/dataExplore.git
ネストされたjsonsでは、あなたが必要なセグメントを抽出し、レベルを介して歩く必要があります。
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ありがとうございます。これで、各列を個別に解析してデータフレームにすることができます。これを行い、各データフレームを並列に連結するのは良い手順ですか?あるいは可能な限り、これをすべて1回で行うのが最善でしょうか? – simongraham
よろしくお願いします!それぞれのデータフレームを連結して連結しないでください。正規化されたプロシージャは、すべてではなく、1つの異なるセットをとります。あなたが 'temp'を使わなかったのは、最後の' nutritionPortions'だけループが 'nutrition'dfを置き換えて保持するためです。 – Parfait
を外部にリンクしないでください。大きなJSONの栄養セグメントのために、すべての
nutritionPortions
レベルを反復処理し、各時間はパンダの正規化を実行すると、最終的なデータフレームに連結考えます大きなデータファイルを持つリソース代わりに、あなたのポストにあなたのデータの代表的な*サンプル*を含めてください。 – BrenBarn