绘制pandas集团的结果

我开始学习pandas,并试图find最艰难的(或pandasthonic?)方式来完成某些任务。

假设我们有一个DataFrame,列A,B和C.

  • 列A包含布尔值:每行的A值为true或false。
  • B列有一些我们想要绘制的重要值。

我们想要发现的是,将A设置为false的行的B值之间的细微差别与具有A的行的B值是正确的。

换句话说, 我怎样才能根据列A的值(true或false)进行分组,然后在同一个图上绘制两个组的列B的值? 这两个数据集应该有不同的颜色,以便能够区分这些点。


接下来,让我们给这个程序增加一个特性:在绘图之前,我们要为每一行计算另一个值并将其存储在D列中。这个值是logging之前整个五分钟内存储在B中的所有数据的平均值 – 但我们只包含存储在A中的具有相同布尔值的行

换句话说, 如果我有一行,其中A=Truetime=t ,我想计算D列的值,它是从时间t-5t所有logging的B的均值,它们具有相同的A=True

在这种情况下,我们怎样才能在A的值上执行groupby,然后将这个计算应用到每个单独的组,然后绘制这两个组的D值?

我认为@herrfz达到了所有的高点。 我会详细说明一下:

 import pandas as pd import numpy as np import matplotlib.pyplot as plt sin = np.sin cos = np.cos pi = np.pi N = 100 x = np.linspace(0, pi, N) a = sin(x) b = cos(x) df = pd.DataFrame({ 'A': [True]*N + [False]*N, 'B': np.hstack((a,b)) }) for key, grp in df.groupby(['A']): plt.plot(grp['B'], label=key) grp['D'] = pd.rolling_mean(grp['B'], window=5) plt.plot(grp['D'], label='rolling ({k})'.format(k=key)) plt.legend(loc='best') plt.show() 

在这里输入图像说明