首页 > 解决方案 > 绘制熊猫数据框分组列的一列差异图

问题描述

我有一个数据框,一个简化的例子如下:

   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 轴作为值的差异,每个系列都是给定的传感器编号。例如,传感器 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)

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

标签: pythonpython-3.xpandaspandas-groupby

解决方案


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

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

现在您可以按行(即传感器)绘制它。


推荐阅读