小编Jas*_*rgh的帖子

使用Numba处理pandas DataFrame时间序列的有效方法

我有一个包含1,500,000行的DataFrame.这是我从QuantQuote.com购买的一分钟级别的股票市场数据.(开盘价,最高价,最低价,收盘价,成交量)我正在尝试进行一些自制的股市交易策略回溯测试.用于处理事务的直接python代码太慢了,我想尝试使用numba来加快速度.问题是numba似乎不适用于pandas功能.

谷歌搜索发现了一个令人惊讶的缺乏关于使用熊猫与大熊猫的信息.这让我想知道我是否因为考虑它而犯了错误.

我的设置是Numba 0.13.0-1,Pandas 0.13.1-1.Windows 7,MS VS2013与PTVS,Python 2.7,Enthought Canopy

我现有的Python + Pandas内环具有以下一般结构

  • 计算"指标"列,(使用pd.ewma,pd.rolling_max,pd.rolling_min等)
  • 为预定事件计算"事件"列,例如移动平均线,新高等.

然后我使用DataFrame.iterrows来处理DataFrame.

我尝试了各种优化,但它仍然没有我想要的那么快.并且优化会导致错误.

我想用numba来处理行.是否有接近这个的首选方法?

因为我的DataFrame实际上只是一个浮点矩形,所以我正在考虑使用像DataFrame.values这样的东西来访问数据,然后编写一系列使用numba来访问行的函数.但是这会删除所有时间戳,我不认为这是一个可逆的操作.我不确定从DataFrame.values获得的值矩阵是否保证不是数据的副本.

任何帮助是极大的赞赏.

python python-2.7 pandas numba

6
推荐指数
1
解决办法
6893
查看次数

快速 numpy 滚动_产品

我需要一个rolling_product 函数,或者一个expanding_product 函数。

有各种pandas rolling_XXXXexpanding_XXXX功能,但我很惊讶地发现缺少的expanding_product()功能。

为了让事情顺利进行,我一直在使用这种相当缓慢的替代方案

pd.expanding_apply(temp_col, lambda x : x.prod())
Run Code Online (Sandbox Code Playgroud)

我的数组通常有 32,000 个元素,所以这被证明是一个瓶颈。我很想尝试log(), cumsum(), 和exp(),但我想我应该在这里问一下,因为可能有更好的解决方案。

python numpy python-2.7 pandas

4
推荐指数
1
解决办法
1605
查看次数

降低多处理的进程优先级.Pool在Windows上

multiprocessing.Pool()用来并行化一些重的Pandas处理,但发现它有点太成功了.我的CPU使用率达到100%,我的整台计算机变得非常无响应.甚至鼠标也变得难以使用.

我可以使用此代码更改进程的进程优先级.

import psutil
p = psutil.Process(os.getpid())
p.nice = psutil.BELOW_NORMAL_PRIORITY_CLASS
Run Code Online (Sandbox Code Playgroud)

但是,当我查看Windows任务管理器时,我发现只有主python.exe进程已更改为低于正常优先级.

有没有一种降低池进程优先级的好方法?

python multiprocessing python-2.7 pandas

3
推荐指数
1
解决办法
3931
查看次数

按日期字符串选择DataFrame切片

我有一个像这样加载的DataFrame

        minData = pd.read_csv(
                currentSymbol["fullpath"],
                header = None,
                names = ['Date', 'Time', 'Open', 'High', 'Low', 'Close', 'Volume', 'Split Factor', 'Earnings', 'Dividends'], 
                parse_dates = [["Date", "Time"]],
                date_parser = lambda x : datetime.datetime.strptime(x, '%Y%m%d %H%M'), 
                index_col = "Date_Time",
                sep=' ')
Run Code Online (Sandbox Code Playgroud)

数据看起来像这样

>>> minData.index
<class 'pandas.tseries.index.DatetimeIndex'>
[1998-01-02 09:30:00, ..., 2013-12-09 16:00:00]
Length: 1373036, Freq: None, Timezone: None
>>> 

>>> minData.head(5)
                        Open     High      Low    Close   Volume  \
Date_Time                                                          
1998-01-02 09:30:00  8.70630  8.70630  8.70630  8.70630   420.73   
1998-01-02 09:35:00  8.82514  8.82514  8.82514  8.82514   420.73   
1998-01-02 09:42:00 …
Run Code Online (Sandbox Code Playgroud)

python pandas

2
推荐指数
1
解决办法
157
查看次数

scikit learn 是否包含具有连续输入的朴素贝叶斯分类器?

scikit learn 中有什么可以帮助我解决以下问题吗?

我需要一个能够接受连续有价值的输入并针对连续有价值的目标进行训练的贝叶斯网络。然后,我想要输入新的、以前未见过的连续输入并接收目标值的估计。最好有一种方法来衡量预测的置信度。(也许是 PDF?)

我不确定这是否会被视为朴素贝叶斯分类器。

我一直在关注 GaussianNB,但我就是看不出它如何以这种方式使用。

我想要一个支持“无关替代方案的独立性”的产品

任何意见是极大的赞赏。

python machine-learning bayesian scikit-learn

2
推荐指数
1
解决办法
3894
查看次数