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

如何将CSV格式EEG数据转换并使用Python-MNE进行分析?

解决CSV格式EEG数据导入MNE并转换为.set格式的方法

一、直接将CSV导入MNE分析(无需转换格式)

MNE虽不直接支持读取CSV,但可通过手动构建数据结构完成加载,这是最高效的方式,步骤如下:

  1. 读取CSV数据
    用pandas读取文件,假设你的CSV是每行对应一个时间点,每列对应一个电极通道(最常见结构):

    import pandas as pd
    import numpy as np
    
    # 读取CSV,假设第一行是通道名,第一列是时间戳(如有)
    df = pd.read_csv("your_eeg_data.csv")
    # 提取EEG数据:去掉时间戳列,转置为MNE要求的(n_channels, n_samples)形状
    eeg_data = df.drop("timestamp", axis=1).values.T
    
  2. 构建MNE的Info对象
    Info对象包含通道名、采样率、通道类型等核心信息,必须手动定义:

    import mne
    
    # 匹配CSV中的通道名
    ch_names = df.drop("timestamp", axis=1).columns.tolist()
    # 定义通道类型(全为EEG则生成对应列表)
    ch_types = ["eeg"] * len(ch_names)
    # 设置采样率(根据实验实际值填写,例如250Hz)
    sfreq = 250
    
    # 创建Info对象
    info = mne.create_info(ch_names=ch_names, sfreq=sfreq, ch_types=ch_types)
    
  3. 创建MNE Raw对象
    用提取的数据和Info对象构建Raw,即可使用MNE的所有分析功能:

    # MNE要求数据为float64类型,若原始数据单位是伏,需转为微伏(乘以1e6)
    raw = mne.io.RawArray(eeg_data.astype(np.float64), info)
    # 可选:设置参考电极,例如平均参考
    raw.set_eeg_reference("average", projection=True)
    

二、将CSV转换为EEGLAB的.set格式

若确实需要转成.set格式,只需在得到Raw对象后,调用MNE的保存方法:

# 将Raw对象导出为EEGLAB的.set格式
raw.export("converted_eeg.set", fmt="eeglab")

后续可直接用EEGLAB打开该文件,或通过MNE重新加载:

raw_from_set = mne.io.read_raw_eeglab("converted_eeg.set", preload=True)

注意事项

  • 确认CSV数据结构:如果是每行对应一个通道,每列对应时间点,提取数据时无需转置,直接用eeg_data = df.values。
  • 采样率、通道名必须与实验实际参数一致,否则会导致分析结果偏差。
  • 若CSV包含事件标记(如刺激触发信号),需单独提取事件列,通过mne.events_from_annotations()或手动构建事件数组关联到Raw对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:52:24