4

pandasデータセットを分析するために(特に)pythonに取り組んでいます。(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 に 2 つの売りがあるので、(58.4*60 + 58*60)/(60+60) となるボリュームに基づいて平均価格を計算し、ボリュームの平均を計算したいと思います。 (60 + 60)/ 2になるボリューム列。

4

1 に答える 1

12
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
于 2012-06-11T14:57:10.480 に答える