赞
踩
# -*- coding: utf-8 -*- """ Created on Wed Nov 28 18:06:39 2018 @author: windows10 """ import pandas as pd #from pandas import DataFrame as df #对ped碱基形式替换为数字形式 f = open('C:\\Users\\windows10\\Desktop\\Python练习\\文本流\\all.ped') data1 = pd.read_table(f,header = None) #header 默认为第一行 data1.shape #展示数据框的 行数和列数,如果数据为1,则对sep重新设置进行调节 data1.head() data11 = data1.iloc[:, 6:] data11[data11.isnull().values == True] data11 = data11.replace('A', 1) data11 = data11.replace('T', 2) data11 = data11.replace('C', 3) data11 = data11.replace('G', 4) print(data11) data12 = pd.concat([data1.iloc[:, :6],data11],axis = 1) print(data12) data12.shape data12.head(20) #抽取map第一条染色体多行的SNP位点,并按照位置顺序进行排列 f = open('C:\\Users\\windows10\\Desktop\\Python练习\\文本流\\all.map') data2 = pd.read_table(f,names=['1', '2', '3', '4']) #header 默认为第一行 data2.shape #展示数据框的 行数和列数,如果数据为1,则对sep重新设置进行调节 data2.head() data2.iloc[:,1] #map文件的首列 data2.iloc[:,1].shape print(type(data2)) data2.iloc[5,1] type(data2.iloc[5,1]) #确定元素类型 data2 = data2.astype('object') #转化元素类型为object类 print(data2['1']) data21 = data2[data2['1'] == '8'] #‘1’为字符串,加‘’,选取map文件里的所有2号染色体上的位点 data21.head() data21.values data21['1'] data21.index #查看行索引 data21.columns #查看列索引 data21.values #查看数据框的值 data21.dtypes #查看每列的数据类型 data21['4'].astype('int64') #转化第四列为数值型,才能排序 data22 = data21.sort_values(by = '4') #by 后直接跟index data22.shape data22.head(500) list = data22['2'] list = list.tolist() #将第二列数据(第N条染色体上的SNP name)传递到列表 list #为ped文件创建col.name li = [] for j in range(0,68516): #把SNP位点列表转化为ped的column名 li.append(data2.iloc[j,1]) li.append(data2.iloc[j,1]) print(li) st = ['FMID', 'INID', 'FAID', 'MOID', 'SEX', 'H'] #为ped文件创建前6列 表头 st lis = st + li #前6列表头和ped7::个表头合并,创建完整的ped表头 lis[:10] len(lis) #修改data12的列名 data12.columns = lis #为ped文件创建表头 data12.head(20) data12.shape #对1号染色体多行的位点从ped 文件中提取 #按照map文件中1号染色体,排好序的SNP,逐个对list中SNP进行提取 data12['WUR10000127'] type(data12['WUR10000127']) newdf = data12.iloc[:, :6] #提取ped文件表头 newdf for k in list: #从ped文件里提取第N条染色体上的SNP位点,并组成新的数据框 newdf = pd.concat([newdf,data12[k]],axis = 1) #Axis = 1代表逐列合并(按列合并) newdf.columns newdf.to_excel("C:\\Users\\windows10\\Desktop\\Python练习\\文本流\\chrom8_ped.xlsx", index = False, header = True) data22.to_excel("C:\\Users\\windows10\\Desktop\\Python练习\\文本流\\chrom8_map.xlsx", index = False, header = True) # 流程化操作需要修改的地方,如下: ### 42: data2['1'] == ### 87: newdf.to_exce ### 88: data22.to_excel
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。