Apa yang ada di CSV dan apa yang ada di dataframe adalah dua hal yang sangat berbeda. Misalnya, 9.9
dan 9.99999999999999
dalam CSV akan mengambil jumlah ruang yang sama dalam kerangka data.
Yang mengatakan, data dalam kerangka data membutuhkan lebih sedikit ruang daripada data dalam daftar. Membuat daftar itu mahal dalam memori; dan menambahkan ke kerangka data mengharuskan panda untuk membuat kerangka data baru (lebih besar), menyalin semuanya, lalu membiarkan kerangka data asli menjadi sampah.
Anda mungkin akan melakukan jauh lebih baik jika Anda melakukan pra-alokasi kerangka data 60000 baris (atau berapa pun jumlah baris yang Anda miliki secara total); misalnya:
data = pd.DataFrame(np.empty((60000,), dtype=[
('x', np.uint8),
('y', np.float64)
]))
dan kemudian untuk setiap baris disisipkan data untuk baris tersebut, tanpa bergantung pada dataset
daftar:
data.values[count,:] = rowdata_at_count
Ini tidak aman untuk tipe, tetapi cukup cepat (karena tidak ada alokasi yang terjadi), jadi pastikan rowdata_at_count
adalah daftar yang elemennya sesuai dengan tipe kolom.
EDIT
Ya, menambahkan 100 baris, saya percaya, seperti 100 concat dari satu baris (karena setiap append harus mengalokasikan ulang dan menyalin tabel, sama seperti concat). Prealokasi menghindari penambahan dan penggabungan:ukuran tabel tidak berubah, tidak ada realokasi dan penyalinan yang perlu dilakukan.