熊猫:用标记绘制数据框架对象?

时间:2017-06-04 14:12:03

标签: python pandas matplotlib

这是我的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

但不知道该怎么做......

需要你的帮助。感谢。

2 个答案:

答案 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)

enter image description here

答案 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())

结果:

enter image description here

替代解决方案:

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')

结果:

enter image description here