###前提・実現したいこと
毎度お世話になります。
時間データを積み上げ棒グラフで表現したいと思っています。
具体的には次の様なことをしようとしています。
- チェックポイントが3つあり、1番をスタートとして、もう一度1番に戻ってきたときに「周回した」としている(図を参照のこと)
- 各行には周回,列にはルート(1地点から2地点を移動した場合は”1-2”)、行列の要素には経過時間(例えば1番めから2番めまでにかかった時間)を記載している
- その周回では通らないルートもある。その場合はNaTが代入されている
用いるデータは次のとおりです。
(途中のプログラムがあまりにも長いので、問題の部分だけを抜き出しました)
// errortime.csv 1-2,1-3,2-1,2-3,3-1,time 00:00:28.266000000,,,00:00:30.064000000,00:00:11.803000000,2017-10-13 09:24:12.304 00:00:44.362000000,,00:00:50.293000000,,,2017-10-13 09:25:22.437 00:10:50.542000000,,,00:11:01.927000000,2017-10-13 09:26:57.092
見づらいので,Print()などで出力すると次のようになります。
// errortime.csv の中身 1-2 1-3 2-1 2-3 \ 0 2017-10-13 00:00:28.266 NaT NaT 2017-10-13 00:00:30.064 1 2017-10-13 00:00:44.362 NaT 2017-10-13 00:00:50.293 NaT 2 2017-10-13 00:10:50.542 NaT NaT 2017-10-13 00:11:01.927 3-1 time 0 2017-10-13 00:00:11.803 2017-10-13 09:24:12.304 1 NaT 2017-10-13 09:25:22.437 2 2017-10-13 09:26:57.092 NaT
このデータを用いて、積み上げ棒グラフを作成したいと思っています。
各周回に合計でXX秒かかって,その内訳として1-2がYY秒,2-3がZZ秒かかってたよ,というような出力がしたいです。
###試したこと・発生している問題・エラーメッセージ
もとのソースコードが長すぎるので、エッセンスを抽出し、同じエラーを再現したコードが次のとおりです。
Python
1import pandas as pd 2 3import matplotlib.pyplot as plt 4 5# 読み込み 6df = pd.read_csv('time.csv') 7 8# 無理やり時間データに変換 9for c in df.columns: 10 df[c] = pd.to_datetime(df[c]) 11 12# 積み上げグラフ 13df.plot.bar(y=df.columns, stacked=True) 14plt.show
こうすると次のエラーがでてきます。
TypeError: Empty 'DataFrame': no numeric data to plot
NaTデータを無視して積み上げ棒グラフを作るにはどのようにしたら良いのでしょうか?
お手数ですがご教示願います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/13 23:22