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。你只需要按“循环”进行分组。我更新了我的答案。过来看。