2022.4.5增加说明====
鉴于很多读者询问代码没作用的问题,做一下解释
cwru数据集的目录如这样
子目录
file_path需要修改为自己的CWRU数据集的路径
save_file_path需要修改为转换之后需要保存的转换为csv文件后的保存路径
记得路径后面 ‘\\’
然后代码运行之后没提示需要等一会转换要很久
import os
import pandas as pd
import scipy
from scipy import io
import numpy as np
if __name__=='__main__':
file_path = r"F:/cwru/" # mat文件路径
save_file_path = r"F:/csv/" # 保存路径
file_type = '.csv' # 保存文件格式
# 取得目录下所有的文件名
dirnames = []
files = []
print('转换开始')
for _, dirnames, _ in os.walk(file_path):
for dirname in dirnames:
temp_path = file_path + dirname + '/'
for _, _, x in os.walk(temp_path):
files = x
# 读取数据
for i in range(len(files)):
print('转换中')
features = {}
features_struct = scipy.io.loadmat(temp_path + str(files[i])) # 读取文件
for key in features_struct:
if isinstance(features_struct[key], np.ndarray) and (('time' in key)):
# 读取振动信号数据
features[key] = np.squeeze(features_struct[key])
elif 'RPM' in key:
# 读取转速,转速放到文件名中
rpm = features_struct[key]
files[i] = files[i] + '-' + key + '-' + str(rpm[0])
# 保存文件
dfdata = pd.DataFrame.from_dict(features, orient='index').T
# dfdata = pd.DataFrame(features).T 可以转置行列顺序
if not os.path.exists(save_file_path + dirname + '/'):
os.makedirs(save_file_path + dirname + '/')
dfdata.to_csv(save_file_path + dirname + '/' + files[i] + file_type, index=False)
print('转换完成')