如何计算批次数据帧的平均值?

2024-10-01 13:28:57 发布

您现在位置:Python中文网/ 问答频道 /正文

如何计算由csv文件的BatchSize创建的数据帧的平均值

Input:
A,1
B,2
B,1
C,2
A,1
B,3
B,1
C,1
A,1
B,2
B,1
C,3  

我想将它们按4行(A、B、B、C)分组,并计算第2列的平均值

output:
A, average(1,1,1)
B, average(2,3,2)
B, average(1,1,1)
C, average(1,2,3)

Tags: 文件csv数据inputoutput平均值averagebatchsize
3条回答

假设列的名称为label, value,因为要对固定数量的行进行平均,所以可以进行重塑:

nrows=4

pd.DataFrame({'label': df['label'].iloc[:nrows],
              'value':df['value'].values.reshape(-1,nrows).mean(axis=0)
})

输出:

  label     value
0     A  1.000000
1     B  2.333333
2     B  1.000000
3     C  2.000000

首先为每个单独的批创建一个cumcount级别,这样您就可以将第一个“B”与第二个“B”分开(假设每个新组都以“a”开头)。然后对字母和新创建的组标签进行分组

假设您的列标记为01

import pandas as pd
df = pd.read_clipboard(sep=',', header=None)

df['gp'] = df.groupby([df[0].eq('A').cumsum(), 0]).cumcount()
df.groupby([0, 'gp'])[1].mean()

0  gp
A  0     1.000000
B  0     2.333333
   1     1.000000
C  0     2.000000
Name: 1, dtype: float64

你可以groupby像这样计算它们,然后计算平均值

df.groupby([df.index%4, df[0]], as_index=False).mean().rename(columns={0:'labels', 1:'mean'})

    labels  mean
0   A       1.000000
1   B       2.333333
2   B       1.000000
3   C       2.000000

相关问题 更多 >