Kaggle中pandas使用read_csv读取URL数据集报名称解析错误如何解决
问题场景
在Kaggle平台运行IBM面向数据分析师的Python课程示例代码,目标是从指定URL导入二手车数据集到Python环境,输出数据集前5行验证导入结果。
使用的初始代码如下:
import pandas as pd import numpy as np url = "https://archive.ics.uci.edu/ml/machine-learning-databases/autos/imports-85.data" df = pd.read_csv(url, header = None) Print("The First Five Rows Of Data are") df.head(5)
多次运行均抛出异常,核心报错信息:
URLError: <urlopen error [Errno -3] Temporary failure in name resolution>
故障原因
- 核心报错为域名解析失败:Kaggle Notebook运行环境默认限制部分外部域名的网络访问权限,无法直接解析、请求UCI机器学习仓库的域名,该问题和代码逻辑无关,是环境网络策略导致的。
- 代码本身存在两处可导致运行异常的问题:
- Python内置打印函数为全小写
print(),大写开头的Print()会触发名称错误,即使网络连通该行也无法正常执行 - Kaggle Notebook默认仅输出单元格最后一行的返回值,单独编写
df.head(5)若不在单元格最后一行,不会自动展示结果,需要包裹在print()中才能稳定输出。
- Python内置打印函数为全小写
修复方法
方案1:调用Kaggle平台内置数据集(稳定性最高)
该份UCI二手车数据集已经被收录到Kaggle公开数据集库,无需发起外部网络请求即可读取,修正后可直接运行的代码如下:
import pandas as pd import numpy as np # 读取平台内预置的同份数据集,无需联网 df = pd.read_csv("/kaggle/input/automobile-dataset/imports-85.data", header=None) print("The First Five Rows Of Data are") print(df.head(5))
如果提示路径不存在,先在Notebook右侧的Add Data面板搜索Automobile Dataset,点击添加到当前工作环境后即可正常读取。
方案2:本地上传数据集
- 在可正常联网的本地设备下载好
imports-85.data源文件 - 打开Kaggle Notebook,通过左侧上传入口将本地数据集上传到当前工作目录
- 将代码中读取路径替换为上传后的本地文件路径即可,全程不需要环境访问外部网络。
补充说明
如果是在本地Python环境、自建Jupyter环境运行这段代码,只要本地网络连通,将代码中大写的Print改为小写print,同时给df.head(5)加上print()包裹即可正常运行,不会出现域名解析类报错。
内容的提问来源于stack exchange,提问作者Chiran Basnet
相关产品推荐
相关产品推荐

