首页 > 解决方案 > 有没有办法将 csv 文件从 github 自动导入到我的 jupyter notebook

问题描述

我是一名初学者,我正在开发一个代码来可视化全球冠状病毒的传播,我想从GitHub 存储库 ( csse_covid_19_data )中提取 .csv 文件,其中每 2 天上传一个新的 .csv 文件。是否可以将最新的 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)

标签: pythonweb-scrapingdata-science

解决方案


解决方案1:

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

使用以下命令安装PyGithub包:pip

!pip install PyGithub

从此页面生成 Github API 令牌,方法是单击Generate new token并将该令牌作为字符串传递到以下代码中的位置,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'

read_csv()使用pandas的方法从指定路径加载数据。

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

解决方案2:

如果要手动指定路径,请尝试以下代码:

通过右键单击从 Github 获取 CSV 文件的路径,raw如下所示,并将其值分配给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'

read_csv()使用pandas的方法从指定路径加载数据:

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

动态生成 file_path:

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'

read_csv()使用pandas的方法从指定路径加载数据。

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

推荐阅读