我是新来的。任何帮助都将不胜感激
这是我的原始数据:
Feed Close Sector Market_Cap
Date
2015-09-18 A 5.60 Property 50
2015-09-21 A 5.60 Property 20
2015-09-23 A 5.60 Property 30
2015-09-18 ABC 0.67 Property 50
2015-09-21 ABC 0.66 Property 80
2015-09-18 DA 0.67 Mining 65
2015-09-21 KK 1.66 Mining 80
我想得到的是:
1创建一个新的列调用平均值,以计算每个提要的平均市值。
2求加权平均数。
This is what I want:
Feed Close Sector Market_Cap Mean Sector_WeightedAvg
Date
2015-09-18 A 5.60 Property 50 33.33 33.33/(33.33+65)
2015-09-21 A 5.60 Property 20 33.33 33.33/(33.33+65)
2015-09-23 A 5.60 Property 30 33.33 33.33/(33.33+65)
2015-09-18 ABC 0.67 Property 50 65 65/(33.33+65)
2015-09-21 ABC 0.66 Property 80 65 65/(33.33+65)
2015-09-18 DA 0.67 Mining 65 62 62/(62+80)
2015-09-21 KK 1.66 Mining 80 80 80/(62+80)
这是我当前的代码,我得到NaN:
df3= pd.DataFrame(df3)
df3['Mean'] = df3.groupby(by=['Sector'])[ Market_Cap].mean()
Feed Close Sector Market_Cap Mean
Date
2015-09-18 A 5.60 Property 50 NaN
2015-09-21 A 5.60 Property 20 NaN
2015-09-23 A 5.60 Property 30 NaN
2015-09-18 ABC 0.67 Property 50 NaN
对于加权平均代码:
df2['WeightedAverage'] =df3[ Market_Cap].value /df3['Mean'].value
我得到了一个错误:
AttributeError:“Series”对象没有属性“value”
尝试变换('和')的组合,均值
In [5]: df
Out[5]:
Close Feed Market_Cap Sector
0 5.60 A 50 Property
1 5.60 A 20 Property
2 5.60 A 30 Property
3 0.67 ABC 50 Property
4 0.66 ABC 80 Property
5 0.67 DA 65 Mining
6 1.66 KK 80 Mining
In [6]: g = df.groupby(['Sector', 'Feed'])
...
In [7]: c = g.Market_Cap.mean()
In [8]: c
Out[8]:
Sector Feed
Mining DA 65.000000
KK 80.000000
Property A 33.333333
ABC 65.000000
Name: Market_Cap, dtype: float64
In [9]: d = c.groupby(level=0).transform('sum')
In [10]: d
Out[10]:
Sector Feed
Mining DA 145.000000
KK 145.000000
Property A 98.333333
ABC 98.333333
dtype: float64
...
In [11]: df['Mean'] = df.apply(lambda x: c[x.Sector, x.Feed], axis=1)
In [12]: df['Weighted_Avg'] = df.apply(lambda x: c[x.Sector, x.Feed] / d[x.Sector, x.Feed], axis=1)
In [13]: df
Out[13]:
Close Feed Market_Cap Sector Mean Weighted_Avg
0 5.60 A 50 Property 33.333333 0.338983
1 5.60 A 20 Property 33.333333 0.338983
2 5.60 A 30 Property 33.333333 0.338983
3 0.67 ABC 50 Property 65.000000 0.661017
4 0.66 ABC 80 Property 65.000000 0.661017
5 0.67 DA 65 Mining 65.000000 0.448276
6 1.66 KK 80 Mining 80.000000 0.551724
IIUC可以使用变换
和均值
。
加权平均值
为列平均值
除以列平均值
的唯一值之和,df3
按列扇区
分组。
print df3
Feed Close Sector Market_Cap
Date
2015-09-18 A 5.60 Property 50
2015-09-21 A 5.60 Property 20
2015-09-23 A 5.60 Property 30
2015-09-18 ABC 0.67 Property 50
2015-09-21 ABC 0.66 Property 80
2015-09-18 DA 0.67 Mining 65
2015-09-21 KK 1.66 Mining 80
df3['Mean'] = df3.groupby(by=['Feed'])['Market_Cap'].transform('mean')
df3['WeightedAverage'] = df3['Mean'] / df3.groupby(by=['Sector'])[ 'Mean'].transform(lambda x: sum(x.unique()))
print df3
Feed Close Sector Market_Cap Mean WeightedAverage
Date
2015-09-18 A 5.60 Property 50 33.333333 0.338983
2015-09-21 A 5.60 Property 20 33.333333 0.338983
2015-09-23 A 5.60 Property 30 33.333333 0.338983
2015-09-18 ABC 0.67 Property 50 65.000000 0.661017
2015-09-21 ABC 0.66 Property 80 65.000000 0.661017
2015-09-18 DA 0.67 Mining 65 65.000000 0.448276
2015-09-21 KK 1.66 Mining 80 80.000000 0.551724
问题内容: 我无法获得熊猫列的平均值或均值。有一个数据框。我在下面尝试的任何事情都没有给我该列的平均值 以下返回几个值,而不是一个: 这样: 问题答案: 如果您只想要列的均值,请选择列(这是一个系列),然后调用:
我不能得到熊猫的平均值或平均值。有一个数据框。下面我尝试的东西都没有给我列的平均值 以下内容返回多个值,而不是一个值: 这也是:
问题内容: 我有下表。我想根据以下公式计算按每个日期分组的加权平均值。我可以使用一些标准的常规代码来执行此操作,但是假设此数据在pandas数据框中,是否有比通过迭代更简单的方法来实现此目的? 2012年1月1日w_avg = 0.5 (60 / sum(60,80,100))+ .75 (80 / sum(60,80,100))+ 1.0 *(100 / sum(60,80,100)) 2012
问题内容: 我有一个数据框 我需要的是Adjusted_lots,price和ajusted_lots的加权平均价格之和,并按所有其他列进行分组,即。按(合同,月,年和购买)分组 R的类似解决方案是使用dplyr通过以下代码实现的,但是在熊猫中却无法做到这一点。 groupby或任何其他解决方案是否可能相同? 问题答案: 编辑: 更新聚合,以便它与熊猫的最新版本一起使用 要将多个函数传递给grou
问题内容: 我有一个这样的数据框: 如下所示,数据集不一定每天都有观察值: 我想添加一个新列,该列显示至少n天中每个用户过去n天(在这种情况下,n = 2)的平均值,否则它将有价值。例如,在John上得到一个,因为他没有和的数据。因此结果将是这样的: 在阅读了论坛中的几篇文章之后,我似乎应该结合使用和自定义,但是我还不太清楚该怎么做。 问题答案: 我认为您可以使用第一个convert列 ,然后通过
问题内容: 我正在写一个使用numpy中的卷积函数的移动平均函数,它应该等效于(加权移动平均)。当我的权重全部相等时(如简单的算术平均值),它可以正常工作: 给 但是,当我尝试使用加权平均值时 而不是(对于相同的数据)3.667,4.667,5.667,6.667,…我希望,我得到 如果删除“有效”标志,则什至看不到正确的值。我真的很想对WMA和MA使用convolve,因为它可以使代码更整洁(相