最近,项目进行到提特征的环节,需要将特征写入csv文件中,然后送到分类器里训练,这需要一些基本的对csv文件的读写操作,记录下笔记,以后方便复习。
本文主要使用csv和pandas两个模块,首先肯定得导入两个模块
import csv
import pandas as pd
csv_file = '/home/hjxu/breast_project/Extract_Features_heatmap/GT.csv'
先研究下需要读取的csv文件的内容,我的csv文件的内容如下,假设为GT.csv
Test_001 | Tumor | IDC | Macro |
Test_002 | Tumor | ILC | Macro |
Test_003 | Normal | DCIS | None |
Test_004 | Tumor | IDC | Micro |
第一列为Test 第二列为tumor 我现在需要提取第一列和第二列,并且将第二列的Tumor变为1,Normal变为0,结果如下label.csv
name | label | |
Test_001 | 1 | |
Test_002 | 1 | |
Test_003 | 0 | |
Test_004 | 1 |
(一)利用csv这个库读取某一行
with open(csv_file, "r") as f:
reader = csv.reader(f)
row1 = [row for row in reader]
print row1[2] #row1[i]就代表是第几行
上述代码打印出row[2]代表的值,也就是第三行 ['Test_003', 'Normal', 'DCIS', 'None']
(二)利用csv这个库读取某一列
with open(csv_file, "r") as f:
reader = csv.reader(f)
column1 = [row[0] for row in reader] # row[0]就是读取第一列
print column1
代码就打印出第一列的值['Test_001', 'Test_002', 'Test_003', 'Test_004']
(三)利用csv这个库打印出某列某行
如果想打印出第一列第一行的值,直接
print column1[0]
就可以了
(四)下面该怎么写入csv文件中呢
举一个小列子,我需要读取前面提供的GT.csv文件中的第一列,并写入GT_label.csv文件的第一列。然后根据GT.csv文件中的第一列是否是Tumor,以1和0表示写入到GT_label.csv中的第二列,代码如下
csv_file_label = '/home/hjxu/breast_project/Extract_Features_heatmap/GT_ground.csv'
#####读取第一列###################3
with open(csv_file, "r") as f:
reader = csv.reader(f)
column1 = [row[0] for row in reader]
print column1
#####读取第一列###################3
#####读取第二列###################3
with open(csv_file, "r") as f:
reader = csv.reader(f)
column2 = [row[1] for row in reader]
#print(column0[2])
#####读取第二列###################3
with open(csv_file_label,"w") as csvfile:
writer = csv.writer( csvfile) #写入文件
writer.writerow(['name','label']) #写入文件的第一行的第一列和第二列写入name和label
for i in range(len(column2)):
if column2[i] == 'Tumor': #column2[i] 代表第二列的第i行,这时候判断是否是Tumor,是写入1,不是写入0
label = 1;
else:
label = 0
writer.writerow([column1[i],label]) #写入文件,并且用逗号隔开表示一列
writerow就表示写入每行。具体的笔记先记在这里,比如pandas库的使用