open poseのJSON形式のデータをpandasを使って整列したい
初めての質問です。見当違いのことを聞いているかもしれませんが,
よろしくお願いいたします。
以下のようなjsonファイルをpandasを使って整列したいです。
(openposeを使って、人の骨格座標を取得しています)
{"version":1.2,"people":[{"pose_keypoints_2d":[140.49,47.5103,0.866778,139.464,65.4834,0.89693,115.515,65.4856,0.833801,107.443,95.5163,0.816319,103.496,124.515,0.827791,162.482,62.5137,0.827878,170.52,93.4827,0.837408,178.473,121.485,0.803069,138.514,129.485,0.737967,123.528,128.514,0.743828,122.499,176.488,0.692097,122.512,223.502,0.632983,152.508,129.493,0.703248,155.442,177.475,0.730231,157.507,221.501,0.654844,137.488,43.5204,0.888961,145.474,43.5194,0.880843,130.516,41.4767,0.810869,149.484,41.4881,0.745051,160.493,228.536,0.349573,166.494,228.465,0.418727,156.467,227.456,0.461901,122.475,229.503,0.338244,115.519,228.515,0.394034,124.474,227.474,0.458006],"face_keypoints_2d":[],"hand_left_keypoints_2d":[],"hand_right_keypoints_2d":[],"pose_keypoints_3d":[],"face_keypoints_3d":[],"hand_left_keypoints_3d":[],"hand_right_keypoints_3d":[]}]}
このjsonファイルでは1行876列のデータになっていて、
"pose_keypoints_2d":[頭のx座標,頭のy座標,頭の信頼度p,首のx座標,首のy座標,首の信頼度p,,,]
という具合にデータが並んでいます。
大量のjsonファイルがあり、それらすべてを整列したいと考えています。
どのように整列したいか
"version" や "people" "face_keypoints_2d"などを除き
下図のようなdataframeに整列したいです。
||座標X|座標Y|信頼度P|
|:--:|:--:|:--:|
|head|140.2|120.1|0.8|
|neck|140.5|110.3|0.7|
||||||
||||||
||||||
|r_toes|300.2|400.1|0.5|
ソースコード
.valueや.loc等を試しましたがどう整列すればよいのかわかりません。
python
1import json 2import pandas as pd 3 4df = pd.read_json('test.json') 5 6df.values 7 8df.T.loc['people']
df
1#df.valuesの出力 2array([[1.2, 3 {'pose_keypoints_2d': [140.49, 47.5103, 0.8667779999999999, 139.464, 65.4834, 0.8969300000000001, 115.515, 65.4856, 0.833801, 107.443, 95.5163, 0.816319, 103.496, 124.515, 0.8277909999999999, 162.482, 62.5137, 0.827878, 170.52, 93.4827, 0.8374079999999999, 178.473, 121.485, 0.8030689999999999, 138.514, 129.485, 0.7379669999999999, 123.528, 128.514, 0.7438279999999999, 122.499, 176.488, 0.692097, 122.512, 223.502, 0.632983, 152.508, 129.493, 0.703248, 155.442, 177.475, 0.730231, 157.507, 221.501, 0.654844, 137.488, 43.5204, 0.888961, 145.474, 43.5194, 0.8808429999999999, 130.516, 41.4767, 0.810869, 149.484, 41.4881, 0.745051, 160.493, 228.536, 0.34957299999999997, 166.494, 228.465, 0.41872699999999996, 156.467, 227.456, 0.461901, 122.475, 229.503, 0.338244, 115.519, 228.515, 0.394034, 124.474, 227.474, 0.45800599999999997], 'face_keypoints_2d': [], 'hand_left_keypoints_2d': [], 'hand_right_keypoints_2d': [], 'pose_keypoints_3d': [], 'face_keypoints_3d': [], 'hand_left_keypoints_3d': [], 'hand_right_keypoints_3d': []}]], 4 dtype=object)
df
1#df.T.loc['people']の出力 20 {'pose_keypoints_2d': [140.49, 47.5103, 0.8667... 3Name: people, dtype: object
どのようにすれば上図表のようにできるのかわかりません。
ご教授のほどよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/10 06:46