我一般都是蟒蛇/数据科学的新手,试图理解为什么以下不起作用:
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可用)。我认为这是一个因素,但如果导入整个文件不是一个选项,我怎么才能获得它的一部分,比如5000行?
答案 0 :(得分:0)
试试这个:
reader = pd.read_csv(url, chunksize=1000, nrows=10000)
df = pd.concat([x for x in reader], ignore_index=True)
我怎么才能得到它的一部分,比如5000行?
df = pd.read_csv(url, nrows=5000)
答案 1 :(得分:0)
使用
在命令行中获取5000行wget -q -O - https://s3.amazonaws.com/nyc-tlc/trip+data/fhv_tripdata_2017-06.csv | head -n 5000 > tmp.csv
然后继续使用tmp.csv
答案 2 :(得分:0)
这对我有用
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 而崩溃。