2024-06-28 15:48:41 发布
网友
下图显示了我用Python打印的几行列表。我想得到:一份自治区唯一值列表,一份相应的年份唯一值列表,以及一份“平均值”加权平均值列表,其中“NOB”作为权重,但针对每个自治区和每年(变量“类型”表示在一个自治区的特定年份中是否只有一种、两种或三种类型)
我知道如何使用整个列表获得加权平均值:
weighted_avg = np.average(average, weights=nobs)
但我不知道如何计算每一个独特的行政区年的一个
我是Python新手,如果你知道怎么做,请帮助我
假设“type”列不影响您的计算,您可以使用groupby获得平均值。以下是数据:
groupby
df = pd.DataFrame({'borough': ['b1', 'b2']*6, 'year': [2008, 2009, 2010, 2011]*3, 'average': np.random.randint(low=100, high=200, size=12), 'nobs': np.random.randint(low=1, high=40, size=12)}) print(df): borough year average nobs 0 b1 2008 166 1 1 b2 2009 177 35 2 b1 2010 114 27 3 b2 2011 187 18 4 b1 2008 193 2 5 b2 2009 105 27 6 b1 2010 114 36 7 b2 2011 144 3 8 b1 2008 114 39 9 b2 2009 157 6 10 b1 2010 133 17 11 b2 2011 176 12
我们添加了一个新列,它是average和nobs列的乘积:
df['average x nobs'] = df['average']*df['nobs'] newdf = pd.DataFrame({'weighted average': df.groupby(['borough', 'year']).sum()['average x nobs']/df.groupby(['borough', 'year']).sum()['nobs']}) print(newdf): weighted average borough year b1 2008 119.000000 2010 118.037500 b2 2009 146.647059 2011 179.090909
假设“type”列不影响您的计算,您可以使用
groupby
获得平均值。以下是数据:我们添加了一个新列,它是average和nobs列的乘积:
相关问题 更多 >
编程相关推荐