You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何一次性读取加载多个.mat文件并转换为Python Pandas DataFrame?

一次性读取多个.mat文件并转换为Pandas DataFrame的方法

所需依赖库

先确保安装必要工具库:

pip install pandas scipy

实现步骤与代码

1. 导入核心库

import os
import pandas as pd
from scipy.io import loadmat

2. 编写单个.mat文件转DataFrame的函数

负责加载单个.mat文件,过滤元数据并提取有效数据:

def mat_to_df(mat_file_path):
    mat_data = loadmat(mat_file_path)
    # 排除.mat自带的元数据键(如__header__、__version__)
    valid_keys = [k for k in mat_data.keys() if not k.startswith('__')]
    # 假设每个.mat文件含一个目标数据集,取第一个有效键对应的数据
    # 若有多个数据集,可直接指定键名,比如mat_data['your_target_key']
    raw_data = mat_data[valid_keys[0]]
    
    # 适配不同数据结构:
    # 普通二维数组直接转DataFrame
    df = pd.DataFrame(raw_data)
    # 结构化数组(含字段名)用from_records保留列名
    # df = pd.DataFrame.from_records(raw_data)
    
    # 可选:手动设置列名
    # df.columns = ['col1', 'col2', ...]
    return df

3. 批量读取并合并所有.mat文件

遍历目标文件夹下的.mat文件,读取后合并为完整DataFrame:

def load_all_mat_files(folder_path):
    # 获取所有.mat文件的完整路径
    mat_file_paths = [
        os.path.join(folder_path, filename) 
        for filename in os.listdir(folder_path) 
        if filename.endswith('.mat')
    ]
    
    # 逐个读取并收集DataFrame
    df_collection = []
    for file_path in mat_file_paths:
        df = mat_to_df(file_path)
        df_collection.append(df)
    
    # 合并所有DataFrame,重置行索引
    combined_df = pd.concat(df_collection, ignore_index=True)
    return combined_df

4. 使用示例

替换为你的.mat文件所在文件夹路径即可运行:

# 替换为实际文件夹路径
target_folder = '/your/mat/files/directory'
final_dataframe = load_all_mat_files(target_folder)

# 查看合并结果前5行
print(final_dataframe.head())

注意事项

  • 若不同.mat文件列结构不一致,pd.concat会自动为缺失列填充NaN,需提前统一列结构或筛选文件
  • 若数据为非二维结构(如三维数组),需先调整维度(提取切片、展平等)再转换
  • 结构化数组类型的.mat文件,用pd.DataFrame.from_records()可直接保留原字段名作为列名

内容的提问来源于stack exchange,提问作者jasmine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 07:55:33