如何在python中获取文本文件中的统计信息

约翰

我有一个像小例子一样的大文本文件:

小例子:

chr1    10385347    10385379    11  chr1    10000000    11000000
chr1    10385348    10385379    40  chr1    10000000    11000000
chr1    10385348    10385379    40  chr1    10000000    11000000
chr1    10385348    10385379    381 chr1    10000000    11000000
chr1    10561009    10561040    12  chr1    10000000    11000000
chr1    10561009    10561040    24  chr1    10000000    11000000
chr1    10647768    10647799    68  chr1    10000000    11000000
chr1    10958095    10958126    17  chr1    10000000    11000000
chr1    11196862    11196893    39  chr1    11000000    12000000
chr1    11921548    11921579    56  chr1    11000000    12000000
chr1    13967589    13967620    111 chr1    13000000    14000000
chr1    15290638    15290669    11  chr1    15000000    16000000
chr1    15587268    15587299    32  chr1    15000000    16000000
chr1    15587268    15587299    13  chr1    15000000    16000000

我想计算第 6 列和第 7 列相同的行数。然后创建一个新文件,其中4 columns包含“ column5”、“ column6”、“ column7”、“ count”。小示例的输出如下所示:

预期输出:

chr1    10000000    11000000    8
chr1    11000000    12000000    2
chr1    13000000    14000000    1
chr1    15000000    16000000    3

我正在尝试这样做python并编写了以下代码:

file = open('infile.txt', 'rb')
line = []
for i in file:
    line.append(i.split())
    count = 0
    new_list = []
    for j in range(len(line)):
        if line[j] == line[j-i]:
            count+=1
            new_list.append(count)

with open(outfile, "w") as f:
    for item in new_list:
        f.write("%s\n" % item)

但它不会返回我期望的输出。你知道怎么修吗?

融化的松饼

您可能要考虑的一种方法是将文本文件作为 Pandas 数据框加载,然后使用库函数从那里开始工作。一个警告是,这种方法对于非常大的数据集会很慢。

您将需要按如下方式导入的 Pandas 和 Numpy 库

import numpy as np
import pandas as pd

接下来,您可以将数据作为数据框导入。

#Passing `names = ['column1','etc']` as an argument lets us define the headers to be used for each column
#As the name suggests, `delim_whitespace=True` makes whitespace the delimiter.
df = pd.read_csv('filename.txt',names=['column1','column2','column3','column4','column5','column6','column7'], delim_whitespace=True)

它生成以下数据帧:

   column1   column2   column3  column4 column5   column6   column7
0     chr1  10385347  10385379       11    chr1  10000000  11000000
1     chr1  10385348  10385379       40    chr1  10000000  11000000
2     chr1  10385348  10385379       40    chr1  10000000  11000000
3     chr1  10385348  10385379      381    chr1  10000000  11000000
4     chr1  10561009  10561040       12    chr1  10000000  11000000
5     chr1  10561009  10561040       24    chr1  10000000  11000000
6     chr1  10647768  10647799       68    chr1  10000000  11000000
7     chr1  10958095  10958126       17    chr1  10000000  11000000
8     chr1  11196862  11196893       39    chr1  11000000  12000000
9     chr1  11921548  11921579       56    chr1  11000000  12000000
10    chr1  13967589  13967620      111    chr1  13000000  14000000
11    chr1  15290638  15290669       11    chr1  15000000  16000000
12    chr1  15587268  15587299       32    chr1  15000000  16000000
13    chr1  15587268  15587299       13    chr1  15000000  16000000

设置数据框后,我们现在可以使用 Pandas 函数来帮助操作数据框。

要创建一个新的数据框,其中我们有重复行 5,6 和 7 的计数,您可以使用以下内容(我假设您在第 5 行中有除 'chr1' 以外的其他值,所以也许我们想包括该行计算重复时?):

#groupby(['column5','column6','column7']) means that we're looking for duplicates across columns 5,6,7 and grouping them together
#.size() returns the number of duplicates aka the size of each group
#.reset_index().rename(columns={0:'count'}) is just giving the new column of duplicate numbers a header 'count'
dfnew = df.groupby(['column5','column6','column7']).size().reset_index().rename(columns={0:'count'})

这给了我dfnew

  column5   column6   column7  count
