如何在python中使用分组变量计算数组的平均值?

2024-09-30 02:32:31 发布

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

我想用python计算数组的平均值,使用不同的分组变量。例如,我想计算column1中所有值的平均值,其中column2 == 2column3 == a + 3。你知道吗

我尝试了for循环&if循环,但是它看起来非常复杂,而且对于我的数据维度来说太混乱了。有没有其他方法可以将特定条件下的数据分组,并分别计算每个条件组合的平均值?你知道吗

我在R中寻找group_by()summarise()aggregate()这样的函数,只用于python。你知道吗

这是我迄今为止尝试的循环:

    for j in range(0,len(e_data)): #iterate for each row in e_data
      if e_data[j,6] == 0.0082:
        if e_data[j,1] == ped1:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped1+0.0082)) & (e_data[:,5] == i))])
        elif e_data[j,1] == ped2:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped2+0.0082)) & (e_data[:,5] == i))])
        elif e_data[j,1] == ped3:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped3+0.0082)) & (e_data[:,5] == i))]))
      if e_data[j,6] == 0.001:
        if e_data[j,1] == ped1:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped1+0.001)) & (e_data[:,5] == i))])
        elif e_data[j,1] == ped2:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped2+0.001)) & (e_data[:,5] == i))])
        elif e_data[j,1] == ped3:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped3+0.001)) & (e_data[:,5] == i))])
      if e_data[j,6] == 0.0235:
        if e_data[j,1] == ped1:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped1+0.0235)) & (e_data[:,5] == i))])
        elif e_data[j,1] == ped2:
          e_data[j,7] = mean(e_data[:,4][np.where((e_data[:,0] == (ped2+0.0235)) & (e_data[:,5] == i))])

Tags: 数据infordataifnp数组mean
1条回答
网友
1楼 · 发布于 2024-09-30 02:32:31

我建议您签出Pandas,这正是您需要的。你知道吗

在python世界中,Pandas是您所描述的数据分析任务的最终解决方案。你知道吗

将数据(最好是.csv格式)导入熊猫后:

import pandas as pd

df = pd.read_csv('filepath_to_your_data')

## I want to calculate the mean of all values in column1, for which column2 == 2 and column3 == a + 3
df[(df.column2==2) & (df.column3 == a+3)].loc[:, 'column1'].mean()

熊猫还提供groupbydescribeagg

相关问题 更多 >

    热门问题