gpt4 book ai didi

python - 将报价数据转换为每日数据

转载 作者:行者123 更新时间:2023-11-30 23:27:19 25 4
gpt4 key购买 nike

我想将包含报价数据的 csv 文件转换为每日价格和交易量。我的 csv 文件格式为:unix,price,volume。

groupby 函数只能让我按 unix 秒进行分组。获取每日收盘价和每天交易量总和的好方法是什么?

我正在使用 python 2.7,并且还安装了 pandas,但我还不太熟悉它。

真的,我最远要做的事情是这样的:

import pandas as pd

data = pd.read_csv('file.csv',names=['unix','price','vol'])

datagr = data.groupby('unix')
dataPrice = datagr['price'].last()
dataVol = datagr['vol'].sum()

示例数据:

1391067323,772.000000000000,0.020200000000
1391067323,772.000000000000,0.020000000000
1391067323,771.379000000000,1.389480000000
1391067323,772.000000000000,1.244540000000
1391067326,774.955000000000,0.084830600000
1391067326,774.955000000000,0.084833400000
1391067327,774.955000000000,0.084830600000
1391067331,774.953000000000,0.200000000000
1391067336,774.951000000000,0.101202000000

这会检索每 UNIX 秒的最后价格,并对 UNIX 秒内发生的交易量进行求和。问题是它分组到unix秒,出于时间考虑我不想使用任何 super 复杂的方法

最佳答案

您可以使用to_datetime将unix时间转换为pandas的日期时间:

df['unix'] = pd.to_datetime(df['unix'], unit='s')

现在您可以将其设置为索引和 resample :

df = df.set_index('unix')

df.resample('D', how={'volume': 'sum', 'price': 'last'})

注意:我们对各个列使用不同的方法。

示例:

In [11]: df = pd.DataFrame(np.random.randn(5, 2), pd.date_range('2014-01-01', periods=5, freq='H'), columns=list('AB'))

In [12]: df
Out[12]:
A B
2014-01-01 00:00:00 -1.185459 -0.854037
2014-01-01 01:00:00 -1.232376 -0.817346
2014-01-01 02:00:00 0.478683 -0.467169
2014-01-01 03:00:00 -0.407009 0.290612
2014-01-01 04:00:00 0.181207 -0.171356

In [13]: df.resample('D', how={'A': 'sum', 'B': 'last'})
Out[13]:
A B
2014-01-01 -2.164955 -0.171356

关于python - 将报价数据转换为每日数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22132978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com