基于某一列的熊猫情节多行

时间:2017-03-30 07:35:37

标签: python pandas plot

我有一个像这样的数据框

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行组合在同一图表上

2 个答案:

答案 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 plotMultiple data set plotting with matplotlib.pyplot.plot_date,以及this tutorial

为了选择要绘制的数据,我建议选择"按标签选择"在pandas docs。我想你可以在一些临时变量x1 - xny1 - 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]
...
希望有所帮助。