¿Por qué la concatenación de DataFrames se vuelve exponencialmente más lenta?

Tengo una función que procesa un DataFrame, en gran parte para procesar datos en cubos, crear una matriz binaria de características en una columna particular usandopd.get_dummies(df[col]).

Para evitar procesar todos mis datos usando esta función de una vez (que se queda sin memoria y hace que iPython se bloquee), he dividido el gran DataFrame en fragmentos usando:

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

pd.get_dummies(df) creará automáticamente nuevas columnas basadas en el contenido dedf[col] y es probable que difieran para cadadf endf_list.

Después del procesamiento, estoy concatenando los DataFrames nuevamente usando:

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()

El tiempo de procesamiento del primer fragmento es perfectamente aceptable, sin embargo, ¡crece por fragmento! Esto no tiene que ver con elpreprocess_data(df_chunk) ya que no hay razón para que aumente. ¿Se produce este aumento de tiempo como resultado de la llamada apd.concat()?

Por favor, consulte el registro a continuación:

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

¿Hay alguna solución para acelerar esto? Tengo 2900 fragmentos para procesar, por lo que agradeceré cualquier ayuda.

¡Abierto a cualquier otra sugerencia en Python!

Respuestas a la pregunta(2)

Su respuesta a la pregunta