Python 如何用等指数提取均值和波动?
我有一个如下所示的CSV文件(按iy对数据帧进行排序后): 我试图计算iy相等时的平均值和波动。例如,对于上面的CSV,我想要的是如下内容:Python 如何用等指数提取均值和波动?,python,pandas,Python,Pandas,我有一个如下所示的CSV文件(按iy对数据帧进行排序后): 我试图计算iy相等时的平均值和波动。例如,对于上面的CSV,我想要的是如下内容: iy,u,U,u' 1,80,70,10 1,90,70,20 1,70,70,0 1,50,70,-20 1,60,70,-10 2,20,25,-5 2,30,25,5 2,35,25,10 2,15,25,-10 2,25,25,0 式中,当iy相等时,U是U的平均值,而U'只是U-U,波动。我知道pandas中有一个名为groupby.mean(
iy,u,U,u'
1,80,70,10
1,90,70,20
1,70,70,0
1,50,70,-20
1,60,70,-10
2,20,25,-5
2,30,25,5
2,35,25,10
2,15,25,-10
2,25,25,0
式中,当iy相等时,U是U的平均值,而U'只是U-U,波动。我知道pandas中有一个名为groupby.mean()的函数,但我不想对数据帧进行分组,只需取平均值,将值放入新列中,然后计算波动
如何继续?使用
groupby
和transform
计算每组的平均值,并将该值分配给新列“U”,然后减去两列:
df['U'] = df.groupby('iy').transform('mean')
df["u'"] = df['u'] - df['U']
df
输出:
iy u U u'
0 1 80 70 10
1 1 90 70 20
2 1 70 70 0
3 1 50 70 -20
4 1 60 70 -10
5 2 20 25 -5
6 2 30 25 5
7 2 35 25 10
8 2 15 25 -10
9 2 25 25 0
你可以用一句话来想象:
df.assign(U=df.groupby('iy').transform('mean')).eval("u_prime = u-U")
您可以将数据传输到
Numpy
数组中,并使用Numpy.where()
按不同的iy值切割表格,使用Numpy.mean()
计算平均值。
df.assign(U=df.groupby('iy').transform('mean')).eval("u_prime = u-U")