我刚刚掌握了大熊猫(这很棒)我需要做的是将压缩的基因组学类型文件从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')
答案 0 :(得分:1)
这个问题的有趣部分是如何从ftp 流式传输一个(gz)文件,讨论here,其中声称以下内容将在Python中运行 3.2 (但won't in 2.x, nor will it be backported),在我的系统上就是这种情况:
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
library发送到readline
,目前尚不清楚是否应该这样做。