我有一个像这样的数据框
timestamp|type|value_1|value_2
t1|A|v1|v2
t2|B|v3|v4
t3|C|v5|v6
t4|A|v7|v8
我想绘制一个图表,每种类型和值有6行 例如
type A - value_1
type A - value_2
type B - value_1
type B - value_2
type C - value_1
type C - value_2
感谢,
就像这样做
A = df[df["type"] == A]
A.plot(x="time", y=["value_1", "value_2"])
为三种类型执行此操作 并将这6行组合在同一图表上
答案 0 :(得分:2)
我认为您可以将DataFrame
重新设置为列,然后plot
:
df['g'] = df.groupby('type').cumcount()
df = df.set_index(['timestamp','g', 'type']).unstack().reset_index(level=1, drop=True)
df.columns = df.columns.map('_'.join)
df.plot()
答案 1 :(得分:1)
就绘图而言,我建议您查看: MatPlotLib: Multiple datasets on the same scatter plot和Multiple data set plotting with matplotlib.pyplot.plot_date,以及this tutorial。
为了选择要绘制的数据,我建议选择"按标签选择"在pandas docs。我想你可以在一些临时变量x1 - xn
和y1 - yn
中存储相应列/行的值,然后只绘制所有对,看起来像:
xs = sheet.loc[<appropriate labels>]
ys = sheet.loc[<appropriate labels>]
for i in range(len(xs)):
plt.plot(xs[i],ys[i],<further arguments>)
plt.show()
在您的情况下,只需访问&#39;值&#39;标签可能不够,因为只有该列的每个第n个元素接缝都属于任何给定类型。在this question中,您可以看到如何获得仅包含适当值的新列表。基本上是这样的:
allXs = sheet.loc['v1']
xsTypeA = allXs[1::4]
...
希望有所帮助。