Python+;Postgresql:调用数据进行计算(滚动/扩展窗口)的理想方式&x2B;多线程?
我有一个巨大的数据库(大约100个变量,有几百万行)由股票数据组成。我设法通过sqlalchemy(postgreql+psycopg2)将python与数据库连接起来。我在云上运行它 原则上我想做几件事: 1) 所有可能组合的回归:我正在对每个股票进行简单的回归,即XYZ上的ABC和ABC上的XYZ,这在n=100个股票中进行,结果是n(n+1)/2个组合。 ->我想到一个函数,它调用股票对,进行两次回归,比较结果,然后根据一些标准选择一个。 我的问题是:有没有一种有效的方法来调用“阶乘” 2) 滚动窗口:为了避免数据过载,我想只调用调查的dataframe,即30天,然后每天滚动,这意味着我的周期是:Python+;Postgresql:调用数据进行计算(滚动/扩展窗口)的理想方式&x2B;多线程?,python,multithreading,postgresql,pandas,sqlalchemy,Python,Multithreading,Postgresql,Pandas,Sqlalchemy,我有一个巨大的数据库(大约100个变量,有几百万行)由股票数据组成。我设法通过sqlalchemy(postgreql+psycopg2)将python与数据库连接起来。我在云上运行它 原则上我想做几件事: 1) 所有可能组合的回归:我正在对每个股票进行简单的回归,即XYZ上的ABC和ABC上的XYZ,这在n=100个股票中进行,结果是n(n+1)/2个组合。 ->我想到一个函数,它调用股票对,进行两次回归,比较结果,然后根据一些标准选择一个。 我的问题是:有没有一种有效的方法来调用“阶乘” 2
1: 1D-30D
2: 2D-31D and so on
这意味着我总是在第一天删除数据帧,并在数据帧的末尾添加另一行。这意味着我有两个步骤,第一天就放弃,然后从数据库中读取下一行。
我的问题:这是一种有意义的方式还是Python有更好的方法?你会怎么做
3) 扩展窗口:我没有删除第一行并添加另一行,而是保留30天,再添加30天,然后运行回归。这里的问题是,在某一点上,我会接受所有可能对内存来说太大的数据?
我的问题:这里的解决办法是什么
4) 当我在云上运行我的分析时(比我自己的pc多几个内核),事实上我可以使用多线程,发送“批处理”作业,并让Python并行处理。我想把我的数据分成4x25个股票,让它并行运行(垂直分割),还是最好水平分割?
此外,我正在使用Jupyter;我想知道如何在这里找到最好的方法,通常我有一个shell脚本,名为my_program.py。这里也是这样吗?让我尝试明确地给出答案,并记下我的观察结果
希望这些能够回答您的问题。
~100个变量,包含数百万行。
您可能做错了。亲爱的Chadwick,非常感谢您的回答:1。是的,这就是我想做的。2.这是一种回溯测试;想象一下,你花了30天的时间去寻找一些关系,然后明天你开始用它做一些事情,假装你以特定的频率得到了一些数据点。但当然,过度装修是一个问题。4.所以我假设(不知何故不能点击链接)它不是Python中的spark模块,而是ApacheSpark本身,即从postgres中提取并迁移到AS?我不是在关注Jupyter,任何其他的都可以(只是除了RStudio和Matlab,从来没有使用过其他任何东西)@eternity1看起来标准时间序列模型(ARIMA系列)会更适合这样的任务,但是你更了解用例。至于ApacheSpark,是的,您必须使用Spark运行时和PySpark SDK。Spark可以连接到任何数据库并并行读取数据。。如果答案对你有帮助,请你也标出好吗?