【发布时间】:2013-03-06 03:06:37
【问题描述】:
我开始学习 Pandas,并试图找到最 Pythonic(或 Panda-thonic?)的方法来完成某些任务。
假设我们有一个包含 A、B 和 C 列的 DataFrame。
- A 列包含布尔值:每一行的 A 值要么为真,要么为假。
- B 列有一些我们想要绘制的重要值。
我们想要发现的是 A 设置为 false 的行的 B 值与 A 设置为 true 的行的 B 值之间的细微差别。
换句话说,如何按 A 列的值(真或假)进行分组,然后在同一张图上绘制两组的 B 列值?这两个数据集应该用不同的颜色来区分这些点。
接下来,让我们为这个程序添加另一个功能:在绘图之前,我们要为每一行计算另一个值并将其存储在 D 列中。这个值是在 A 之前的整个五分钟内存储在 B 中的所有数据的平均值记录 - 但我们只包含存储在 A 中的具有相同布尔值的行。
换句话说,如果我有一行 A=True 和 time=t,我想计算列 D 的值,它是从时间 t-5 到 @987654324 的所有记录的 B 的平均值@ 具有相同的A=True。
在这种情况下,我们如何对 A 的值执行 groupby,然后将此计算应用于每个单独的组,最后绘制两个组的 D 值?
【问题讨论】:
-
你有一些示例数据框吗?看起来你可以做一些事情,比如将 groupby 对象保存在一个变量中:
grouped = df.groupby('A'),然后做一个 for 循环来绘制:for g, d in grouped: plot(d['B'], color=g)。第二个问题或多或少相同,您可以在其中使用 pandasrolling_mean创建新列 D。
标签: python matplotlib group-by pandas data-analysis