Способы загрузки наборов данных в Yandex DataSphere
За удобство облачных сервисов приходится расплачиваться некоторыми особенностями работы с удаленной машиной. Одной из них является загрузка данных для работы. В целом имеются различные способы решения этой проблемы, на них мы и остановимся в этой статье.
Чтение массива по ссылке средствами Pandas
Вызываем функции (например, pd.read_csv, pd.read_excel) с адресом в качестве параметра:
import pandas as pd df = pd.read_csv('https://covid.ourworldindata.org/data/owid-covid-data.csv') df.head()
Закачка файла в облако из локального компьютера
Жмете соответствующую кнопку на панели в левой верхнем углу и выбираете файл:
Закачка файла в облако по ссылке в Интернете
Сработают и некоторые команды работы с Bash:
!mkdir data !wget -O data/covid.csv https://covid.ourworldindata.org/data/owid-covid-data.csv
Клонирование проекта из Git репозитория
Для этого достаточно создать ячейку и набрать команду:
!git clone 'имя_репозитория.git' 'путь_к_папке'
Закачка из Yandex Disk
О ней подробнее можно прочитать здесь. В статье разберем кейс загрузки файла. Обращаемся в раздел Snippets (там можно одним кликом создать ячейку для решения различных сценариев закачивания данных) и выбираем Yandex Disk-> Get file:
Появляется ячейка c необходимыми командами и инструкциями. Например, сказано, что перед запуском создается приложение (после потребуется ввести его id и secret, а также код подтверждения):
from cloud_ml.storage.api import Storage # To retrieve application id and secret: # 1. Go to link: https://oauth.yandex.ru/client/new # 2. Choose 'Web services' # 3. Paste into 'Callback URI': https://oauth.yandex.ru/verification_code # 4. Set up permissions on yandex disk disk = Storage.ya_disk(application_id='2acx80e1xxxxxxxxxxxe0f0', application_secret='222xxxxxff') # downloading contents of the remote file into the local one disk.get('data/mini.txt', 'data.txt')
Распаковка
Зачастую папки и файлы распространяются в виде архивированных файлов, поэтому вам могут пригодиться следующие ячейки:
import zipfile from tqdm import tqdm fname = './AEP_hourly.csv.zip' path = './' with zipfile.ZipFile(fname, 'r') as zf: for entry in tqdm(zf.infolist(), desc='Extracting '): try: zf.extract(entry, path) except zipfile.error as e: pass
#!:bash tar -xvf имя.tar.gz rm -rf имя.tar.gz