csv读取列和行

时间:2014-01-05 14:19:24

标签: csv data-structures python-3.x numpy

好的,所以我在csv文件中有一些数据,看起来大致如下:

[fragment1, peptide1, gene1, replicate1, replicate2, replicate3]
[fragment1, peptide2, gene1, replicate1, replicate2, replicate3]
[fragment2, peptide1, gene2, replicate1, replicate2, replicate3]
[fragment2, peptide2, gene2, replicate1, replicate2, replicate3]
[fragment3, peptide1, gene2, replicate1, replicate2, replicate3]

问题是这个 - 我需要以几种不同的方式使用这些数据(三次重复):

  1. 每一行(即每行只复制1-3次)
  2. 每个片段的每个重复列(即来自来自fragment1的peptide1和2的replicate1,以及针对replicate2和3的相同)
  3. 每个基因的每个重复列(即与(2)相同,但使用基因而不是片段
  4. 数据文件都具有相同的列,但行(即片段/肽/基因的数量)不同,因此我必须在不指定行号的情况下读取数据。基本上,我需要的是每行,每个片段和每个基因的统计数据(变异系数)。

    跨行的变体只使用三个重复(总是来自一行的三个值),当然非常简单。跨片段和跨基因的变体首先计算使用来自每个适用的replicate1的第一统计数据的统计数据,然后是每个replicate2,然后是replicate3,(来自未知行数的未知数量的值),之后使用先前的值进行相同的统计计算(即总是三个值)。

    我有一个脚本可以做到这一点,差不多,但它很长,而且(我认为)过于复杂。我基本上读了三次文件,每次都以不同的方式收集数据,monstly在列表中,有时候是numpy.arrays。

    从本质上讲,我的问题是如何有效地以不同方式最佳地读取数据,包括速度和“少代码”。我试图找到类似的问题,但无济于事。任何有关如何做到这一点的提示将不胜感激,并提前感谢!

1 个答案:

答案 0 :(得分:0)

我会选择numpy.loadtxt

import numpy as np

data = np.loadtxt(open('myfile.csv', 'rb'), delimiter=',')

# 1 Access all rows
for row in data:
    print row

# Get all data in column 2 and 3
print data[:, (2,3)]

我不确定你在第2点和第3点的要求。你能提供样本输入和预期输出吗?