有没有办法在使用read_csv将数据下载到pandas数据帧之前预先过滤数据?

时间:2016-05-31 22:00:34

标签: python csv pandas dataframe yelp

我正在使用yelp数据集,当然它有数百万条长,所以我想知道是否有任何方法可以下载您需要的内容,或者您​​是否必须手动接收它?例如,yelp对从汽车修理到美容院的所有内容都有评论,但我只想要对餐馆进行评论。那么我是否必须阅读整个内容然后删除我不需要的行?

2 个答案:

答案 0 :(得分:1)

假设您正在查看.csv文件,您可以阅读并预处理chunks,而不是阅读完整数据集,如下所示:

df = pd.DataFrame()
chunksize = 100000
for chunk in pd.read_csv(filename, chunksize=chunksize):
    process(chunk)
    df = pd.concat([df, chunk])

如果您能够控制原始数据集中的内容,那么您当然会感觉更好。

答案 1 :(得分:0)

通常是,加载所有内容,然后过滤数据集。

但是如果你真的想要预过滤,并且你在类似unix的系统上,你可以在启动Python之前使用grep进行预过滤。

它们之间的妥协是使用Python和Pandas编写预过滤器,这样就可以下载数据,预过滤它们(将预过滤的数据写入另一个csv)并使用预过滤的数据。

前进的方式取决于您需要加载整个数据集的次数,如果您想要读取一次并丢弃它,则无需预过滤,但在处理代码时,如果要测试它很多时候,预过滤可能会节省你几秒钟。但在这里,还有另一种可能性:使用ipython notebook,这样你就可以加载数据集,过滤它,然后在这个已经加载的数据集上执行你当前正在工作的代码块,它甚至比加载预过滤的数据集更快。

所以这里没有真正的答案,这实际上取决于你的用法和个人品味。