我的代码在 jupiter notebook 中,我的数据集(400-800mb)存在于 google drive/dropbox 上。我的任务是将 csv 文件从另一台服务器加载到我的 jupiter notebook 中。我怎样才能做到这一点?我应该将我的 csv 文件移动到其他服务器吗?
如何在python中从网络加载大型csv文件
数据挖掘
机器学习
Python
数据集
2021-10-07 00:57:22
2个回答
您可以使用Pandasread_csv()轻松完成此操作,方法是使用您的 URL调用并设置chunksize以在它太大而无法放入内存时对其进行迭代。
将数据加载到 Pandas 中会有一定的开销,根据数据的不同,它可能是 2-3 倍,因此 800M 可能不适合内存。您可以下载数据的子集,例如 10M 的 CSV 并调用诸如memory_usage 之类的方法来确定您真正需要多少内存。
使用请求
您可以逐行迭代地读取文件。您不需要将整个数据集存储到内存中。这一次只会在内存中维护一行。这是非常快速和高效的内存。
import requests
from contextlib import closing
import csv
url = "http://samplecsvs.s3.amazonaws.com/SalesJan2009.csv"
with closing(requests.get(url, stream=True)) as r:
f = (line.decode('utf-8') for line in r.iter_lines())
reader = csv.reader(f, delimiter=',', quotechar='"')
for row in reader:
print(row)
使用熊猫
您也可以使用 pandas 执行此操作,但是这会将整个数据集块存储在内存中。但是,这个库非常强大,可以让您的处理方式更轻松。
import pandas as pd
url = "http://samplecsvs.s3.amazonaws.com/SalesJan2009.csv"
df = pd.read_csv(url)
print(df.head())
其它你可能感兴趣的问题