python - 下载数据集,这是一个 Zip 文件,在笔记本中包含大量 csv 文件以进行数据分析
问题描述
我正在做一个数据科学项目。
我正在使用谷歌笔记本来完成我的工作
我的数据集位于此处,我想直接在 python Notebook 上访问。
我正在使用以下代码行来摆脱它。
df = pd.read_csv('link')
但是命令行抛出如下错误
我应该怎么办?
解决方案
使用 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 文件传递,那么所有这些都是不必要的。
推荐阅读
- swift - Completion Handler::: 只有在上传完成到firebase后,你如何运行代码块?
- javascript - 当你在函数标签后面加上括号时会发生什么?
- python - 如何在 tensorflow 自定义训练循环中考虑 l1 和 l2 正则化器?
- javascript - 客户端和服务器之间需要多少通信才能进行 JWT 验证?
- java - 如何使用尾递归和/或流来查找字符串的所有排列,而不会耗尽长字符串的内存
- mysql - MySQL Workbench - 表数据导入向导将所有日期时间对象写入 0000-00-00 00:00:00
- python-3.x - 如何检测是否已将唯一条目添加到数组中,并使用基于该唯一条目的输入附加到它?
- c# - CQRS 架构模式中的查询处理程序
- google-cloud-platform - 谷歌云机器上的领事
- python - 有没有办法在 sklearn 管道中链接 pd.cut FunctionTransformer?