前言
由于学习的需要最近要使用到MIT的RealityMining数据集(数据是mat格式),对于习惯使用python的自己还是比较麻烦的,所以在使用之初就想着怎么把mat文件转换为csv,在转换的过程中也尝试使用python调用matlab的接口用于转换时间的格式。
数据地址
http://realitycommons.media.mit.edu/realitymining4.html
使用的数据
RealityMining数据集中包含两个部分,一个部分是s,另一部分是network。s中包含了106个数据样本的各种通信信息以及问卷调查信息,network中包含了朋友关系的标注信息等。我使用到的信息为s.comm和network.friends,其中s.comm中包含了每一个数据样本(人)的通信信息:通信日期,通信人,通信形式等。
转换代码
python
import scipy.io as sio
import matlab.engine
import time
from datetime import datetime
def save_to_local_communication_data(dataPath, savePath):
eng = matlab.engine.start_matlab() # 启动matlab引擎
'''
数据保存格式:人员,时间,联系人,联系方式,方向,持续时间
'''
data = sio.loadmat(dataPath)
s = data['s']
length_s = s.shape[1]
# length_s_n_comm = s[0][0][0].shape[1]
print(length_s)
# print(length_s_n_comm)
with open(savePath, "w", newline="") as csvfile:
csvfile.write('people' + ',' + 'date' + ',' + 'contact' + ',' + 'description' + ',' + 'direction' + ',' +
'duration' + '\n')
for i in range(length_s):
length_s_comm_temp = s[0][i][0].shape[1]
if not length_s_comm_temp == 0:
for j