numpy.DataSource

class numpy.DataSource(destpath='.')

Класс DataSource() создает файловый объект из указанного источника данных.

Источником данных могут быть как локальные так и сетевые файлы, которые так же могут быть сжаты. Все низкоуровневые операции скрыты "под капотом", что довольно удобно, так как позволяет без лишней "возни", просто получить файловый объект.

Параметры:
destpath - строка или None, (необязательный параметр).
Задает путь к каталогу в который загружается исходный файл для дальнейшего использования. Если указано None, то будет создан временный каталог. По умолчанию используется текущий каталог.
Методы:
abspath(path) - возвращает абсолютный путь к файлу.
Если path это url-адрес, то будет возвращена строка с локальным местоположением файла или строка с местоположением, в котором данный файл будет существовать после открытия методом open(). Данный метод основан на os.path.abspath.
exists(path) - проверяет наличие пути к указанному источнику данных.
Проверяет наличие пути к указанному источнику данных. Будет возвращено True если локальный файл существует или если файл либо доступен либо уже загруженн по url в директорию path класса DataSource.
open(path[, mode, encoding, newline]) - открывает и возвращает файлоподобный объект (_io.TextIOWrapper).
  • Если path является url-адресом, то он будет загружен и сохранен в каталоге, который указан в параметре path класса DataSource и открыт оттуда.
  • Параметр mode (необязательный) определяет режим открытия файла и может принимать следующие значения: 'r' - для чтения (по умолчанию), 'w' - для записи, 'a' - для добавления.
  • Параметр encoding может быть либо None либо строкой с кодировкой, открываемого файла. По умолчанию будет соответствовать той кодировке, что указана в io.open.
  • Параметр newline может быть либо None либо новой строкой при чтении текстового файла.


Примеры

Мне кажется, что данный пример не совсем удачен, так как выглядит довольно сложным и неуклюжим. Но имейте ввиду, что в определенных обстоятельствах и при некоторой сноровке, данный способ может оказаться намного удобнее чем остальные способы загрузки данных. Попробуем загрузить набор данных dots.csv пакета seaborn:

>>> import numpy as np
>>> 
>>> data = np.DataSource('example')
>>> 
>>> 
>>> seaborn_dots = data.open('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/dots.csv')
>>> seaborn_dots
<_io.TextIOWrapper name='/home/n1/example/raw.githubusercontent.com/mwaskom/seaborn-data/master/dots.csv' mode='r' encoding='UTF-8'>
>>> 
>>> 
>>> np.loadtxt(seaborn_dots,
...            dtype = np.dtype([('time','i2'),('coherence','f2'),('firing_rate','f4'),]),
...            skiprows = 1, usecols=(2,3,4), delimiter = ',')
array([(-80, 51.2, 34.98757 ), (-60,  0. , 32.868526),
       (-60,  3.2, 35.11905 ), ..., (300, 12.8, 28.51153 ),
       (300, 25.6, 27.009804), (300, 51.2, 30.959303)],
      dtype=[('time', '<i2'), ('coherence', '<f2'), ('firing_rate', '<f4')])