如何用pandas正确读取plink关联分析输出以提取P值绘制QQ图
PLINK关联分析结果文件正确读取方法
错误原因说明
PLINK默认输出的关联分析结果是多空格分隔的固定宽度对齐文本,不是制表符分隔格式,你之前指定sep='\t'的读取逻辑不符合文件的实际分隔规则,所以会出现所有列被合并为单个字段的异常情况。
可行读取方案
方案1:全表正确读取
直接用pandas的read_csv匹配任意多空白字符作为分隔符即可:
import pandas as pd # sep='\s+' 表示匹配1个或多个任意空白字符(空格、制表符都可识别) df = pd.read_csv("你的结果文件路径", sep='\s+')
读取后可以执行print(df.columns)验证列名是否正确拆分,执行print(df.head())查看前几行数据是否符合预期。
方案2:仅读取P值(大文件更高效)
如果你只需要最后一列的P值绘制Q-Q图,可以直接指定仅加载目标列,减少内存占用,避免大文件加载卡顿:
import pandas as pd # usecols直接指定要加载的列名,无需读取全表 df_p = pd.read_csv("你的结果文件路径", sep='\s+', usecols=['P']) # 过滤掉P值为NA的无效行,可直接用于后续绘图 p_values = df_p['P'].dropna()
额外注意事项
如果文件开头有PLINK生成的注释行(以#开头的说明行),可以额外加参数comment='#'跳过注释,避免读取报错:
df = pd.read_csv("你的结果文件路径", sep='\s+', comment='#')
内容的提问来源于stack exchange,提问作者Marcello Zago
相关产品推荐
相关产品推荐

