【问题标题】:Is there a way to import csv file from github automatically to my jupyter notebook有没有办法将 csv 文件从 github 自动导入到我的 jupyter notebook
【发布时间】:2020-03-09 23:45:17
【问题描述】:

我是一个初学者,我正在开发一个代码来可视化冠状病毒在全球的传播,我想从 GitHub Repo(csse_covid_19_data) 中提取 .csv 文件,其中一个新的.csv 文件每 2 天上传一次。 是否可以自动将最新的 csv 文件导入笔记本而不是手动下载文件?

我尝试过抓取数据,但没有帮助

import requests

url = 'https://github.com/CSSEGISandData/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_daily_reports/03-08-2020.csv'
response = requests.get(url)
print(response.text)

【问题讨论】:

标签: python web-scraping data-science


【解决方案1】:

解决方案 1:

此解决方案特定于您的用例:

使用下面的pip 命令安装PyGithub 包:

!pip install PyGithub

通过单击Generate new token 从此page 生成 Github API 令牌,并将该令牌作为字符串传递到以下代码中 token 的位置,以建立与 Github 的连接:

from github.MainClass import Github
g = Github(token)

现在您已使用您的凭据连接到 Github,您可以访问您的所有 repo 内容以及其他公共 repo。

加载您的 CSV 文件所在的存储库:

repo = g.get_repo("CSSEGISandData/COVID-19")

获取存储在您的CSV 文件所在目录中的文件对象列表:

file_list = repo.get_contents("csse_covid_19_data/csse_covid_19_daily_reports")

由于存储这些 CSV 文件的目录还包含一个 .gitignore 文件和一个 README.md 文件,并且文件命名的格式为“mm-dd-yyyy”,因此 README.md 出现在最后并且最后一秒的文件是您最近更新的文件。要访问它,请运行以下代码:

github_dir_path = 'https://github.com/CSSEGISandData/COVID-19/raw/master/csse_covid_19_data/csse_covid_19_daily_reports/'
file_path = github_dir_path  + str(file_list[-2]).split('/')[-1].split(".")[0]+ '.csv'

使用pandas的@​​987654337@方法从指定路径加载数据。

import pandas as pd
df = pd.read_csv(file_path, error_bad_lines=False)

解决方案 2:

如果你想手动指定路径,试试这个代码:

通过右击raw从Github获取你的CSV文件的路径,如下所示,并将其值分配给file_path

file_path = 'https://github.com/CSSEGISandData/COVID-19/raw/master/csse_covid_19_data/csse_covid_19_daily_reports/03-08-2020.csv'

使用pandas的@​​987654342@方法从指定路径加载数据:

import pandas as pd
df = pd.read_csv(file_path, error_bad_lines=False)

解决方案 3:

如果你想自动指定路径,试试这个代码:

设置一个您想要刷新代码的时间,并将下面给出的解决方案与之集成。

由于您知道存储最新文件的目录以及新文件添加到该目录的频率,因此您可以以 mm-dd-yyyy 格式动态更改当前日期的日期:

from datetime import date
file_date = str(date.today().strftime('%m-%d-%Y'))
file_date

输出:03-11-2020

同样,如果您想在昨天的日期运行代码,只需更改 file_date 的值即可:

from datetime import date, timedelta
file_date = str((date.today() - timedelta(days = 1)).strftime('%m-%d-%Y'))
file_date

输出:03-10-2020

由于当前在该目录中,最后上传的文件是 2020 年 3 月 9 日,因此我们将使用该日期:

from datetime import date, timedelta
file_date = str((date.today() - timedelta(days = 2)).strftime('%m-%d-%Y'))
file_date

输出:03-09-2020

动态生成文件路径:

github_dir_path = 'https://github.com/CSSEGISandData/COVID-19/raw/master/csse_covid_19_data/csse_covid_19_daily_reports/'
file_path = github_dir_path  + file_date + '.csv'

使用pandas的@​​987654351@方法从指定路径加载数据。

import pandas as pd
df = pd.read_csv(file_path, error_bad_lines=False)

【讨论】:

    【解决方案2】:

    用途:

    https://raw.githubusercontent.com/CSSEGISandData/COVID19/master/csse_covid_19_data/csse_covid_19_daily_reports/03-08-2020.csv [“原始”文本]

    例子:

    import requests
    
    url = 'https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports/03-08-2020.csv'
    resp = requests.get(url)
    print(resp.text)
    
    

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      • 2019-08-13
      • 2017-11-28
      • 2019-03-22
      • 1970-01-01
      相关资源
      最近更新 更多