Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果要执行行级数学操作,请将数据系列存储在文件或数据库中?_Python_Database_Database Design_File Io - Fatal编程技术网

Python 如果要执行行级数学操作,请将数据系列存储在文件或数据库中?

Python 如果要执行行级数学操作,请将数据系列存储在文件或数据库中?,python,database,database-design,file-io,Python,Database,Database Design,File Io,我正在开发一个应用程序来处理金融系列数据集(以csv或开放文档的形式输入),其中一组数据可以是10 x 1000,最多可以是两倍精度的数字(简化,但这才是重要的) 我计划对这些数据进行操作(例如,求和、求差、求平均值等),还包括基于输入的计算生成另一列。这将是一个集合上的列之间(行级操作),以及多个(可能是所有)集合上的行级列之间的操作。我计划用Python编写,最终需要一个面向内部网的界面来显示结果/图形等。目前,基于一些输入参数的csv输出就足够了 存储和操作数据的最佳方式是什么?到目前为止

我正在开发一个应用程序来处理金融系列数据集(以csv或开放文档的形式输入),其中一组数据可以是10 x 1000,最多可以是两倍精度的数字(简化,但这才是重要的)

我计划对这些数据进行操作(例如,求和、求差、求平均值等),还包括基于输入的计算生成另一列。这将是一个集合上的列之间(行级操作),以及多个(可能是所有)集合上的行级列之间的操作。我计划用Python编写,最终需要一个面向内部网的界面来显示结果/图形等。目前,基于一些输入参数的csv输出就足够了

存储和操作数据的最佳方式是什么?到目前为止,我认为我的选择是:(1)将csv文件写入磁盘并遍历它们进行计算;(2)我可以将它们放入数据库并依靠数据库来处理计算。我主要关心的是速度/性能,因为数据集的数量在增长,因为需要进行数据集间的行级计算

-有没有人在这两条道路上都有经验?我应该注意哪些陷阱/陷阱?
-为什么要选择一个而不是另一个?
-在我开始之前,是否有任何可能影响设计的潜在速度/性能陷阱/提升需要注意?
-是否有任何项目或框架可以帮助完成这类任务

-编辑- 更多信息:
这些行将按顺序全部读取,但我可能需要进行一些重采样/插值,以匹配不同的输入长度以及每行的不同时间戳。因为每个数据集总是有不同的长度,而不是固定的,所以我会在某个地方有一些临时表/内存来保存插值/重采样版本。我不确定尝试存储该行(并尝试将采样/插值到更高的通用长度)或每次需要时重新生成该行是否更有意义。

您可能需要按顺序排列所有行,还是只需要特定的已知行?
如果您需要读取所有数据,那么将其保存在数据库中没有多大好处


编辑:如果代码适合内存,那么简单的CSV就可以了。如果可以使用,纯文本数据格式总是比不透明数据格式更容易处理。

您可能需要按顺序排列所有行,还是只需要特定的已知行?
如果您需要读取所有数据,那么将其保存在数据库中没有多大好处


编辑:如果代码适合内存,那么简单的CSV就可以了。如果您可以使用纯文本数据格式,它总是比不透明的数据格式更容易处理。

如果所有数据都能同时放入内存,那么最重要的是。从您给出的大小来看,情况似乎很简单(最坏情况下只有几兆字节)


如果是这样的话,我不鼓励使用关系数据库,而是直接用Python执行所有操作。根据您需要的其他处理方式,我可能更愿意使用二进制pickle,而不是CSV。

如果所有数据都同时放入内存,那么最重要的是什么。从您给出的大小来看,情况似乎很简单(最坏情况下只有几兆字节)

如果是这样的话,我不鼓励使用关系数据库,而是直接用Python执行所有操作。根据您需要的其他处理方式,我可能更愿意使用二进制pickle,而不是CSV。

“我计划对该数据进行操作(例如求和、求差、求平均值等),还包括根据输入的计算生成另一列。”

这是数据仓库星型模式设计的标准用例。购买Kimball的数据仓库工具包。在做任何其他事情之前,先阅读(并理解)星型模式

“存储数据和操作数据的最佳方式是什么?

星型模式

您可以将其实现为平面文件(CSV很好)或RDBMS。如果您使用平面文件,您可以编写简单的循环来进行计算。如果您使用RDBMS,那么您可以编写简单的SQL和简单的循环

“随着数据集数量的增长,我主要关心的是速度/性能”

没有什么比平锉刀更快了。时期RDBMS比较慢

RDBMS值命题源于SQL,它是一种相对简单的方法,可以从事实联接维度指定
SELECT SUM(),COUNT(),其中filter GROUP BY dimension属性
。Python不像SQL那样简洁,但它同样快速和灵活。Python与SQL竞争

“我应该注意的陷阱/陷阱?”

数据库设计。如果你不了解星型模式以及如何从维度中分离事实,那么所有的方法都是注定要失败的。一旦你把事实和维度分开,所有的方法都是近似相等的

“为什么选择一个而不是另一个?”

RDBMS速度慢且灵活。平面文件速度快,而且(有时)不太灵活。Python为游戏提供了公平的环境

“在我开始设计之前,是否有任何可能影响设计的潜在速度/性能陷阱/提升?”

星型模式:由维度表包围的中心事实表。没有什么能比得上它

是否有任何项目或框架可以帮助完成此类任务?

不完全如此。

“我计划对该数据进行运算(如求和、求差、求平均值等),还包括根据输入的计算生成另一列。”

这是数据仓库星型模式设计的标准用例。购买Kimball的数据仓库工具包。在做任何其他事情之前,先阅读(并理解)星型模式

“存储数据和操作数据的最佳方式是什么?

星型模式