2

我刚刚开始接触 pandas(这很棒),我需要做的是将压缩的基因组学类型文件从 ftp 站点读入 pandas 数据帧。这是我尝试过的,但遇到了很多错误:

from pandas.io.parsers import *

chr1 = 'ftp://ftp.ncbi.nih.gov/snp/organisms/human_9606/chr_rpts/chr_1.txt.gz'

CHR1 = read_csv(chr1, sep='\t', compression = 'gzip', skiprows = 10)

print type(CHR1)
print CHR1.head(10)

理想情况下,我想做这样的事情:

from pandas.io.data import *
AAPL = DataReader('AAPL', 'yahoo', start = '01/01/2006')
4

1 回答 1

1

这个问题的有趣部分是如何从 ftp 流式传输 (gz) 文件,这是在此处讨论的,其中声称以下内容将在 Python 3.2中工作(但在 2.x 中不会,也不会被反向移植) ,在我的系统上就是这种情况:

import urllib.request as ur
from gzip import GzipFile

req = ur.Request(chr1) #  gz file on ftp (ensure startswith 'ftp://')
z_f = ur.urlopen(req)

# this line *may* work (but I haven't been able to confirm it)
# df = pd.read_csv(z_f, sep='\t', compression='gzip', skiprows=10)

# this works (*)
f = GzipFile(fileobj=z_f, mode="r")
df = pd.read_csv(f, sep='\t', skiprows=10)

(*) 这里f是“类文件”,从某种意义上说,我们可以执行readline(逐行读取),而不必下载/打开整个文件。

.

注意:我无法将ftplib图书馆带到readline,不清楚是否应该这样做。

于 2013-02-19T01:09:37.167 回答