1つのCSV形式のファイルを2つのCSVファイルに分割する
11828 ワード
序文
本プロジェクトでは、1つのcsvファイルを比例して2つのcsvファイルに分割できます.効果は、C:algo_fileフォルダの下で、そのフォルダの下のdataをcsvファイルはtrainに分かれている.csvとvali.csv
完全なコード
split_の定義csv関数:
上記の関数を呼び出します.
トレーニングセットが80%(検証セット20%)を占める割合で、C:algo_fileフォルダの下のdata.csvは分割する、このファイルの下でtrainを得る.csvとvali.csv.
最後に
本プロジェクトはC:algo_fileフォルダを例にとると、実際にはdata.csvの経路、train.csvが存在する経路、vali.csvが存在するパスは、ファイル名を含めて変更できます.
本プロジェクトでは、1つのcsvファイルを比例して2つのcsvファイルに分割できます.効果は、C:algo_fileフォルダの下で、そのフォルダの下のdataをcsvファイルはtrainに分かれている.csvとvali.csv
完全なコード
split_の定義csv関数:
import csv
import os
def split_csv(path, total_len, per):
# train.csv vali.csv
if os.path.exists('C:\\algo_file\\train.csv'):
os.remove('C:\\algo_file\\train.csv')
if os.path.exists('C:\\algo_file\\vali.csv'):
os.remove('C:\\algo_file\\vali.csv')
with open(path, 'r', newline='') as file:
csvreader = csv.reader(file)
i = 0
for row in csvreader:
if i < round(total_len * per/100):
# train.csv
csv_path = os.path.join("C:\\algo_file", 'train.csv')
print(csv_path)
# ,
if not os.path.exists(csv_path):
with open(csv_path, 'w', newline='') as file:
csvwriter = csv.writer(file)
csvwriter.writerow(row)
i += 1
#
else:
with open(csv_path, 'a', newline='') as file:
csvwriter = csv.writer(file)
csvwriter.writerow(row)
i += 1
elif (i >= round(total_len * per/100)) and (i < total_len):
# vali.csv
csv_path = os.path.join("C:\\algo_file", 'vali.csv')
print(csv_path)
# ,
if not os.path.exists(csv_path):
with open(csv_path, 'w', newline='') as file:
csvwriter = csv.writer(file)
csvwriter.writerow(row)
i += 1
#
else:
with open(csv_path, 'a', newline='') as file:
csvwriter = csv.writer(file)
csvwriter.writerow(row)
i += 1
else:
break
print(" ")
return
上記の関数を呼び出します.
if __name__ == '__main__':
path = 'C:\\algo_file\\data.csv'
total_len = len(open(path, 'r').readlines())# csv
per = 80 # %
split_csv(path, total_len, per)
トレーニングセットが80%(検証セット20%)を占める割合で、C:algo_fileフォルダの下のdata.csvは分割する、このファイルの下でtrainを得る.csvとvali.csv.
最後に
本プロジェクトはC:algo_fileフォルダを例にとると、実際にはdata.csvの経路、train.csvが存在する経路、vali.csvが存在するパスは、ファイル名を含めて変更できます.