0    chr1  10000000  11000000      8
1    chr1  11000000  12000000      2
2    chr1  13000000  14000000      1
3    chr1  15000000  16000000      3

有了这个新的数据框,用数据生成一个文件就很简单了。

#The argument sep=' ' indicates that one space is used as a delimiter for the file
#The argument index=False omits the row indexes when writing to the file
df3.to_csv('newfile.txt',sep=' ',index=False)

最终文件是这样的:

column5 column6 column7 count
chr1 10000000 11000000 8
chr1 11000000 12000000 2
chr1 13000000 14000000 1
chr1 15000000 16000000 3

我希望这有帮助!

使用的参考资料:

熊猫文档

如何计算熊猫数据框中的重复行?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在我的C程序中创建函数?-获取2个文本文件的统计信息

来自分类Dev

如何在python的文本文件中读取数字?

来自分类Dev

如何在python中打印文本文件

来自分类Dev

如何在Python中从文本文件读取input()

来自分类Dev

如何在python中打开文本文件?

来自分类Dev

如何在Python中修改文本文件

来自分类Dev

如何在python中复制文本文件

来自分类Dev

如何在 Python 中永久写入文本文件?

来自分类Dev

如何在python中逐行读取文本文件

来自分类Dev

如何在python中重命名文本文件?

来自分类Dev

如何使用python将文本文件中的本地html文件中的信息保存?

来自分类Dev

如何从文本文件中读取信息?

来自分类Dev

如何输入文本文件中的信息进行打印?

来自分类Dev

从文本文件中获取数据时,如何在txt文件中换行?

来自分类Dev

从文本文件中获取数据时,如何在txt文件中换行?

来自分类Dev

获取Python中文本文件的换行统计

来自分类Dev

获取Python中文本文件的换行统计

来自分类Dev

从pyttsx python中的文本文件中获取数据

来自分类Dev

如何在csv中获取其条目与文本文件中的条目匹配的元素的索引

来自分类Dev

如何使用文本文件中的数字对python中的文本文件进行排序

来自分类Dev

如何在Python中读取压缩文件夹中的文本文件

来自分类Dev

如何从文本文件中获取特定行?

来自分类Dev

如何从Linux中的文本文件获取价值

来自分类Dev

如何从文本文件中获取特定数据

来自分类Dev

如何从文本文件中获取特定值

来自分类Dev

如何从C#中的文本文件获取数据

来自分类Dev

如何从文本文件中获取字典元素

来自分类Dev

如何获取文本文件中前10%的行?

来自分类Dev

如何从Java中的文本文件获取行数?

Related 相关文章

  1. 1

    在我的C程序中创建函数?-获取2个文本文件的统计信息

  2. 2

    如何在python的文本文件中读取数字?

  3. 3

    如何在python中打印文本文件

  4. 4

    如何在Python中从文本文件读取input()

  5. 5

    如何在python中打开文本文件?

  6. 6

    如何在Python中修改文本文件

  7. 7

    如何在python中复制文本文件

  8. 8

    如何在 Python 中永久写入文本文件?

  9. 9

    如何在python中逐行读取文本文件

  10. 10

    如何在python中重命名文本文件?

  11. 11

    如何使用python将文本文件中的本地html文件中的信息保存?

  12. 12

    如何从文本文件中读取信息?

  13. 13

    如何输入文本文件中的信息进行打印?

  14. 14

    从文本文件中获取数据时,如何在txt文件中换行?

  15. 15

    从文本文件中获取数据时,如何在txt文件中换行?

  16. 16

    获取Python中文本文件的换行统计

  17. 17

    获取Python中文本文件的换行统计

  18. 18

    从pyttsx python中的文本文件中获取数据

  19. 19

    如何在csv中获取其条目与文本文件中的条目匹配的元素的索引

  20. 20

    如何使用文本文件中的数字对python中的文本文件进行排序

  21. 21

    如何在Python中读取压缩文件夹中的文本文件

  22. 22

    如何从文本文件中获取特定行?

  23. 23

    如何从Linux中的文本文件获取价值

  24. 24

    如何从文本文件中获取特定数据

  25. 25

    如何从文本文件中获取特定值

  26. 26

    如何从C#中的文本文件获取数据

  27. 27

    如何从文本文件中获取字典元素

  28. 28

    如何获取文本文件中前10%的行?

  29. 29

    如何从Java中的文本文件获取行数?

热门标签

归档