这是我的pandas
数据框。
value action
0 1 0
1 2 1
2 3 1
3 4 1
4 3 0
5 2 1
6 5 0
我要做的是将value
标记为o
action=0
,将x
标记为action=1
。
所以,情节标记应该是这样的:
o x x x o x o
但不知道该怎么做......
需要你的帮助。感谢。
答案 0 :(得分:1)
您可以绘制已过滤的数据框。即,您可以创建两个数据帧,一个用于操作0,另一个用于操作1.然后单独绘制每个数据帧。
import pandas as pd
df = pd.DataFrame({"value":[1,2,3,4,3,2,5], "action":[0,1,1,1,0,1,0]})
df0 = df[df["action"] == 0]
df1 = df[df["action"] == 1]
ax = df.reset_index().plot(x = "index", y="value", legend=False, color="gray", zorder=0)
df0.reset_index().plot(x = "index", y="value",kind="scatter", marker="o", ax=ax)
df1.reset_index().plot(x = "index", y="value",kind="scatter", marker="x", ax=ax)
答案 1 :(得分:1)
考虑以下方法:
plt.plot(df.index, df.value, '-X', markevery=df.index[df.action==1].tolist())
plt.plot(df.index, df.value, '-o', markevery=df.index[df.action==0].tolist())
结果:
替代解决方案:
plt.plot(df.index, df.value, '-')
plt.scatter(df.index[df.action==0], df.loc[df.action==0, 'value'],
marker='o', s=100, c='green')
plt.scatter(df.index[df.action==1], df.loc[df.action==1, 'value'],
marker='x', s=100, c='red')
结果: