繁体   English   中英

Pandas - 直接从 URL 读取大型 CSV

[英]Pandas - Reading Large CSV directly from URL

我一般是 python/数据科学的新手,试图理解为什么下面不起作用:

import pandas as pd
url = 'https://s3.amazonaws.com/nyc-tlc/trip+data/fhv_tripdata_2017-06.csv'
trip_df = []
for chunk in pd.read_csv(url, chunksize=1000, nrows=10000):
    trip_df.append(chunk)
trip_df = pd.concat(trip_df, axis='rows')

它返回了一个 MemoryError,但我的印象是分块加载文件是一种解决方法。 我不想将 csv 保存到我的硬盘上,而且我不完全确定这是否有帮助。

我的电脑非常有限,只有 4GB 的 RAM(2.9 可用)。 我想这是一个因素,但如果无法导入整个文件,我将如何获取其中的一部分,比如 5,000 行?

试试这个:

reader = pd.read_csv(url, chunksize=1000, nrows=10000)
df = pd.concat([x for x in reader], ignore_index=True)

我怎么才能得到它的一部分,比如 5,000 行?

df = pd.read_csv(url, nrows=5000)

只需在命令行中获取 5000 行

wget -q -O - https://s3.amazonaws.com/nyc-tlc/trip+data/fhv_tripdata_2017-06.csv | head -n 5000 > tmp.csv

然后继续 tmp.csv

这对我有用

with contextlib.closing(urllib.request.urlopen(url=url)) as rd:
    for df in pd.read_csv(rd, chunksize=5, index_col=0):
        print(df)

而只是

pd.read_csv(url, chunksize=5, index_col=0)

因 MemoryError 崩溃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM