Python Pytorch:如何在多个文件夹中加载csv文件

Python Pytorch:如何在多个文件夹中加载csv文件,python,pytorch,Python,Pytorch,我的数据如下: folder 1 part0001.csv part0002.csv ... part0199.csv folder 2 part0001.csv part0002.csv ... part0199.csv folder 3 part0001.csv part0002.csv ... part0199.csv 更新: 每个.csv文件大约为100Mb。功能和标签都在同一个.csv文件中。每个.csv文件如下所示 feat1 f

我的数据如下:

folder 1
  part0001.csv
  part0002.csv
  ...
  part0199.csv
folder 2
  part0001.csv
  part0002.csv
  ...
  part0199.csv
folder 3
  part0001.csv
  part0002.csv
  ...
  part0199.csv
更新:

每个
.csv
文件大约为
100Mb
。功能和标签都在同一个
.csv
文件中。每个
.csv
文件如下所示

  feat1 feat2 label
1 1     3     0
2 3     4     1
3 2     5     0
...

我想批量加载
.csv
文件中的样本。

您必须构建一个加载样本的数据集。(文件:)

例如:

导入火炬
从torch.ults.data导入数据集
导入全球2
作为pd进口熊猫
类CustomDataset(数据集):
def uuu init uuu(self,root)
self.root=根
#列出所有csv文件的路径
self.path=glob2.glob('src/***.csv)
定义(自我):
返回len(自路径)
定义(idx):
data=pd.from_csv(self.path[idx])
x=数据[“特征”]
y=数据[“标签”]
返回x,y
这是最基本的,您可以修改它,从每个csv文件中随机抽取样本,或在培训前预处理数据

编辑

如果您只是从csv中插入一行,那么您可以做三件事

  • 对数据进行预处理,将其保存为一个大的.csv文件,并在培训前将其全部加载到内存中。这将使您免于重新加载繁重文件的麻烦
  • (如果由于最终文件不适合内存而无法使用上一个文件)预处理数据并将其保存为每个数据点的.csv文件。这仍然需要您的数据加载器读取光盘,但至少这次您将加载较轻的文件
  • (如果不需要预处理数据)尽可能多地保存在内存中,以避免重新加载文件
  • 实现前两个解决方案没有多少秘密。解决方案3的代码应如下所示:

    导入火炬
    从torch.ults.data导入数据集
    导入全球2
    作为pd进口熊猫
    类CustomDataset(数据集):
    def uuu init uuu(self,root)
    self.root=根
    #列出所有csv文件的路径
    self.path=glob2.glob('src/***.csv)
    #dict将加载数据保存在内存中:
    self.cache={}
    定义(自我):
    返回len(自路径)
    定义(idx):
    “”“此GetItem将在培训期间加载数据并将其保存在内存中。”“”
    data=cache.get(idx,无)
    如果数据为无:
    data=pd.from_csv(self.path[idx])
    尝试:
    #将数据缓存到内存中
    self.cache{idx:data}
    除操作错误外:
    #我们可能使用了太多的内存
    del self.cache[列表(self.cache.keys())[0]]
    rnd_idx=np.random.randint(len(数据))
    x=数据['特征][rdn_idx]
    y=数据[‘标签][rdn_idx]
    返回x,y
    
    有趣的问题。我想查看您的尝试/解决方案。您好,这里的代码每次都会读取整个
    .csv
    文件?但是我想返回一个示例,比如
    data['features'][index]
    。Updated my answer=)。