Python:处理大量数据,使用Scipy还是Rpy?如何操作?

7 投票
6 回答
3134 浏览
提问于 2025-04-16 22:25

在我的Python环境中,已经安装了Rpy和Scipy这两个包。

我想解决的问题是这样的:

1) 有一大堆金融数据存储在一个文本文件里,无法直接加载到Excel中。

2) 我需要对某些字段进行求和,得到总数。

3) 我需要根据总数显示前10行数据。

请问这两个包(Scipy或Rpy)哪个更适合这个任务呢?

如果可以的话,能给我一些建议吗?比如文档或者在线示例,这样我可以更好地实现解决方案。

速度也是一个问题。理想情况下,Scipy和Rpy能够处理这些大文件,即使文件大到无法完全放入内存中。

6 个回答

3

Python的文件输入输出性能其实不错,所以你可以直接使用file模块。想知道里面有哪些可用的功能,可以在交互式解释器里输入help(file)来查看。创建文件是Python的基本功能之一,不需要你去import file

比如说:

f = open ("C:\BigScaryFinancialData.txt", "r");
for line in f.readlines():
    #line is a string type
    #do whatever you want to do on a per-line basis here, for example:
    print len(line)

需要说明的是:这段内容是针对Python 2的,我不太确定在Python 3中是否适用。

至于如何显示前10行和计算每行的总和,就留给你自己去搞定吧。这可以通过简单的程序逻辑实现,不需要任何特别的库。当然,如果行的数据格式比较复杂,导致你难以提取出值,那你可能需要用到某种解析模块,比如re(在交互式解释器里输入help(re)可以了解更多)。

5

其实用不上Rpy或Scipy,不过用numpy可能会让事情简单一些。这个问题很适合用逐行解析的方法来解决。你只需要打开文件,把每一行读成一个字符串,然后把这一行的内容扫描成一个数组(可以参考numpy.fromstring),更新你的累加和,然后再处理下一行就行了。

2

正如@gsk3提到的,bigmemory是一个很棒的工具,适合处理大数据,还有biganalyticsbigtabulate这几个包(还有其他的,但这几个值得一试)。另外还有ff,不过那个用起来没那么简单。

R和Python都有支持HDF5的功能(在R中可以看看ncdf4NetCDF4这两个包),这让我们可以快速且方便地访问存储在硬盘上的大数据集。就我个人而言,我主要使用bigmemory,不过那是专门为R设计的。由于HDF5在Python中也可以使用,而且速度非常快,所以在Python中使用它可能是你最好的选择。

撰写回答