Альтернатива нарезке и пониманию списка
Я ищу, чтобы ускорить мой код. Я попытался повторить мой код в следующем:
Я начинаю с чтения определенных файлов CSV из папки и сохраняю данные в формате dict:
Все является частью методов внутри классов.
csv_dir: Folder with all the CSV files
list: List of which CSV files from the above folder to read
data = {}
for s in list:
data[s] = pd.io.parsers.read_csv(
os.path.join(csv_dir, '%s.csv' % s),
header=0, index_col=0, parse_dates=True, date_parser=dateparse,
names=names
Затем я переиндексирую и создаю генератор
comb_index: Combined index made previously in the code
reindexMethod = None
for s in list:
data[s] = data[s].\
reindex(index=comb_index, method=reindexMethod)
data[s] = data[s].iterrows()
Затем я перебираю все записи, где я делаю следующее в каждой итерации:
- Получить новое наблюдение, используя урожай
- Сохранить новое наблюдение в списке вместе со всеми ранее полученными наблюдениями
- Вызовите функцию, которая:
- Получить последние N записей из приведенного выше списка, используя get_latest_data (определяется ниже вместе с helpmethod)
- Рассчитать материал
Определения кода:
self (part of the same class as the rest of the code)
x: which file to retrieve the latest N datapoints from
N: Number of datapoints to retrieve
def get_latest_data(x, val_type, N=1):
try:
data_list = get_latest_entries(x, N)
except KeyError:
print("Not available.")
raise
else:
return np.array([getattr(b[1], val_type) for b in data_list])
с помощью метода
latest_data: Dict with all previously looped through data for each CSV file
def get_latest_entries(x, N=1):
try:
bars_list = latest_data[x]
except KeyError:
print("Not available.")
raise
else:
return bars_list[-N:]
Мой профилировщик говорит, что проблема заключается в понимании списка, но я не знаю лучшей альтернативы.