証券を表す多くの列を持つデータフレームと、00:00〜23:55(各行は5分間隔です)の時刻を持つインデックスがあり、各セルセキュリティをプロットしてからPythonで取引される時間
しかし、私が持っているすべてのバイナリ値なので、私は混乱して取得しています:私は、私がここに描かれているようなものと同様のデータを可視化することができます箱ひげ図のいくつかのフォームをプロットしたいのですが1または0のいずれかを持っています時間に対してプロットするときには使用できません。私はpandasとmatplotlibの使用に制限されています。
1
A
答えて
1
最初のデータセットは異なりますが、上記でコメントしたリンクを使用する方法もあります。手順は、各列に割り当てられた数値で構成され、以下のように、NaNにすることによってゼロに変更:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("testdata.txt",parse_dates=0,index_col=0)
df = df.applymap(lambda x:x if x else pd.np.nan)
for n, col in enumerate(df.columns): df[col] = df[col]*n
df.plot(lw=10,legend=False)
plt.yticks(pd.np.arange(len(df.columns)), df.columns)
plt.tight_layout()
plt.show()
結果データフレームがある:
A B C D E
time
2016-05-05 00:00:00 0 NaN NaN NaN 4
2016-05-05 00:05:00 0 NaN NaN 3.0 4
2016-05-05 00:10:00 0 NaN NaN 3.0 4
2016-05-05 00:15:00 0 NaN NaN 3.0 4
プロット:
は
0
あなたが使用できるものは、matplotlibの破損した棒グラフです。ドキュメントはhereです。
私がテストした簡単なバージョンは次のとおりです。 残念ながら、残念ながら、私は操作を資本でベクトル化する方法を見つけられませんでした。
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame()
df['qqq'] = [1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,0,0,0]
df['dia'] = [0,0,1,1,0,1,0,1,1,1,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1]
ones = []
for col in df.columns:
one = df[df[col].diff() != 0][:][col]
one = one[one == 1]
ones.append(one)
hranges = []
for col in df.columns:
diff = df[df[col].diff() != 0]
spread = pd.DataFrame(diff[col].index, columns=[col])
spread = spread.set_value(len(spread), col, len(df[col].index))
spread = spread.diff(periods=-1).fillna(spread[pd.isnull(spread.diff()) == True])*-1
spread = spread.drop(spread.index[-1])
re_index = pd.DataFrame(df[df[col].diff() != 0][:][col].tolist())
re_index = re_index[re_index[0] == 0]
hranges.append(spread.drop(re_index[re_index[0] == 0].index))
hranges[j].columns = ['width']
hranges[j]['hval'] = ones[j].index.tolist()
cols = hranges[j].columns
cols = cols[-1:] | cols [:-1]
hranges[j] = hranges[j][cols]
j += 1
vals = []
for j in range(len(hranges)):
val = [(hranges[j].hval[i], hranges[j].width[i]) for i in hranges[j].index]
vals.append(val)
fig, ax = plt.subplots()
j = 0
for col in df.columns:
ax.broken_barh(vals[j], ((j+1)*10,10))
j += 1
ax.set_yticks([((k+1) * 10) + 5 for k in range(j)])
ax.set_yticklabels(df.columns)
plt.show()
結果は次のようになります。
明らかにあなたの例は、x軸の時間値を持っているでしょうが、私はあなたがそれを把握できたと想像します。
関連する問題
- 1. MatplotlibでPythonをプロットする時間
- 2. 現在の時間から送信された時間を引いた
- 3. python datetime - HH:MM-HH:MMとしてフォーマットされたcsvからの時間間隔/範囲を読み取る
- 4. Python:datetimeから時間を差し引く
- 5. 時間枠を列としてデータフレームから時系列データをプロットする
- 6. 指定された日付/時刻から指定された時間数を差し引いて新しい日付/時刻を取得する
- 7. Pythonの目覚まし時計で時間を差し引く
- 8. プロットの開始時間タイムスロット - matplotlib python
- 9. Plotly Pythonで時間スライダで連続ヒストグラムをプロットする
- 10. ベースマップを使用してPythonで税引きをプロットする
- 11. 外出時間から開始時間を差し引いた時間をCで計算するには
- 12. phpの時間から2時間を引く
- 13. Pythonでping時間を取得する
- 14. 与えられた時間から1秒を引く
- 15. 与えられた時間から分を引く方法は?
- 16. 時間をプロットする方法は、Pythonを使用して値のグラフ
- 17. パンダで時間をプロットして列を集約する
- 18. pythonが時間を引いてループを実行する
- 19. Pythonでソートされたプロット
- 20. 推定時間から使用時間を差し引いた結果が間違っている - postgresql
- 21. R時間間隔プロット
- 22. ファイルがフォルダ(Python)にコピーされる時間の取得
- 23. プロット処理時間
- 24. コメントが投稿されてからの時間を取得する[Praw]
- 25. パイソン - UTC時間Pythonで序数時間から
- 26. 設定時間から現在の時間を差し引く方法
- 27. Pythonで時系列をプロットする?
- 28. 単位時間間隔でforループから配列を保存してプロットするには?
- 29. pythonはプロットして、日付の間隔を持たない時系列をプロットします
- 30. python - タイムゾーンを変換して時間を取得する
データフレームの外観の小さな例を投稿できますか?私はあなたの言うことを得たと思うが、確かにそうだ。 – Grr
例の画像は次のとおりです。https://drive.google.com/file/d/0B4RoYkI5yaxbLU5XdzNwaXBCTWs/view?usp=sharing – dgouder
こんにちは@dgouderです。私はあなたの質問はこれと非常に似ていると信じていますhttp://stackoverflow.com/questions/36880103/creating-horizontal-bar-plot-with-time-series-data-in-python/36992409#36992409。どうぞ、サンプルデータセットを提供できますか? –