为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 中创建具有随机文件路径的 CSV 文件

在 Python 中创建具有随机文件路径的 CSV 文件

白衣非少年 2021-10-12 15:23:10
我有很多 csv 文件,包括我制作的模拟数据。我通过将所有模拟输出 csv 文件作为文件路径放入另一个单个 csv 文件中,将它们提供给深度学习算法。但是,我需要两个 csv 文件,其中一个包含 20% 的输出 csv 文件路径,另一个包含剩余的 80%。我有一个算法可以做到这一点,但它不是随机的;with open('C:\\train.csv', 'w') as outf:  print('x:data,y:label', file=outf)  for i in range(80):      print('./1/a_%s.csv, 1' % (i + 21), file=outf)with open('C:\\test.csv', 'w') as outf:  print('x:data,y:label', file=outf)  for i in range(20):      print('./1/a_%s.csv, 1' % (i + 1), file=outf)当我这样做时,我在其中一个 csv 文件中获得了 1-20 个文件,在另一个中获得了 21 到 100 个文件。但是,我希望它们是随机的。所以也许如果我总共有 10 个样本,一个文件中有 3 个和 7 个(随机),另一个文件中有其余的。有没有办法做到这一点?
查看完整描述

2 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

也许您可以尝试制作索引数组并首先对其进行洗牌。然后将前 80 个索引用于第一个 CSV,其余 (20) 个用于第二个:


from random import shuffle    


indices = list(range(1,101))

shuffle(indices)


with open('C:\\train.csv', 'w') as outf:

    print('x:data,y:label', file=outf)


    for i in indices[:80]:

        print('./1/a_%s.csv, 1' % i, file=outf)


with open('C:\\test.csv', 'w') as outf:

    print('x:data,y:label', file=outf)


    for i in indices[80:]:

        print('./1/a_%s.csv, 1' % i, file=outf)


查看完整回答
反对 回复 2021-10-12
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

这是机器学习中的常见问题。scikit-learn有几个工具可以处理这个问题,例如train_test_split


from sklearn.model_selection import train_test_split


indices = list(range(1, 101))

i_a, i_b = train_test_split(indices, train_size=0.8, test_size=0.2)

现在您可以像原始代码一样迭代i_a(80 个随机索引)和i_b(20 个随机索引):


with open('C:\\train.csv', 'w') as outf:

    print('x:data,y:label', file=outf)


    for i in i_a:

        print('./1/a_%s.csv, 1' % i, file=outf)


with open('C:\\test.csv', 'w') as outf:

    print('x:data,y:label', file=outf)


    for i in i_b:

        print('./1/a_%s.csv, 1' % i, file=outf)


查看完整回答
反对 回复 2021-10-12
  • 2 回答
  • 0 关注
  • 252 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号