python - 有没有办法将 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)
解决方案
解决方案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)
推荐阅读
- php - 无法更新codeigniter中的数据库记录
- javascript - 如何在正文链接中将当前路径结尾附加到 href
- python - 删除json文件中的某个值
- templates - 无法从 helm 子图中找到全局值
- r - 通过 R 在 Digital Ocean 中部署 Plumber API 时出错 | 使用 ssh 服务器的身份验证失败
- ms-word - Word.CustomXMLPart API 中的“namespaceMappings”是什么意思
- python - PyCharm 返回解码错误,但在命令行中运行不会
- android - “沉浸式模式”安卓应用。所有文档均已弃用
- c# - Blazor WebAssembly 加载 Azure 存储 Blob 问题:响应 x-ms-client-request-id '' 与原始预期请求 id '' 不匹配
- java - Gson 错误:“预期为 BEGIN_ARRAY,但在第 1 行第 2 列路径为 BEGIN_OBJECT”