Python 为数据框的分组列绘制一列中的差异图

Python 为数据框的分组列绘制一列中的差异图,python,python-3.x,pandas,pandas-groupby,Python,Python 3.x,Pandas,Pandas Groupby,我有一个数据帧,下面是一个简化的示例: cycle sensor value 0 0 1 0.34 1 0 1 0.80 2 0 2 0.12 3 0 2 0.62 4 1 1 0.01 5 1 1 0.75 6 1 2 0.06 7 1 2 0.02 我想为每个传感器绘制“值”

我有一个数据帧,下面是一个简化的示例:

   cycle  sensor  value
0      0       1   0.34
1      0       1   0.80
2      0       2   0.12
3      0       2   0.62
4      1       1   0.01
5      1       1   0.75
6      1       2   0.06
7      1       2   0.02
我想为每个传感器绘制“值”列的差异,对于每个循环:以x轴作为循环编号,y轴作为值的差异,每个系列将是一个给定的传感器编号。e、 g.传感器1的线路在循环0和1期间为0.46和0.74

实际上,我有更多的列(这部分代码没有使用),有144个周期和37个周期。每个传感器每个周期有几千个值

这是我写的代码,我没有得到一个错误:一个数字被创建,但没有数据显示

groups = unstacked_data.groupby(["cycle", "pressure"])

fig,ax = plt.subplots()
ax.set_xlabel("Cycle Number")
ax.set_ylabel("Change in Normalised Pressure")


for cycle, group in groups:
        ax.plot(cycle[0],group.value.max()-group.value.min(), label=group.pressure)

我不确定我做错了什么,任何建议都将不胜感激!:)

好吧,我想我现在明白了。结果应该是这样吗

diff = df.groupby(["sensor","cycle"]).apply(lambda x:x.value.max()-x.value.min()).unstack()

#Output: each value in the table is max-min. Columns are cycles and rows are sensors
    cycle   0         1
sensor      
1          0.46     0.74
2          0.50     0.04

现在你可以按行绘制,也就是按传感器绘制。

谢谢,这确实可以将其绘制为散点,但我希望每个压力值都是一个系列,所以我得到一条连接这些值的线。对于我的例子,我有两条线,跨越两个周期。事实上,我希望37个周期中有144行代码。我通过添加标记大小,成功地“修复”了上面的代码,但仍然无法获得生成该系列的代码行。在上面的示例中,ax.plot(压力循环[1],group.value.max()-group.value.min(),marker='o',linestyle='solid',markersize=0.5)压力是列值吗?在您的示例中,每组循环/值由一个元素组成,您不能用一个点绘制图对不起,我不明白。实际上,我有37个周期和144个传感器。每个传感器每个周期都有多个读数。我想绘制每个循环中每个传感器值的变化。所以我有144条线,每一条都有37个标记点。这有意义吗?上面只是数据帧结构的一个小例子。我认为这里的问题是你的groupby。你只需要按“循环”进行分组。我更新了我的答案。过来看。