Scipy обрабатывает большие данные - PullRequest
0 голосов
/ 03 июня 2018

У меня есть набор данных, который содержит только один столбец (серия Панд).Набор данных представляет собой файл .dat, который содержит около 2 000 000 строк и 1 столбец (166 МБ).Чтение этих данных с помощью pd.read_csv занимает около 7-8 минут.Эти данные являются сигналом, который необходимо обработать (используя scipy.signal).Поэтому, когда я обрабатываю данные, я получаю MemoryError.Есть ли способ ускорить загрузку файла и увеличить скорость его обработки (scipy.signal.ellip) и обойти проблему с памятью?Заранее спасибо.Загрузка данных:

data = pd.read_csv('C:/Users/HP/Desktop/Python and programming/Jupyter/Filter/3200_Hz.dat', 
sep='\r\n', header=None, squeeze=True)

Обработка данных (тоже занимает около 7 минут):

b, a = signal.ellip(4, 5, 40, Wn, 'bandpass', analog=False)
output = signal.filtfilt(b, a, data)
#after that plotting 'output' with plt

Пример ввода данных:

6954
 25903
 42882
 17820
  3485
-11456
  4574
 34594
 25520
 26533
  9331
-22503
 14950
 30973
 23398
 41474
  -860
 -8528

1 Ответ

0 голосов
/ 03 июня 2018

Вы устанавливаете '\r\n' в качестве разделителя, что означает (если я правильно понимаю), что каждая строка равна новому столбцу.Это означает, что вы получите миллионы столбцов, а аргумент squeeze ничего не делает.

Не устанавливайте аргумент sep (оставьте его по умолчанию): новые строки разделяют записи, а squeeze затем возвращает его в Series.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...