Vad som finns i en CSV och vad som finns i en dataram är två väldigt olika saker. Till exempel 9.9
och 9.99999999999999
i en CSV tar samma mängd utrymme i en dataram.
Som sagt, data i en dataram tar upp mycket mindre utrymme än data i en lista. Att konstruera en lista är dyrt i minnet; och att lägga till en dataram kräver pandor att göra en ny (större) dataram, kopiera allt och sedan lämna den ursprungliga dataramen för att samlas in.
Du skulle förmodligen klara dig mycket bättre om du förallokerade en dataram med 60 000 rader (eller hur många rader du har totalt); t.ex.:
data = pd.DataFrame(np.empty((60000,), dtype=[
('x', np.uint8),
('y', np.float64)
]))
och sedan infogade data för varje rad för den raden, utan att förlita sig på dataset
lista:
data.values[count,:] = rowdata_at_count
Detta är inte typsäkert, men det är ganska snabbt (eftersom inga tilldelningar sker), så se till att rowdata_at_count
är en lista vars element motsvarar kolumntyper.
REDIGERA
Ja, att lägga till 100 rader är, tror jag, som 100 konkatter av en rad (eftersom varje tillägg måste omfördela och kopiera tabellen, precis som konkat). Förallokering undviker både append och concat:tabellstorleken ändras inte, ingen omallokering och kopiering behöver göras.