前提・実現したいこと
データベースの中の1列にタプル形式で入っている座標データを散布図でプロットしたいです。
データベースに書き込む際に別々の列に入れておけば簡単にできたのでしょうが、よく考えず1列に入れてしまい実験データを再度取る訳にも行かず困っています。
下の追記に書いている結果のpos
にある1つ目と3つ目の値をxy平面の散布図でプロットしたいです。
文字列などをバラして数値に変換する方法はあったと記憶していますが、DataFrameの全ての行に対してそれを行うということは可能でしょうか。それかデータベースから作り直すしかないのでしょうか?
発生している問題・エラーメッセージ
そのままタプルの入った列をプロットしようとすると当然ですが
ValueError: scatter requires x colums to be numeric.
と怒られてしまいます。
該当のソースコード
Python3
1conn_sql = sqlite3.connect("./database/database.db") 2df = pd.read_sql_query("SELECT * FROM table", conn_sql) 3 4df.plot.scatter() 5plt.show()
以下追記
df = pd.read_sql_query()の次の行にて
print(df.head())
とすると
cnt time pos 0 1 2020-03-22 10:25:55.788045 (0, 0, 0) 1 2 2020-03-22 10:25:56.927810 (1.2, 0.1, 1.1) 2 3 2020-03-22 10:25:57.962841 (2.3, 0.3, 0.9) 3 4 2020-03-22 10:25:59.071519 (2.9, 0.2, 1.3) 4 5 2020-03-22 10:26:00.103833 (4.2, 0.3, 1.4)
print(type(df.iat[0,0]))
とすると
<class 'numpy.int64'>
print(type(df.at[0,'pos']))
とすると
<class 'str'>
がそれぞれ返ってきました。
回答1件
あなたの回答
tips
プレビュー