【问题标题】:csv read columns and rowscsv读取列和行
【发布时间】:2014-01-05 14:19:24
【问题描述】:

好的,所以我在 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. 在每个片段的每个复制列上(即从肽段 1 复制 1 和从片段 1 复制 2,复制 2 和 3 相同)
  3. 在每个基因的每个重复列上(即与 (2) 相同,但使用基因而不是片段

数据文件都有相同的列,但行(即片段/肽/基因的数量)不同,所以我必须在不指定行号的情况下读取数据。本质上,我需要的是每一行、每个片段和每个基因的统计数据(变异系数)。

跨行的变体只使用三个重复(总是一行中的三个值),当然很容易获得。跨片段和跨基因的变体首先计算统计数据,以使用每个适用的复制 1、每个复制 2、然后复制 3 的第一个统计数据(即来自未知行数的未知数量的值),然后使用之前的值进行相同的统计计算(即总是三个值)。

我几乎有一个脚本可以做到这一点,但它很长并且(我认为)过于复杂。我基本上读了三遍文件,每次都以所描述的不同方式收集数据,特别是在列表中,有时在 numpy.arrays 中。

本质上,我的问题是关于如何以不同的方式有效地最好地读取数据,包括速度方面和“更少代码”方面。我试图找到类似的问题,但无济于事。任何有关如何执行此操作的提示将不胜感激,并在此先感谢!

【问题讨论】:

  • 这个问题似乎离题了,因为它更适合codereview.stackexchange.com
  • 你能用pandas吗?我认为 pandas 非常适合这种数据。
  • 非常感谢!我会检查 Pandas,我也会询问 codereview - 我什至不知道它存在!

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


【解决方案1】:

我会选择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 点中要问什么。您能提供示例输入和预期输出吗?

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多