pycharm读取不同格式的数据集用于神经网络模型训练
1.读取.mat文件
读取的CWRU数据集为例
def capture():files = {}for i in filenames:file_path = os.path.join(d_path, i)file = loadmat(file_path)file_keys = file.keys()for key in file_keys:if 'DE' in key:files[i] = file[key].ravel()print(files[i][-10:]) # 打印最后10个数据点作为检查return files
2.读取.xlsx文件
def capture():files = {}filenames = [f for f in os.listdir(d_path) if f.endswith('.xlsx')]for filename in filenames:file_path = os.path.join(d_path, filename)data = pd.read_excel(file_path)column_data = data.iloc[:2457600, 0].values.ravel() # 只读取第一列的数据files[filename] = np.array(column_data) # 将第一列数据存储到字典中print(files[filename][-10:]) # 打印最后10个数据点作为检查print(f"处理文件: {filename}, 已添加到files字典中")return files # 返回包含所有文件第一列数据的字典
3.读取.txt 文件
def capture():files = {}if d_path == "../data_txt/0HP":print(d_path)for i in filenames:file_path = os.path.join(d_path, i)# 检查文件是否为txt文件,确保我们只处理txt文件if file_path.endswith('.TXT'):# 使用pandas读取txt文件,假设第一列没有标题,否则使用header=0data = pd.read_csv(file_path, sep='\t' or ', ', header=None) # 根据txt文件的实际分隔符选择'sep'# 提取第2列并展平为一维数组first_column_data = data.iloc[:, 1].values.ravel()files[i] = first_column_dataelse:print(f"跳过非txt文件: {i}")return files
4.读取.csv文件
def capture():files = {}if d_path == "../data_me/0HP":print(d_path)filenames = [f for f in os.listdir(d_path) if f.endswith('.csv')]for filename in filenames:file_path = os.path.join(d_path, filename)data = pd.read_csv(file_path)data = data.iloc[1:, 1]data = np.array(data)# 使用文件名作为字典的键files[filename] = dataprint(files[filename][-10:])print(f"处理文件: {filename}, 已添加到files字典中")return files
5.读取.xls文件(将多个文件合并为一个工况)
#根据文件名的第一个数字对文件进行分类,并将属于同一类的文件数据合并在一起,最终以文件名的第一个数字为键保存到字典中。
def capture():files = {}if d_path == "../data_xls/0HP":print(d_path)filenames = [f for f in os.listdir(d_path) if f.endswith('.xls')]for filename in filenames:# 提取文件名的第一个数字作为分类依据first_digit = filename[0]file_path = os.path.join(d_path, filename)data = pd.read_csv(file_path, encoding='gbk', sep='\t')data = data.iloc[:, 0] # 假设你只需要第一列数据data = np.array(data)# 将第一个数字作为键,并添加 .xls 后缀key = f"{first_digit}.xls"if key not in files:files[key] = []# 将当前文件的数据追加到对应分类的列表中files[key].append(data)print(f"处理文件: {filename}, 已添加到 {key} 类中")# 将每个类别的数据合并成一个 NumPy 数组for key in files:files[key] = np.concatenate(files[key], axis=0)# 打印每个类别的最后10个数据for key in files:print(f"类别 {key} 的最后10个数据: {files[key][-10:]}")return files
完整代码程序可在 完整读取程序下载,将 def capture():中的内容替换为以上的内容,就可读取不同格式的数据集。