###前提・実現したいこと
iris_data.txtの中身を前半4つと最後の1つのファイルに分割したい。
分割後はcsvファイルに出力したいです。
一応、自分で書けたのですが冗長になったような気がしまして、よりきれいに書けるところがあれば教えてください。
【追記】
途中numpyに変えているのは気にしないでください。別に直さなくてもできて、消すのを忘れていただけです。
iris_data.txt 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3.0,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 4.6,3.1,1.5,0.2,Iris-setosa 5.0,3.6,1.4,0.2,Iris-setosa 5.4,3.9,1.7,0.4,Iris-setosa 4.6,3.4,1.4,0.3,Iris-setosa 5.0,3.4,1.5,0.2,Iris-setosa 4.4,2.9,1.4,0.2,Iris-setosa 4.9,3.1,1.5,0.1,Iris-setosa ... ... .. 5.0,2.3,3.3,1.0,Iris-versicolor 5.6,2.7,4.2,1.3,Iris-versicolor 5.7,3.0,4.2,1.2,Iris-versicolor 5.7,2.9,4.2,1.3,Iris-versicolor 6.2,2.9,4.3,1.3,Iris-versicolor 5.1,2.5,3.0,1.1,Iris-versicolor 5.7,2.8,4.1,1.3,Iris-versicolor
iris_data_train.csv 5.1,3.5,1.4,0.2 4.9,3.0,1.4,0.2 4.7,3.2,1.3,0.2 4.6,3.1,1.5,0.2 5.0,3.6,1.4,0.2 5.4,3.9,1.7,0.4 4.6,3.4,1.4,0.3 5.0,3.4,1.5,0.2 ... ... ..
iris_target_train.csv Iris-setosa Iris-setosa Iris-setosa Iris-setosa Iris-setosa Iris-setosa Iris-setosa Iris-setosa ... ... ..
###該当のソースコード
python
1import csv 2import numpy as np 3 4f = open('iris_data.txt') 5list1=[] 6#list1=['5.1,3.5,1.4,0.2,Iris-setosa\n',...,'5.7,2.8,4.1,1.3,Iris-versicolor'] 7for row in f: 8 list1.append(row) 9f.close() 10#print(list1) 11#print(type(list[0])) 12#print(list) 13list2=[] 14#list2=list1から改行コード除去 15for line in list1: 16 line1 = line.replace('\n','') 17 list2.append(line1) 18list3=[data.split(',')for data in list2] 19#list3=[['5.1', '3.5', '1.4', '0.2', 'Iris-setosa'],...,['5.7', '2.8', '4.1', '1.3', 'Iris-versicolor']] 20#print (type(list3[0][0])) 21 22list4=[[[a,b,c,d],[e]] for a,b,c,d,e in list3] 23data_list,target_list=[data for data,target in list4],[target for data,target in list4] 24 25#print(data_list) 26#print(target_list) 27 28numpy1=np.array(data_list) 29numpy2=numpy1.astype(np.float64) 30print(numpy2) 31 32f = open('iris_data_train.csv', 'w', newline='') 33csvWriter = csv.writer(f) 34[csvWriter.writerow(a) for a in data_list] 35f.close() 36 37f = open('iris_target_train.csv', 'w', newline='') 38csvWriter = csv.writer(f) 39[csvWriter.writerow(a) for a in target_list] 40f.close()
回答3件
あなたの回答
tips
プレビュー