之前已经分享完python的数据类型和数据结构了,我认为掌握了这两方面内容其实已经具备使用python进行数据分析的能力了,但实际情况是你经常会发现你看了很多python的基础内容,而当你要使用时还是发现无从下手(哈哈,因为我一开始是这样),那是因为你缺少实战经验,实战才是学习掌握python的最快办法。所以要从零开始学习python,有目的的边查边写能够让你迅速掌握python。在整理写作过程中也发现了一个非常好的python学习资源,介绍的非常详细,链接如下:
Python - 100天从新手到大师
https://github.com/jackfrued/Python-100-Days
这个链接的内容较多,但没有太大的目的性,我今天的主要目的就是利用python进行数据筛选。情况是这样的,我目前有20个.txt文件(假设名为1.txt - 20.txt),各个文件内容如下:
我想筛选每个文件中p小于0.05,foldchange绝对值大于2的所有行,并分别输出(要是熟悉RNA-seq其实就是差异基因的筛选)
代码如下:
#!/usr/bin/env python3
excel_name = []
for i in range(1,4):
excel_name.append(str(i) + '.' + 'txt')
print(excel_name)
for j in excel_name:
fl = str(j[:-3]) + 'DEG.txt'
DEG = open(fl, 'w')
DEG.write('gene' + '\t' + 'sample_1' + '\t' + 'sample_2' + '\t' + 'value1' + '\t' + 'value2' + '\t' + 'foldchange' + '\t' + 'p' + '\t' + 'q' + '\n')
with open (j) as a:
next(a)
for i in a:
ii = i.strip().split('\t')
if float(ii[6]) < float(0.05) and abs(float(ii[5])) >= int(1):
DEG.write(str(ii[0]) + '\t' + str(ii[1]) + '\t' + str(ii[2]) + '\t' + str(ii[3]) + '\t' + str(ii[4]) + '\t' + str(ii[5]) + '\t' + str(ii[6]) + '\t' + str(ii[7]) + '\n')
print('done')
该脚本能帮你掌握的内容:
for-in 循环的使用 for j in excel_name:
range(),append(),write(),next(),strip(),split() 的使用
索引的使用 ii[6]
切片的使用 j[:-3]
文件的读取 with open (j) as a:与输出 DEG = open(fl, 'w')
if语句进行判断
运算符的使用
正则表达式 \t ,\n
若无经验,使用方法可参考 Python - 100天从新手到大师
此外注意:在python中有两个模块(pandas,numpy)可用于处理excel文件,处理文件更高效,该脚本主要是为了处理txt文件,无需调用模块