Я выполняю процедуру, когда на каждой итерации создаются некоторые значения (не так много значений: всего ~ 50 значений на итерацию, из которых некоторые являются короткими 4-5 символьные строки, но большинство из них состоят из 2-3 цифр). Примерно 3 тысячи итераций.Python Pandas, создающий длинный список dataframes, чтобы получить сцепление
В настоящее время я использую фрейм данных pandas для хранения этих значений ~ 50 для заданной итерации, а затем добавьте df в список фреймов данных (dflist), и как только все итерации 3K будут выполнены, я объединяю 3K фреймы данных (так как все они имеют одинаковые имена столбцов), используя что-то вроде:
df_final = pd.concat (dflist, оси = 0)
есть ли лучший способ сделать эту процедуру, например. просто используйте массив numpy и добавьте значения вдоль оси 0, а в конце включите полный массив numpy в кадр данных Pandas с данным набором имен столбцов?
Я спрашиваю, потому что после многих итераций (~ 200 из 3 тысяч), код существенно замедляется, а использование системной памяти медленно ползет вверх, а между итерациями, насколько я могу судить, все мои значения перезаписывается на каждой итерации, за исключением этого списка блоков данных pandas, который, кажется, является единственной вещью, которая растет после каждой итерации. Я использую Python 2.7. Такое поведение возникает, когда я запускаю свой скрипт в графическом интерфейсе Spyder или просто из командной строки.
Еще одна вещь: даже несмотря на то, что значения, которые я фактически сохраняю, относительно малы (значения ~ 50 для каждой итерации), данные, которые я просматриваю для извлечения этих сводных значений, очень велики. Таким образом, исходный csv составляет ~ 10 ГБ с ~ 200 миллионами строк, и я chunk его с помощью pd.read_csv с заданным chunksize, который составляет примерно 50K строк. Затем для этих 50K строк я получаю около 50 значений. Но я бы подумал, что каждый кусок будет независимым, и поскольку значения становятся перезаписанными, использование памяти не должно расти, как это происходит.
Пример ДФ:
CHFAC Bygoper Change MinB NumB NumCombos Total
0 abc3 574936022 + 1 1 1 11
1 abc3 574936022 - 1 0 0 0
2 abc3 574936022 + 2 1 1 11
3 abc3 574936022 - 2 0 0 0
4 abc3 574936022 + 5 1 1 11
5 abc3 574936022 - 5 0 0 0
6 abc3 574936022 + 10 1 1 11
7 abc3 574936022 - 10 0 0 0
показывают нам одну или 2 образца ДФ вы CONCAT, это трудно сказать, сколько столбцов у вас есть, индекс и такие на основе вашего поста. –