Как загрузить файл .mat и преобразовать его в файл .csv? - PullRequest
1 голос
/ 02 мая 2019

Я хотел загрузить файл .mat и преобразовать его в файл .csv.

Это для терминала MacOS, работающего на python3.7. В прошлом я загружал файлы .csv и .dat. Ниже приведен код, который я написал для вышеуказанной задачи.

mat_274 = load('ecgca274_edfm.mat')
T = struct2table(mat_274)
writetable(T, 'ecgca274_edfm.csv', 'Delimiter', ',')
print(mat_274)

После запуска вышеуказанного кода я получаю следующую ошибку

Traceback (most recent call last):
  File "bayesian3.py", line 1, in <module>
    mat_274 = load('ecgca274_edfm.mat')
NameError: name 'load' is not defined

Может ли кто-нибудь помочь исправить ошибки или предложить новый способ решения этой задачи преобразования? Спасибо

Ответы [ 2 ]

2 голосов
/ 02 мая 2019

В scipy есть функция для этой операции, как описано в их документации: https://docs.scipy.org/doc/scipy/reference/generated/scipy.io.loadmat.html

import scipy.io
mat_274 = scipy.io.loadmat( 'ecgca274_edfm.mat' )

Однако, она также очень требовательна к версии MATLAB, используемой для генерации * .matфайл.В приведенной выше ссылке есть следующее предупреждение:

v4 (Level 1.0), v6 and v7 to 7.2 matfiles are supported.

You will need an HDF5 python library to read MATLAB 7.3 format mat files. 
Because scipy does not supply one, we do not implement the HDF5 / 7.3 interface here.

Один из возможных способов обойти эту проблему - сохранить ее как более старую версию мата в MATLAB.Следующая команда должна сделать это (в MATLAB):

save( 'ecgca274_edfm.mat', '-v7' )
0 голосов
/ 08 мая 2019

Я нашел ответ на мой вопрос выше. Фрагмент кода выглядит следующим образом.

import pandas as pd
from scipy.io import loadmat

data_dict = loadmat('ecgca274_edfm.mat')
data_array = data_dict['val']
data_array = data_array.transpose(1, 0)
df = pd.DataFrame(data_array,
                  columns=['ch'+str(n) for n in range(1,7)])

Вместо преобразования в csv, как я спросил в исходном вопросе, я преобразовал его в фрейм данных для дальнейшей обработки.

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