Есть ли способ автоматически импортировать CSV-файл из GitHub в мой блокнот Jupyter - PullRequest
0 голосов
/ 10 марта 2020

Я новичок, и я разрабатываю код для визуального распространения коронирусного вируса в глобальном масштабе. Я хочу извлечь файл .csv из GitHub Repo ( csse_covid_19_data ) где новый файл .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)

Ответы [ 2 ]

4 голосов
/ 11 марта 2020

Решение 1:

Это решение специально c для вашего случая использования:

Установите PyGithub пакет, используя ниже pip команда:

!pip install PyGithub

Сгенерируйте токен Github API из этой страницы , нажав Generate new token и передайте этот токен в виде строки в приведенном ниже коде вместо token для Установить sh соединение с Github:

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

Теперь вы подключены к Github, используя свои учетные данные, и вы можете получить доступ ко всему содержимому репозитория, а также к другим публикациям c репо.

Загрузить репозиторий, в котором хранятся ваши 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:

Попробуйте этот код, если вы хотите указать путь вручную:

Получите путь к вашему CSV-файлу из Github, щелкнув правой кнопкой мыши на raw, как показано ниже, и назначьте его значение для file_path:

enter image description here

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:

Попробуйте этот код, если вы хотите указать путь автоматически:

Установите время, когда вы хотите обновить sh ваш код и интегрируйте с ним приведенное ниже решение.

Поскольку вы знаете каталог, в котором хранятся последние файлы, и как часто новые файлы добавляются в этот каталог, вы можете просто изменить дату динамически для текущей даты в формате мм-дд-гггг:

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

Поскольку в данный момент в этом каталоге находится последний файл загружено 9 марта 2020 года, поэтому мы собираемся использовать эту дату:

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)
2 голосов
/ 10 марта 2020
...