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=0
                    data = 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_data
                else:
                    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] = data

                print(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():中的内容替换为以上的内容,就可读取不同格式的数据集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pitepa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值