質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

403閲覧

jsonファイルからCSVに変換で数値変わる

ryosuke0313

総合スコア65

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/10/31 08:04

前提

openposeを用いて姿勢の解析を行いたいです。

実現したいこと

複数のjsonファイルとして出力されたデータをcsvとして整形し、解析したいです。

発生している問題・エラーメッセージ

jsonファイルをcsvに整形しましたが、出てきたデータが元のデータと異なってしまいます。
入力データ(json)

{"version":1.3,"people":[{"person_id":[-1],"pose_keypoints_2d": [836.528,168.3,0.865673,951.166,297.829,0.566603,948.242,291.914,0.383159,0,0,0,0,0,0,951.065,312.454,0.69664,892.281,503.865,0.594381,756.93,544.949,0.772764,859.886,609.788,0.403394,868.779,603.891,0.222291,568.566,642.14,0.341735,524.395,862.892,0.310055,851.084,621.45,0.514501,553.875,645.11,0.735772,415.543,904.025,0.609347,0,0,0,859.907,147.616,0.904402,0,0,0,933.518,153.547,0.911579,283.073,907.051,0.678671,297.735,921.679,0.591311,436.139,930.646,0.501952,0,0,0,0,0,0,539.095,883.436,0.336265], "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":[]}]}

出力されたcsvデータ

イメージ説明

出てきてほしいデータ

上記写真の二行目に正しい値 836.528,168.3,0.865673,951.166,297.829,0.566603,948.242,291.914,0.383159...

jsonコードの数値をそのまま3*25のcsv構造にしたものを得たいです。

jsonデータが1,2,3,4,5,6,...となっているものを

1,2,3,4,5,6,...

とcsvに変換したいのですが、
出てきた数値が

不規則に異なる値が出ています。

該当のソースコード

python

1import json 2import pandas as pd 3import numpy as np 4import glob 5import sys 6def main(): 7 fP = 0.0 #確度のデフォルト値 8 #起動引数の処理 9 10 11 #フォルダ内のjsonファイルの一覧を作る 12 json_list = glob.glob( r"path"+ "/*.json") 13 ilenlist = len(json_list) 14 #各点の名前を指定 15 cols =['Nose_x','Nose_y','P0','Neck_x','Neck_y','P1','RShoulder_x','RShoulder_y', 16 'P2','RElbow_x','RElbow_y','P3','RWrist_x','RWrist_y','P4','LShoulder_x', 17 'LShoulder_y','P5','LElbow_x','LElbow_y','P6','LWrist_x','LWrist_y','P7', 18 'MidHip_x','MidHip_y','P8','RHip_x','RHip_y','P9','RKnee_x','RKnee_y', 19 'P10','RAnkle_x','RAnkle_y','P11','LHip_x','LHip_y','P12','LKnee_x', 20 'LKnee_y','P13','LAnkle_x','LAnkle_y','P14','REye_x','REye_y','REye_p', 21 'LEye_x','LEye_y','LEye_p','REar_x','REar_y','REar_p','LEar_x','LEar_y','LEar_p', 22 'LBigToe_x','LBigToe_y','LBigToe_p','LSmallToe_x','LSmallToe_y','LSmallToe_p','LHeel_x', 23 'LHeel_y','LHeel_p','RBigToe_x','RBigToe_y','RBigToe_p','RSmallToe_x','RSmallToe_y','RSmallToe_p', 24 'RHeel_x','RHeel_y','RHeel_p'] 25 dfsum = pd.DataFrame(index=[],columns=cols) 26 #jsonファイルを読み込んで結合する 27 for i,file in enumerate(json_list): 28 with open(file) as f: 29 data = json.load(f) 30 data = np.array(data['people'][0]['pose_keypoints_2d']).reshape(-1,75) 31 # 3成分(X,Y,P)×25マーカ 32 df = pd.DataFrame(data,columns=cols) 33 34 #「確度」の値によって、XYの値をNULLにする 35 for num in range(2, 75, 3): 36 if df.iat[0,num]<fP: 37 df.iat[0,num-1]=np.nan 38 df.iat[0,num-2]=np.nan 39 #結合 40 dfsum = dfsum.append(df, ignore_index=True) 41 #進捗バー 42 dPercent = (i+1)/ilenlist*100 43 print("\r{0}% [{1}]".format(int(dPercent), "#" * int(dPercent)), end="") 44 #出力する 45 dfsum.to_csv( r"openposecsv"+ '/pose3000-6000.csv') 46if __name__ == '__main__': 47 main()

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

json_list.sort()で解決しました。

投稿2022/11/02 08:01

ryosuke0313

総合スコア65

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問