在Jupyter notebook中使用Python从github导入数据

mklgxw1f  于 2023-06-20  发布在  Python
关注(0)|答案(3)|浏览(270)

我正在使用Aurelien Geron的书“Hands-on machine learning with scikit-learn and tensorflow”。
第一次使用Jupyter。
我正在尝试遵循以下代码。

我的问题是,当我用下面的代码运行单元格时:

import os
import tarfile
import urllib
DOWNLOAD_ROOT = "https://raw.githubusercontent.com/ageron/handson-ml2/master/"
HOUSING_PATH = os.path.join("datasets", "housing")
HOUSING_URL = DOWNLOAD_ROOT + "datasets/housing/housing.tgz"
def fetch_housing_data(housing_url=HOUSING_URL, housing_path=HOUSING_PATH):
    os.makedirs(housing_path, exist_ok=True)
    tgz_path = os.path.join(housing_path, "housing.tgz")
    urllib.request.urlretrieve(housing_url, tgz_path)
    housing_tgz = tarfile.open(tgz_path)
    housing_tgz.extractall(path=housing_path)
    housing_tgz.close()

单元计算永远不会结束,In[*]:永远不会变成类似In[1]:的东西。
所以,我认为这是一个问题的初始网址,因为它显示了一个错误,当我访问它通过我的互联网浏览器。
因此,我将其更改为DOWNLOAD_ROOT = "https://github.com/ageron/handson-ml2/tree/master/"
现在我得到In[1]:。但是,当我运行fetch_housing_data()时,我得到:

---------------------------------------------------------------------------
ReadError                                 Traceback (most recent call last)
<ipython-input-6-bd66b1fe6daf> in <module>
----> 1 fetch_housing_data()

<ipython-input-5-ef3c39b342d8> in fetch_housing_data(housing_url, housing_path)
      9     tgz_path = os.path.join(housing_path, "housing.tgz")
     10     urllib.request.urlretrieve(housing_url, tgz_path)
---> 11     housing_tgz = tarfile.open(tgz_path)
     12     housing_tgz.extractall(path=housing_path)
     13     housing_tgz.close()

~\Anaconda3\lib\tarfile.py in open(cls, name, mode, fileobj, bufsize, **kwargs)
   1576                         fileobj.seek(saved_pos)
   1577                     continue
-> 1578             raise ReadError("file could not be opened successfully")
   1579 
   1580         elif ":" in mode:

ReadError: file could not be opened successfully

为什么会发生这种情况,我该如何解决?

i2byvkas

i2byvkas1#

你有没有重新启动你的内核并尝试再次运行?
你所看到的是不可复制的。
上面粘贴的第一个代码块可以按照编写的那样工作。不需要修改它。
我只是在下面运行了这个,然后当我在另一个单元格中运行fetch_housing_data()时,它工作了:

import os
import tarfile
import urllib
DOWNLOAD_ROOT = "https://raw.githubusercontent.com/ageron/handson-ml2/master/"
HOUSING_PATH = os.path.join("datasets", "housing")
HOUSING_URL = DOWNLOAD_ROOT + "datasets/housing/housing.tgz"
def fetch_housing_data(housing_url=HOUSING_URL, housing_path=HOUSING_PATH):
    os.makedirs(housing_path, exist_ok=True)
    tgz_path = os.path.join(housing_path, "housing.tgz")
    urllib.request.urlretrieve(housing_url, tgz_path)
    housing_tgz = tarfile.open(tgz_path)
    housing_tgz.extractall(path=housing_path)
    housing_tgz.close()

你确定这不是一个你看不到细胞完成的艺术品?
如果你想独立验证,你可以像我一样在其他地方运行它。我只是通过运行here并按下底部的launch binder链接来测试它。然后我把你的代码粘贴到出现的单元格中。在运行了这两个单元格之后,我在/home/jovyan/scripts/datasets/housing上有一个目录,其内容为housing.csv housing.tgz

utugiqy6

utugiqy62#

import pandas as pd

# Specify the URL of the raw CSV file on GitHub
csv_url = 'https://raw.githubusercontent.com/nghait/gpt/main/AIGPTDAT.csv'

# Read the CSV file from the URL into a pandas DataFrame
df = pd.read_csv(csv_url, sep=';')

# Now you can work with the DataFrame
# For example, you can print the first few rows
print(df.head())
oipij1gg

oipij1gg3#

https://raw.githubusercontent.com/ageron/handson-ml2/master/
我不知道这是什么样的联系。也许有人能解释。当我输入这个链接时,我无法访问该页面。然而,它确实可以检索我在下一页解释的数据。如果我使用你上面提到的实际的github链接https://github.com/ageron/handson-ml2/tree/master/,代码无法提取数据。
我已经能够使用书中的步骤从链接中提取csv文件,方法是在“导入”中添加另一行。我添加了“import urllib.request”。这似乎对我在谷歌可乐工作。导入urllib你可能会认为urllib.request也被导入了,但事实并非如此。我不能回答为什么它是工作,但文档的urllib有'进口urllib.request'在一个例子,我采取的想法。

相关问题