处理 Pandas 中的重复数据

The*_*man 2 python pandas

我正在尝试绘制一些数据随时间变化的散点图,并将标准偏差作为误差线。我对两个不同样品 A 和 B 的每个时间点进行三次测量。

Date A1 A2 A3 B1 B2 B3
1/1/17 4 5 6 2 3 4
1/2/17 6 7 8 5 6 4
Run Code Online (Sandbox Code Playgroud)

所以我正在导入这样的数据:

import pandas as pd
columns = ['Date', 'A1', 'A2', 'A3', 'B1', 'B2', 'B3']
dat = pd.read_csv('data', sep='\t', names=columns)
Run Code Online (Sandbox Code Playgroud)

那么我如何组合重复列以便我可以计算标准偏差然后绘图?我正在考虑重命名 A 和 B 列,使它们相同,然后可以合并?

piR*_*red 5

我不得不承认,我并没有真正得到你想要的,但我认为这很酷。

  • 转置是因为我想运行groupby/agg但它尚未在列上实现
  • 按列名的第一个字符分组,然后查找meanstd
  • 用它来绘制带有误差线的东西。

d = df.T.groupby(lambda x: x[0]).agg(['mean', 'std']).T
d.xs('mean', level=1).plot.bar(yerr=d.xs('std', level=1))
Run Code Online (Sandbox Code Playgroud)

或路径略有不同的相同想法

d = df.T.groupby(lambda x: x[0]).agg(['mean', 'std']).stack(0).unstack(0)
d['mean'].plot.bar(yerr=d['std'])
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


否则,我们可以做一个减少

df.groupby(lambda x: x[0], 1).mean()

        A  B
Date        
1/1/17  5  3
1/2/17  7  5
Run Code Online (Sandbox Code Playgroud)