Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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 - Fatal编程技术网

用Python快速迭代大数据?

用Python快速迭代大数据?,python,database,Python,Database,我正在对中等大小的数据2GB、20Mio记录进行数据分析,在当前的机器上,它几乎无法放入内存。Windows 7在这台4 GB计算机上达到3 GB占用率时会大大降低速度。我当前的大多数分析需要迭代所有记录,并考虑由一些GyPID确定的记录组的属性。< /P> 我们怎样才能完成这项任务?我当前的方法是将其加载到SQLite中并按行进行迭代。我在内存中构建组,但这也会变得相当大 我有以下想法,但也许你可以建议更好的方法: 按GroupID对SQLite表进行排序,以便将组放在一起 以某种方式按列存储

我正在对中等大小的数据2GB、20Mio记录进行数据分析,在当前的机器上,它几乎无法放入内存。Windows 7在这台4 GB计算机上达到3 GB占用率时会大大降低速度。我当前的大多数分析需要迭代所有记录,并考虑由一些GyPID确定的记录组的属性。< /P> 我们怎样才能完成这项任务?我当前的方法是将其加载到SQLite中并按行进行迭代。我在内存中构建组,但这也会变得相当大

我有以下想法,但也许你可以建议更好的方法:

按GroupID对SQLite表进行排序,以便将组放在一起 以某种方式按列存储数据,这样我就不必读取所有列 使用Python序列化数据以更快地解析数据? 这些想法对我来说似乎很难结合起来:我该怎么办


注:硬件升级很难获得。管理员权限也很麻烦

如果不了解您正在尝试执行的数据和聚合,很难说什么,但绝对不要使用Python序列化数据以更快地解析数据-很可能这不是问题所在。而且可能不会以某种方式按列存储数据,这样我就不必读取所有列


按GroupID对SQLite表进行排序,使组以什么格式存储数据?CSV文件可以很容易地进行迭代。这完全取决于:数据格式、数据细节,例如,您有多少组ID,您需要什么样的聚合。SQL正是处理这一问题的语言。当SQL或存储过程更接近数据时,为什么要在代码中进行操作?您试图实现什么聚合?其中许多问题可以转化为在线学习问题,在任何时间点只需要O1内存。我的操作之一是:为每个GroupID收集所有对值/类型字段,例如gid1:[v1,t1,v2,t2,…]。接下来,我有多个选择器s1、s2,它们根据tn从该列表中进行子选择。例如,s1将子选择s1:[v2、t2、v5、t5]。最后,在该选择中,集合{v2,v5}由所有过滤器f1,f2。。。如果vn中的一个或任何一个不在某个范围内,则每个vn都会进行多次检查。如果子选择s1的过滤器f2为真,则生成计数s1,f2。我收集k1,[a1,a2,…],k2,[a3,…]。。。然后我应用上面评论中描述的聚合。即使这样也会占用太多内存,大大降低Windows的运行速度。只有通过预排序,我才能丢弃中间数据。任何关于如何加快IO速度并在内存和硬盘之间找到良好平衡的见解都将非常有用。@Gerenuk:添加了一个响应,HTH