You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Seaborn加载本地数据报错:文件不存在及HTTP协议错误

问题根源:误解了sns.load_dataset()的作用

你这里犯了一个关键错误——sns.load_dataset()根本不是用来加载本地CSV文件或已读取的DataFrame的。这个函数的设计目的是加载Seaborn官方内置的公开数据集(比如tips、iris这类),它的参数是数据集的名称字符串,而不是你已经用pandas读取好的DataFrame对象。

为什么你的代码会报错?

  1. 当你执行nyctel = sns.load_dataset(tel)时,函数会把传入的tel(一个DataFrame对象)自动转换成字符串,然后尝试去Seaborn默认的数据集存储路径找名为"nyc.csv"的内置数据集——显然这个数据集不存在,所以抛出IOError: File nyc.csv does not exist。
  2. 当你改用绝对路径时,load_dataset会把这个路径字符串当成数据集名称,尝试通过HTTP请求去获取(因为它默认从远程仓库拉取内置数据集),自然会触发HTTP协议错误。

修正后的正确代码

你已经用pd.read_csv成功读取了本地的nyc.csv到tel这个DataFrame里,直接用这个DataFrame绘图就行,完全不需要调用sns.load_dataset:

import os.path
directory = os.path.dirname(os.path.abspath(__file__))
import pandas as pd
import seaborn as sns

sns.set(style="whitegrid", color_codes=True)
# 用绝对路径读取本地CSV,避免相对路径问题
tel = pd.read_csv(os.path.join(directory, 'nyc.csv'))
# 直接使用读取好的tel DataFrame绘图
sns.stripplot(x="installation_id", y="mounting", hue="mounting", data=tel)

补充说明

如果之后你需要使用Seaborn的内置数据集,才需要用到load_dataset,比如:

# 加载Seaborn内置的tips数据集
tips = sns.load_dataset("tips")
sns.stripplot(x="day", y="total_bill", data=tips)

内容的提问来源于stack exchange,提问作者InterLinked

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:37:28