2016-07-02 3 views
2

не смог найти ничего об этом - python ... ive работала над тремя различными наборами данных для некоторых проектов машинного обучения, и это была довольно сложная задача, набирая одни и те же команды точно таким же образом, для одной и той же операции на другой кадр данных ... он начал с этим:, применяя ту же операцию к различным кадрам данных

aviva = pd.read_csv('data/LON_AV_.csv', parse_dates=['Date'], index_col='Date', date_parser=dateparse) 
admiral= pd.read_csv('data/LON_ADM.csv', parse_dates=['Date'], index_col='Date', date_parser=dateparse) 
three = pd.read_csv('data/LON_III.csv', parse_dates=['Date'], index_col='Date', date_parser=dateparse) 

в середине было много команд в применяться к каждому dataframe, которые были такими же

и закончился это:

three.to_csv('three_x.csv') 
three_label.to_csv('three_y.csv') 

admiral.to_csv('admiral_x.csv') 
admiral_label.to_csv('admiral_y.csv') 

aviva.to_csv('aviva_x.csv') 
aviva_label.to_csv('aviva_y.csv') 

Мой вопрос к вам, ребята, это, есть ли способ ускорить процесс, чтобы я не повторял такой код все время? спасибо вам, ребята, и есть хороший день

ответ

0

я хотел бы сделать это путь:

in_csv_template = 'data/LON_{}.csv' 
out_csv_template = 'out/{}_x.csv' 
out_label_template = 'out/{}_y.csv' 

cfg = { 
    'aviva': 'AV_', 
    'admiral': 'ADM', 
    'three': 'III', 
} 

def process(fi_csv, fo_csv, fo_label, **kwargs): 
    df = pd.read_csv(fi_csv, **kwargs) 

    ... 

    df.to_csv(fo_csv) 
    df_label.to_csv(fo_label) 


for k,v in cfg.items(): 
    process(in_csv_template.format(v), 
      out_csv_template.format(k), 
      out_label_template.format(k), 
      parse_dates=['Date'], 
      index_col='Date', 
      date_parser=dateparse) 
+0

хорошая работа человек спасибо вам, что это очень мило, thts примерно так же далеко, как я могу сделать это, хороший один g – entercaspa

1

Вместо трех DataFrames, aviva, admiral, three, используйте один dict с ключами тех же имен, отображающих в DataFrames:

dfs = dict() 
for filename, name in [('LON_AV_.csv', 'aviva'), 
         ('LON_ADM.csv', 'admiral'), 
         ('LON_III.csv', 'three')]: 
    dfs[name] = pd.read_csv('data/{}'.format(filename), parse_dates=['Date'], 
          index_col='Date', date_parser=dateparse) 

    ... 

    dfs[name].to_csv('{}_x.csv'.format(name)) 
    label[name].to_csv('{}_y.csv'.format(name))