首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫按5种价格累计价格,计算价格相对于体积数据和组的权重/权重

熊猫按5种价格累计价格,计算价格相对于体积数据和组的权重/权重
EN

Stack Overflow用户
提问于 2020-11-20 00:03:48
回答 1查看 232关注 0票数 0

我有这样的数据:

代码语言:javascript
复制
       price   volume
0     100.0     2500
1     100.5     4100
2     101.0     2311
3     101.5     5066
4     102.0     9585
...    ...       ...

我想先得到一组价格,然后用一步5来和成交量。例如(使用随机值):

代码语言:javascript
复制
       price   volume
0     100.0     15000
1     105.0     12000
2     110.0     19000
3     115.0     30000
4     120.0     21000
...    ...       ...

最后,根据个别的成交量和价格,我想给每个价格一个权重/加权平均值/分数,这样我就可以标准化数据,以知道哪个成交量的权重最大。例如:

代码语言:javascript
复制
       price   volume     weight   
0     100.0     15000        3  
1     105.0     12000       2.5
2     110.0     19000       3.5
3     115.0     30000       5
4     120.0     21000       4
...    ...       ...

有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-20 01:39:43

我用标准的方法来绕过价格,所以97.5到102.49将在100组。体重--我用了简单的公式作为证据。

data.csv:

代码语言:javascript
复制
price   volume
100.0     2500
103.5     4100
101.0     2311
105.5     5066
109.0     9585

代码:

代码语言:javascript
复制
import pandas as pd
import numpy as np

df = pd.read_csv('data.csv', delimiter='\s+')
print(df)
df['price_grp'] = np.around(df.price.values/5, decimals=0)*5
df['tot_vol'] = df.groupby('price_grp')['volume'].transform('sum')
df['weight'] = np.around(df['volume'] / df['tot_vol'], decimals=2)
print(df)

输出:

代码语言:javascript
复制
   price  volume
0  100.0    2500
1  103.5    4100
2  101.0    2311
3  105.5    5066
4  109.0    9585
   price  volume  price_grp  tot_vol  weight
0  100.0    2500      100.0     4811    0.52
1  103.5    4100      105.0     9166    0.45
2  101.0    2311      100.0     4811    0.48
3  105.5    5066      105.0     9166    0.55
4  109.0    9585      110.0     9585    1.00
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64921864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档