-
使得加载数据的过程中不会过大占用内存造成读取时间长和内存崩溃的问题呢?
import gzip
import csv
file_path = '文件夹路径'
csv_path = '写入的csv文件路径‘ # 例如 example.csv
with gzip.open(file_path, 'rb') as f, open( csv_path, 'w', encoding='utf-8', newline="") as c:
csv_writer = csv.writer(c)
for line in f:
line = line.decode().split()
csv_writer.writerow(line) |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 1 reply
-
可以看一下这个链接链接 |
Beta Was this translation helpful? Give feedback.
-
利用图片数据集的创建方式解决超大型csv文件加载问题对于一个超大型csv文件,假设其行(rows)表示样本,列(cols)表示特征,有的最后一列还有标签。那么可以将该csv文件里的每一行都单独写入一个txt文件,文件名以样本名命名,每个txt文件存储一个样本的所有特征。样本名单独存在一个txt文件(如果有标签的话,也可以将样本名和标签一起存在一个文件夹)。 import pandas as pd
file = pd.read_csv('file.csv', index_col=0, iterator=True, chunksize=1)
for data in file:
sample = data.index.tolist()[0]
value = data.values.tolist()
value = str(value).replace('[', '')
value = value.replace(']', '')
print(value)
with open('data/{}.txt'.format(sample), 'w', encoding='utf-8') as f,\
open('samples.txt', 'a', encoding='utf-8') as s:
f.write(value)
s.write(sample+'\n') 样本文件和每个样本的特征文件如下图所示: import numpy as np
from torch.utils.data import Dataset, DataLoader
class My_DataSet(Dataset):
def __init__(self, file_path, samples):
self.file_path = file_path
self.samples = samples
def __getitem__(self, index):
sample = self.samples[index]
path = os.path.join(self.file_path, sample+'.txt')
data = np.loadtxt(path, delimiter=',')
data, label = data[:-1], data[-1]
return data, label
def __len__(self):
return len(self.samples)
samples = []
with open('samples.txt', 'r', encoding='utf-8') as f:
for line in f:
samples.append(line.strip('\n'))
my_data = My_DataSet('data', samples)
data = DataLoader(my_data, batch_size=32,num_workers=0)
for x, y in data:
print(x, y)
break 打印出一个batch_size的样本 |
Beta Was this translation helpful? Give feedback.
利用图片数据集的创建方式解决超大型csv文件加载问题
对于一个超大型csv文件,假设其行(rows)表示样本,列(cols)表示特征,有的最后一列还有标签。那么可以将该csv文件里的每一行都单独写入一个txt文件,文件名以样本名命名,每个txt文件存储一个样本的所有特征。样本名单独存在一个txt文件(如果有标签的话,也可以将样本名和标签一起存在一个文件夹)。
下面是将csv切分为样本与特征的程序。实现上面所说的将csv的每个样本的特征单独写入一个txt文件(txt文件以样本名命名),样本单独写入一个文件