Почему конкатенация DataFrames экспоненциально замедляется?

У меня есть функция, которая обрабатывает DataFrame, в основном для обработки данных в сегменты, чтобы создать двоичную матрицу объектов в определенном столбце, используяpd.get_dummies(df[col]).

Чтобы избежать одновременной обработки всех моих данных с помощью этой функции (которая выходит из памяти и вызывает сбой iPython), я разбил большой DataFrame на куски, используя:

chunks = (len(df) / 10000) + 1
df_list = np.array_split(df, chunks)

pd.get_dummies(df) автоматически создаст новые столбцы на основе содержимогоdf[col] и они могут отличаться для каждогоdf вdf_list.

После обработки я объединяю DataFrames вместе, используя:

for i, df_chunk in enumerate(df_list):
    print "chunk", i
    [x, y] = preprocess_data(df_chunk)
    super_x = pd.concat([super_x, x], axis=0)
    super_y = pd.concat([super_y, y], axis=0)
    print datetime.datetime.utcnow()

Время обработки первого блока вполне приемлемо, однако оно увеличивается с каждым блоком! Это не связано сpreprocess_data(df_chunk) поскольку нет причин для его увеличения. Это увеличение времени происходит в результате обращения кpd.concat()?

Пожалуйста, смотрите журнал ниже:

chunks 6
chunk 0
2016-04-08 00:22:17.728849
chunk 1
2016-04-08 00:22:42.387693 
chunk 2
2016-04-08 00:23:43.124381
chunk 3
2016-04-08 00:25:30.249369
chunk 4
2016-04-08 00:28:11.922305
chunk 5
2016-04-08 00:32:00.357365

Есть ли способ обойти это? У меня есть 2900 кусков для обработки, поэтому любая помощь приветствуется!

Открыты для любых других предложений в Python!

Ответы на вопрос(2)

Ваш ответ на вопрос