[英]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.