如何将Scanpy运行sc.tl.rank_genes_groups得到的基因列表导出为.csv文件
你只需要将生成的DataFrame赋值给变量后调用pandas内置的to_csv方法即可导出完整结果,完整可运行代码如下:
import pandas as pd # 提取差异分析结果 result = adata_subset.uns['rank_genes_groups'] groups = result['names'].dtype.names # 生成包含所有差异信息的DataFrame deg_df = pd.DataFrame( {group + '_' + key[:1]: result[key][group] for group in groups for key in ['names','logfoldchanges','pvals','pvals_adj']} ) # 导出为csv文件 deg_df.to_csv("scanpy差异基因结果.csv", index=False, encoding='utf-8-sig')
参数说明
index=False:导出时不保留pandas自动生成的行索引,避免csv出现无用的序号列,需要保留的话可以删除该参数或者改为index=Trueencoding='utf-8-sig':保证包含特殊字符的基因名在Excel中打开时不会乱码,仅用做编程场景读取的话可以删除该参数使用默认编码
可选优化方案
如果你需要后续更方便地按细胞群筛选差异基因,可以将数据调整为长表格式再导出:
import pandas as pd result = adata_subset.uns['rank_genes_groups'] groups = result['names'].dtype.names deg_list = [] for group in groups: deg_list.append(pd.DataFrame({ "细胞群": group, "基因名": result["names"][group], "log2倍数变化": result["logfoldchanges"][group], "p值": result["pvals"][group], "校正后p值": result["pvals_adj"][group] })) full_deg_df = pd.concat(deg_list, ignore_index=True) full_deg_df.to_csv("按细胞群拆分的差异基因结果.csv", index=False, encoding='utf-8-sig')
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

