近期需要一个年龄分好类的数据集进行train,但是下载的common voice数据集中的数据统计如下所示
数据非常凌乱,需要对数据进行分类,挑选出有用的放入文件夹中。
首先对文件读取
path = r'C:\Users\yy\Desktop\code\cv-valid-test.csv'
data = pd.read_csv(path)
通过一个循环定位需要的“age”列
total = len(open(path).readlines())
for i in range(total):
x = data.iloc[i]['age']
检查循环过程中符合标准的“age”。我这里因为需要筛选的语音段名称为“sample-xxxxxx.mp3”所以取了filename14往后的字符串,和文件名对应上。
if x == 'seventies':
name = data.iloc[i]['filename']
temp = name[14:]
mymovefile(r'C:\Users\yy\Desktop\code\cv-valid-test\\'+temp,r'C:\Users\yy\Desktop\code\test\seventies\\')
通过一个子函数调用mymovefile,实现音频的移动,这一部分是借鉴了一段代码:文件移动。
附上全部代码:
import pandas as pd
import os
import shutil
def mymovefile(srcfile, dstpath): # 移动函数
if not os.path.isfile(srcfile):
print("%s not exist!" % (srcfile))
else:
fpath, fname = os.path.split(srcfile) # 分离文件名和路径
if not os.path.exists(dstpath):
os.makedirs(dstpath) # 创建路径
shutil.move(srcfile, dstpath + fname) # 移动文件
print("move %s -> %s" % (srcfile, dstpath + fname))
path = r'C:\Users\yy\Desktop\code\cv-valid-test.csv'
data = pd.read_csv(path)
total = len(open(path).readlines())
for i in range(total):
x = data.iloc[i]['age'] # 读取某两列
if x == 'seventies':
name = data.iloc[i]['filename']
temp = name[14:]
mymovefile(r'C:\Users\yy\Desktop\code\cv-valid-test\\'+temp,r'C:\Users\yy\Desktop\code\test\seventies\\')
ps:一定一定要注意移动的文件位置,一开始不小心把几千个音频放到了桌面上。