Способы загрузки наборов данных в 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