Преобразование выходных данных matlab (.mat) в фрейм данных в python

#python #multidimensional-array #data-structures #numpy-ndarray #mat

#python #многомерный массив #структуры данных #numpy-ndarray #мат

Вопрос:

Я пытаюсь преобразовать данные в .mat в структуру данных. Я не знаком со структурой данных и типами данных Python и не смог этого сделать. Предоставляются необработанные данные (~ 11 МБ).

https://drive.google.com/file/d/1G37OvlR0BEab9LoE2niC_q8rxB-h8h0m/view?usp=sharing

Сначала я использовал scipy.io чтобы загрузить данные mat.

 mat_struc = scipy.io.loadmat('WE-CANPlumeEvolve_GEOSCHEMv1207.mat')
 

Затем я пытался получить доступ к временным рядам данных сопоставления, которые я хочу, с помощью

 conc = mat_struc['S']['Conc']
 

Но структура данных довольно странная. Он состоит из массива из нескольких массивов. Не уверен, как с этим справиться, чтобы я выполнил некоторые повторные запросы и получил доступ к данным с помощью

 conc = (mat_struc['S']['Conc']).item().item()
 

Не уверен, что это правильный способ сделать это, но кажется, что функция .item() помогает мне получить доступ к данным, но также теряет информацию об имени. Итак, я получаю cnames с помощью

 cnames = mat_struc['S']['Cnames'].item()
 

С помощью этих двух сведений мы должны получить фрейм данных с помощью Pandas, но я не уверен, как получить доступ к значениям в conc и именам в cnames, поскольку они ndarray со странными типами. Любые предложения будут оценены!

Для людей, которые могут быть обеспокоены безопасностью данных. Вот пример того, что я получил для conc и cnames .

 conc = (array([[1],
       [1],
       [1],
       ...,
       [1],
       [1],
       [1]], dtype=uint8), array([[0.00000000e 00],
       [1.11983793e-38],
       [5.73291534e-38],
       ...,
       [1.71523142e-04],
       [1.70508819e-04],
       [1.69944975e-04]]))

cnames = array([array(['ONE'], dtype='<U3'), array(['RO2'], dtype='<U3'),
                array(['NH3'], dtype='<U3'), array(['RCOOH'], dtype='<U5')],
                dtype=object)
 

Я ожидал чего-то подобного в фрейме данных panda.

 'cname1'  'cname2'
1          1
2          2
3          3
4          4
5          5