美文网首页
python txt文件的数据筛选

python txt文件的数据筛选

作者: 会思考的Groot | 来源:发表于2020-04-19 18:10 被阅读0次

之前已经分享完python的数据类型和数据结构了,我认为掌握了这两方面内容其实已经具备使用python进行数据分析的能力了,但实际情况是你经常会发现你看了很多python的基础内容,而当你要使用时还是发现无从下手(哈哈,因为我一开始是这样),那是因为你缺少实战经验,实战才是学习掌握python的最快办法。所以要从零开始学习python,有目的的边查边写能够让你迅速掌握python。在整理写作过程中也发现了一个非常好的python学习资源,介绍的非常详细,链接如下:

Python - 100天从新手到大师
https://github.com/jackfrued/Python-100-Days

这个链接的内容较多,但没有太大的目的性,我今天的主要目的就是利用python进行数据筛选。情况是这样的,我目前有20个.txt文件(假设名为1.txt - 20.txt),各个文件内容如下:

1.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文件,无需调用模块

原文详细说明链接:https://mp.weixin.qq.com/s?__biz=MzUzNjA5MzA1Nw==&mid=2247483693&idx=1&sn=8b0759e2b86182aa64bf7e103950eac0&chksm=fafac9c3cd8d40d5fe7b131210485bdf2e33103f6eed73f85db680bab75e5ff499fd466aab25&token=665225232&lang=zh_CN#rd

相关文章

网友评论

      本文标题:python txt文件的数据筛选

      本文链接:https://www.haomeiwen.com/subject/tkfbbhtx.html