Tensorflow 读取Txt和Csv格式数据

我的数据: 
6.1101,17.592 
5.5277,9.1302 
8.5186,13.662 
7.0032,11.854 
5.8598,6.8233 
8.3829,11.886 
7.4764,4.3483

若格式为txt,则先转为Csv格式

 1 # coding=utf-8
 2 import csv
 3 #要保存后csv格式的文件名
 4 file_name_string="file.csv"
 5 with open(file_name_string, 'wb') as csvfile:
 6     #编码风格,默认为excel方式,也就是逗号(,)分隔
 7     spamwriter = csv.writer(csvfile, dialect='excel')
 8     # 读取txt文件,每行按逗号分割提取数据
 9     with open('ex1data1.txt', 'rb') as file_txt:
10         for line in file_txt:
11             line_datas= line.strip('\n').split(',')
12             spamwriter.writerow(line_datas)

 

得到file.csv文件,其中ex1data1.txt为原数据,file.csv为转化后的csv数据: 
image.png

读取Csv格式数据:
 1 # coding=utf-8
 2 import tensorflow as tf
 3 import os
 4 import csv
 5 #要保存后csv格式的文件名
 6 file_name_string="file.csv"
 7 filename_queue = tf.train.string_input_producer([file_name_string])
 8 #每次一行
 9 reader = tf.TextLineReader()
10 key,value = reader.read(filename_queue)
11 record_defaults = [[1.0], [1.0]] # 这里的数据类型决定了读取的数据类型,而且必须是list形式
12 col1, col2 = tf.decode_csv(value, record_defaults=record_defaults) # 解析出的每一个属性都是rank为0的标量
13 with tf.Session() as sess:
14     #线程协调器
15     coord = tf.train.Coordinator()
16     #启动线程
17     threads = tf.train.start_queue_runners(coord=coord)
18     is_second_read=0
19     line1_name='%s:1' % file_name_string
20     print line1_name
21     while True:
22        #x_第一个数据,y_第二个数据,dline_key中保存当前读取的行号
23         x_, y_,line_key = sess.run([col1, col2,key])
24 
25        #若当前line_key第二次等于第一行的key(即line1_name)则说明读取完,跳出循环
26         if is_second_read==0 and line_key==line1_name:
27             is_second_read=1
28         elif is_second_read==1 and line_key==line1_name:
29             break
30         print (x_,y_,line_key)
31     #循环结束后,请求关闭所有线程
32     coord.request_stop()
33     coord.join(threads)
34     sess.close()

 

输出结果: 
image.png

posted on 2018-08-23 14:51  西沟冯衙内  阅读(97)  评论(0编辑  收藏  举报