Pandas modeのバグ?
複数のjsonファイルをそれぞれdataframeに変換してから、必要な情報を抽出して処理を行うプログラムを書いています。
発生している問題
データサイズの大きいdataframeに対してmode()を使って最瀕値を求めているのですが時々、空のseriesや間違った値が帰ってきてしまいます。
該当のソースコード
python
1#all_filesはglobで呼び出したファイルのパス 2#データ数はjsonファイルが6000個 3#jsonファイルは1つあたりindexが10000~13000 4#jsonファイルすべてのデータサイズの合計が10Gほどあるのでかなり大きいです 5for n,file in enumerate(all_files): 6 with open(file) as f: 7 if n == 0: 8 frame_index.append(n) 9 print(n) 10 try: 11 json_data = pd.json_normalize(json.loads(f.read())['data']) 12 13 json_data = json_data[json_data['motion_x'] != 0] 14 json_data = json_data[json_data['motion_y'] != 0] 15 16 x_vec = x_vec + (json_data['motion_x'].mode().iloc[-1]) 17 y_vec = y_vec + (json_data['motion_y'].mode().iloc[-1])
json
1#jsonファイルの一部です。 2{ 3 "index":50, 4 "source":-1, 5 "w":16, 6 "h":16, 7 "src_x":566, 8 "src_y":8, 9 "dst_x":568, 10 "dst_y":8, 11 "flags":0, 12 "motion_x":-11, 13 "motion_y":0, 14 "motion_scale":4 15 }, 16 { 17 "index":51, 18 "source":-1, 19 "w":16, 20 "h":16, 21 "src_x":582, 22 "src_y":8, 23 "dst_x":584, 24 "dst_y":8, 25 "flags":0, 26 "motion_x":-11, 27 "motion_y":0, 28 "motion_scale":4 29 },
試したこと
空のseriesや間違った値が帰ってきたファイルを別のプログラムファイルでもう一度modeで最瀕値を取り出したら、
正常な値が帰ってきました
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー