Ho una grande dataframe, che desidero suddiviso in una serie di test e un convoglio per la costruzione del modello. Tuttavia, non voglio duplicare DataFrame perché sto raggiungendo un limite di memoria.Divisione di un grande Pandas dataframe con il minimo ingombro
Esiste un'operazione simile al pop ma per un segmento di grandi dimensioni che rimuove contemporaneamente una parte di DataFrame e mi consente di assegnarlo a un nuovo DataFrame? Qualcosa di simile a questo:
# Assume I have initialized a DataFrame (called "all") which contains my large dataset,
# with a boolean column called "test" which indicates whether a record should be used for
# testing.
print len(all)
# 10000000
test = all.pop_large_segment(all[test]) # not a real command, just a place holder
print len(all)
# 8000000
print len(test)
# 2000000
Per quanto ne so, nel momento in cui si esegue l'assegnazione, i panda ne creano una copia. Funzionerebbe se memorizzassi gli indici di treno e test? – ayhan
Non rispondere alla domanda, ma forse altre idee pertinenti: - Non è possibile dividere il set di dati già durante il caricamento? - O usi qualcosa come 'dask' (http://dask.pydata.org/en/latest/)? –
L'unico motivo per cui so è di caricarli separatamente da una tabella HDF5 e fare lo split al momento del caricamento, cioè caricare prima alcune file come allenamento e poi il resto come split può fornire una risposta appropriata è plausibile ... – RexFuzzle