Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算总价格,计算价格与数量数据的权重/权重,并按5个价格进行分组_Python_Pandas_Dataframe - Fatal编程技术网

Python 计算总价格,计算价格与数量数据的权重/权重,并按5个价格进行分组

Python 计算总价格,计算价格与数量数据的权重/权重,并按5个价格进行分组,python,pandas,dataframe,Python,Pandas,Dataframe,我有这样一个数据帧: price volume 0 100.0 2500 1 100.5 4100 2 101.0 2311 3 101.5 5066 4 102.0 9585 ... ... ... 我想先得到一组价格,然后用步骤5对数量求和。 例如(使用随机值): 最后,根据单个数量和价格,我想给每个价格一个权重/加权平均值/分数,这样我可以对数据进行标准化,以知道哪个数量的

我有这样一个数据帧:

       price   volume
0     100.0     2500
1     100.5     4100
2     101.0     2311
3     101.5     5066
4     102.0     9585
...    ...       ...
我想先得到一组价格,然后用步骤5对数量求和。 例如(使用随机值):

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

       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
...    ...       ...

有人能帮我吗?

我用标准的方法将价格四舍五入,因此97.5到102.49将被归入100组。 重量-我使用了简单的公式

data.csv:

price   volume
100.0     2500
103.5     4100
101.0     2311
105.5     5066
109.0     9585
代码:

输出:

   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

价格下跌的部分100(任何>95的部分,是的,100将包括>95到100到100之间的总量
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)
   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