gpt4 book ai didi

Python:忽略 csv 文件中的特定行

转载 作者:太空宇宙 更新时间:2023-11-03 18:19:36 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的线图来比较两个文件中的列。我已经编写了一些代码,想知道如何忽略我拥有的两个 .csv 文件中的行。代码如下:

import numpy as np
import csv
from matplotlib import pyplot as plt

def read_cell(x, y):
with open('Illumina_Heart_Gencode_Paired_End_Novel_Junctions.csv', 'r') as f:
reader = csv.reader(f)
y_count = 0
for n in reader:
if y_count == y:
cell = n[x]
return cell
y_count += 1
print(read_cell(6, 932)

def read_cell(x, y):
with open('Illumina_Heart_RefSeq_Paired_End_Novel_Junctions.csv', 'r') as f:
reader = csv.reader(f)
y_count = 0
for n in reader:
if y_count == y:
cell = n[x]
return cell
y_count += 1
print(read_cell(6, 932))


d1 = []
for i in set1:
try:
d1.append(float(i[5]))
except ValueError:
continue

d2 = []
for i in set2:
try:
d2.append(float(i[5]))
except ValueError:
continue

min_len = len(d1)
if len(d2) < min_len:
min_len = len(d2)
d1 = d1[0:min_len]
d2 = d2[0:min_len]

plt.plot(d1, d2, 'r*')
plt.plot(d1, d2, 'b-')
plt.xlabel('Data Set 1: PE_NJ')
plt.ylabel('Data Set 2: PE_SJ')
plt.show()

第一个 csv 文件有 932 行,第二个文件有 99,154 行。我只对从两个文件中获取前 932 行感兴趣,然后想要比较两个文件中的第 7 列。

我该如何去做呢?

第一个文件如下所示:

chr1    1718493 1718764 2   2   0   12  0   24
chr1 8928117 8930883 2 2 0 56 0 24
chr1 8930943 8931949 2 2 0 48 0 25
chr1 9616316 9627341 1 1 0 12 0 24
chr1 10166642 10167279 1 1 0 31 1 24

第二个文件如下所示:

chr1    880181  880421  2   2   0   15  0   21
chr1 1718493 1718764 2 2 0 12 0 24
chr1 8568735 8585817 2 2 0 12 0 21
chr1 8617583 8684368 2 2 0 14 0 23
chr1 8928117 8930883 2 2 0 56 0 24

最佳答案

一种可能的方法是读取第一个(较短)文件中的所有行,找出其长度 (N),从第二个文件中读取 N 行,获取您感兴趣的第 k 列来自两个文件。

类似(根据您的情况调整分隔符):

def read_tsv_file(fname): # reads the full contents of tab-separated file (like you have)
return list(csv.reader(open(fname, 'rb'), delimiter='\t'))

def take_nth_column(first_array, second_array, n): # returns a tuple containing nth columns from both arrays, with length corresponding to the length of the smaller array
len1 = len(first_array)
len2 = len(second_array)
min_len = len1 if len1<=len2 else len2
col1 = [row[n] for row in first_array[:min_len]]
col2 = [row[n] for row in second_array[:min_len]]
return (col1, col2)


first_array = read_tsv_file('your-first-file')
second_array = read_tsv_file('your-second-file')
(col1, col2) = take_nth_column(first_array, second_array, 7)

关于Python:忽略 csv 文件中的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24379921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com