我正在研究python(专门为pandas
)来分析数据集。 (Python太棒了,开源的力量太棒了)。我在使用我的数据集的特定部分时遇到了问题。
我有以下数据集,
time,contract,ticker,expiry,strike,quote,price,volume
08:01:08,C,PXA,20100101,4000,A,57.8,60
08:01:11,C,PXA,20100101,4000,A,58.4,60
08:01:12,C,PXA,20100101,4000,A,58,60
08:01:16,C,PXA,20100101,4000,A,58.4,60
08:01:16,C,PXA,20100101,4000,A,58,60
08:01:21,C,PXA,20100101,4000,A,58.4,60
08:01:21,C,PXA,20100101,4000,A,58,60
它继续......
我正在使用pandas来加载数据。在此之后,我希望能够做到以下几点,采取重复的时间的体积加权平均值。
即。因为在时间08:01:16有两个问题,我想根据音量计算平均价格(58.4 * 60 + 58 * 60)/(60 + 60)以及音量的平均值。体积列为(60 + 60)/ 2。
答案 0 :(得分:9)
In [28]: a = pd.read_csv('aa.csv')
In [29]: a
Out[29]:
time contract ticker expiry strike quote price volume
0 08:01:08 C PXA 20100101 4000 A 57.8 60
1 08:01:11 C PXA 20100101 4000 A 58.4 60
2 08:01:12 C PXA 20100101 4000 A 58.0 60
3 08:01:16 C PXA 20100101 4000 A 58.4 60
4 08:01:16 C PXA 20100101 4000 A 58.0 60
5 08:01:21 C PXA 20100101 4000 A 58.4 60
6 08:01:21 C PXA 20100101 4000 A 58.0 60
In [30]: pd.DataFrame([{'time': k,
'price': (v.price * v.volume).sum() / v.volume.sum(),
'volume': v.volume.mean()}
for k,v in a.groupby(['time'])],
columns=['time', 'price', 'volume'])
Out[30]:
time price volume
0 08:01:08 57.8 60
1 08:01:11 58.4 60
2 08:01:12 58.0 60
3 08:01:16 58.2 60
4 08:01:21 58.2 60