#python #pandas #coding-efficiency
#python #pandas #кодирование-эффективность
Вопрос:
У меня есть папка с примерно 5000 csv с 60 000 строк и 10 столбцов в каждом. Я хочу получить среднее значение каждого csv и добавить его в список. Текущий код ниже:
mean_list = []
for item in train_frags: # train_frags is a variable that holds location of all files
segment = pd.read_csv(item,dtype = 'Int16')
mean_list.append(segment.mean())
Этот код выполняется уже более 10 минут !!. Пожалуйста, предложите эффективную версию.
Комментарии:
1. Нет решения, которое не включало бы чтение каждого отдельного байта, и я бы предположил, что у вас узкое место из-за дискового ввода-вывода, а не процессора, поэтому я не думаю, что вы можете многое сделать для оптимизации (кроме предварительной обработки / кэширования, чтобы, если вам нужно это сделатьопять же, вам не нужно каждый раз начинать с нуля). Можете ли вы поместить эту папку на более быстрый диск или, возможно, даже распределить ее по нескольким физическим дискам, чтобы вы могли распараллеливать чтения?
Ответ №1:
Единственное, о чем я могу думать, это то, что вы используете append , что довольно медленно, поэтому, возможно, попробуйте преобразовать его в понимание списка, если это возможно. Единственное, что я могу придумать, это использовать numba (https://numba.pydata.org /), что может помочь повысить производительность и скорость.