将代理传递给Seaborn

时间:2019-02-04 10:37:28

标签: python seaborn

我正在使用seaborn进行数据可视化。但是它无法对文档中的示例数据进行故障诊断

import seaborn as sns
sns.set()
tips = sns.load_dataset("tips")

Traceback (most recent call last):
  File "databaseConnection.py", line 35, in <module>
    tips = sns.load_dataset("tips")
  File "C:\python3.7\lib\site-packages\seaborn\utils.py", line 428, in load_dataset
    urlretrieve(full_path, cache_path)
  File "C:\python3.7\lib\urllib\request.py", line 247, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\python3.7\lib\urllib\request.py", line 222, in urlopen
    return opener.open(url, data, timeout)
  File "C:\python3.7\lib\urllib\request.py", line 525, in open
    response = self._open(req, data)
  File "C:\python3.7\lib\urllib\request.py", line 543, in _open
    '_open', req)
  File "C:\python3.7\lib\urllib\request.py", line 503, in _call_chain
    result = func(*args)
  File "C:\python3.7\lib\urllib\request.py", line 1360, in https_open
    context=self._context, check_hostname=self._check_hostname)
  File "C:\python3.7\lib\urllib\request.py", line 1319, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 11001] getaddrinfo failed>

那是因为我在代理服务器后面,但是如何要求seaborn使用代理服务器?

2 个答案:

答案 0 :(得分:1)

您可以手动下载文件。

使用

import seaborn as sns
print(sns.utils.get_data_home())

找出用于存放原始数据的文件夹,例如它可能在Windows上以C:\Users\username\seaborn-data的形式出现。

将文件https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv下载到该文件夹​​。最后,使用“缓存”选项

sns.load_dataset("tips", cache=True)

答案 1 :(得分:0)

我知道,问题有点老了。但是我一直在寻找类似的解决方案,但我并没有为上述工作(某种程度上)。因此,我在下面的链接中创建了类似/重复的问题:

  

Not able to resolve issue(HTTP error 404) with seaborn.load_dataset function

然后我通过调试找到了解决方案。详细信息如下:

load_dataset()在'utils.py'库文件中可用,该文件的路径位于硬编码字符串的下方:

path = ("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/{}.csv")

因此,无论我们在load_dataset()函数中提供什么文件名,python都会在线搜索到上面的路径。除上述路径外,没有其他选择,我们可以为数据集提供自己的在线链接。 load_dataset()的第二个参数是'cache',其默认布尔值为'True'。因此,如果未在线找到数据集,则该函数将查找物理路径,如下所示:

<Your Drive>:\Users\<Your User name>\seaborn-data 
    e.g. C:\Users\user1\seaborn-data    

如果在网上找不到此路径,则应具有我们的数据集。也就是说,如果我们实际存在数据集,则以下代码将起作用:

df = sns.load_dataset('FiveYearData')

(注意:但是,如果在线找到数据集,则由于cache = True,它也将被复制到上述路径中。)

我们还可以通过以下第三参数(data_home)为数据集提供不同的物理路径:

df = sns.load_dataset('FiveYearData',data_home=os.path.dirname(os.path.abspath("FiveYearData")))

在这里,我要使用当前的项目工作目录来保存我的数据集。