首页 > 解决方案 > 下载数据集,这是一个 Zip 文件,在笔记本中包含大量 csv 文件以进行数据分析

问题描述

我正在做一个数据科学项目。

我正在使用谷歌笔记本来完成我的工作

我的数据集位于此处,我想直接在 python Notebook 上访问。

我正在使用以下代码行来摆脱它。

df = pd.read_csv('link')

但是命令行抛出如下错误

我应该怎么办?

标签: pythonzip

解决方案


使用 urllib 模块将 zip 文件下载到内存中,该文件返回一个您可以 read() 的类似文件的对象,将其传递给 ZipFile(标准包)。

由于这里有多个文件,例如 ['test_data/AggregateData_Test.csv', 'test_data/TransactionData_Test.csv', 'train_data/AggregateData_Train.csv', 'train_data/Column_Descriptions.xlsx', 'train_data/sample_submission.csv', 'train_data /TransactionData_Train.csv']

将其加载到以文件名为键的数据帧的字典中。总而言之,代码将是。

from urllib.request import urlopen
from zipfile import ZipFile
from io import BytesIO


zip_in_memory = urlopen("https://he-s3.s3.amazonaws.com/media/hackathon/hdfc-bank-ml-hiring-challenge/application-scorecard-for-customers/05d2b4ea-c-Dataset.zip").read()

z = ZipFile(BytesIO(zip_in_memory))
dict_of_dfs = {file.filename: pd.read_csv(z.open(file.filename))\
               for file in z.infolist()\
               if file.filename.endswith('.csv')}

现在您可以访问每个 csv 的数据帧,例如dict_of_dfs['test_data/AggregateData_Test.csv'].

当然,如果您只是从链接下载 zip 并将其作为 zip 文件传递​​,那么所有这些都是不必要的。


推荐阅读