背景:
我对Python和编程都是新手。我想知道我的实现方法是正确的,还是应该做得更好。你知道吗
数据:
我有一个csv,大约有400种股票
Date, SH Ltd, Date, QS Ltd, Date, WX Ltd ...
26/02/18, 34, 16/06/13, 5634, 15/06/17, 100
27/02/18, 33, 17/06/13, 5763, 16/06/17, 100
28/02/18 ,35, 18/06/13, 6139, 17/06/17, 100
...
因此,每个第一列都有一些随机的开始日期,但所有日期都将从昨天开始结束。现在假设我想做三件事
1)计算最近252天的容量 2) 计算最差的三个2天的差距东股票。你知道吗
我的方法
我现在在想,我循环通过CSV的每一列,创建一个时间序列向量。然后我可以在上面运行一个方法来计算开始日期+2到今天的3天间隔。然后创建一个向量,把这个向量从大到小排序,然后吐出最小的3个。然后我用最后252天的时间,算出标准差,再乘以252的平方根。你知道吗
在此之后,我有2个输出
1)最差2天表现向量(最差5) 2) 卷的最后252天的数字
在这一点上,我把这个数据到一个二维性能和波动csv的csv。然后我继续循环其他每一列,直到它有数据并添加到上面的csv文件。你知道吗
我的问题:
这是一个非常低效的方法吗?与只使用一个向量进行一次计算相比,连续使用多个向量是否会大大降低我的程序的速度?你知道吗
让我们先对问题和简短的答案进行一些清晰的解释,然后讨论一般的优化问题。你知道吗
我创建了一个包含更多行的文件,还从列名中删除了空格(使事情更简单)。你知道吗
有关VOL的更多信息,请参见here
现在,关于效率,“过早的优化是万恶之源”(Knuth)。在你的例子中,如果你只有400只股票,每天只有一行,那么100年的数据量不到14MB,而便宜的智能手机通常有16GB的RAM。因此,所有的数据都将存储在ram中,即使您多次读取每个值,VOL的计算也需要几秒钟的时间,CPU的使用率非常低。你知道吗
更多关于我的具体实现-我使用熊猫,具有以下优点: (1) 简短的代码 (2) 矢量计算效率
缺点: 需要学习这个图书馆,这可能是压倒性的初学者。你知道吗
相关问题 更多 >
编程相关推荐