Python|筛选csv实现文件移动分类

近期需要一个年龄分好类的数据集进行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:一定一定要注意移动的文件位置,一开始不小心把几千个音频放到了桌面上。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用蚁群算法实现股票因子的特征筛选,将因子IC值作为特征集合评价指标的Python代码实现: ```python import numpy as np import pandas as pd # 读取股票数据 data = pd.read_csv('stock_data.csv') # 定义特征集合 features = ['ROE', 'PE', 'PB', 'EPS', 'CFPS', 'RSI', 'MACD', 'MA'] # 定义IC值计算函数 def calc_ic(data): # 计算因子值 factor_values = data[features].values # 计算收益率 returns = data['returns'].values # 计算Pearson相关系数 ic = np.corrcoef(factor_values.T, returns)[0, 1] return ic # 定义蚂蚁类 class Ant: def __init__(self, features): self.features = features self.ic = 0 def move(self, pheromone, alpha, beta): # 计算每个特征被选择的概率 probs = pheromone[self.features]**alpha * self.ic**beta probs /= np.sum(probs) # 根据概率选择下一步要移动到的特征 next_feature = np.random.choice(self.features, p=probs) self.features.remove(next_feature) return next_feature # 定义蚁群算法类 class ACO: def __init__(self, data, features, ant_count=10, max_iter=100, alpha=1, beta=1, rho=0.5): self.data = data self.features = features self.ant_count = ant_count self.max_iter = max_iter self.alpha = alpha self.beta = beta self.rho = rho self.ants = [] self.pheromone = np.ones(len(features)) self.best_features = None self.best_ic = 0 def run(self): # 初始化蚂蚁 for i in range(self.ant_count): ant = Ant(self.features) self.ants.append(ant) # 迭代搜索 for i in range(self.max_iter): for ant in self.ants: # 计算IC值 data = self.data.sample(frac=0.5) ant.ic = calc_ic(data) # 移动蚂蚁 while ant.features: next_feature = ant.move(self.pheromone, self.alpha, self.beta) # 更新最优特征集合 if ant.ic > self.best_ic: self.best_features = ant.features self.best_ic = ant.ic # 更新信息素浓度 self.pheromone *= self.rho for feature in self.best_features: index = self.features.index(feature) self.pheromone[index] += self.best_ic return self.best_features, self.best_ic # 运行蚁群算法 aco = ACO(data, features) best_features, best_ic = aco.run() # 输出最优特征集合和IC值 print('Best features:', best_features) print('Best IC:', best_ic) ``` 在上述代码,我们首先定义了股票数据和特征集合,并定义了一个计算因子IC值的函数。然后,我们定义了一个蚂蚁类和一个蚁群算法类,分别用于实现蚂蚁的移动和信息素浓度的更新。最后,我们运行蚁群算法,并输出最优特征集合和IC值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值