Saya memiliki sekitar 100000 baris data. Jika saya menyimpan data dalam format file teks, dibutuhkan lebih banyak ruang daripada jika saya menyimpannya dalam format file Excel. Mengapa demikian?
The xlsx
format digunakan oleh modern Excel sebenarnya adalah sebuah format terkompresi. It's arsip ZIP yang berisi teks (XML) file dalam struktur tertentu.
Jika anda kompres file teks biasa, mirip dengan kompresi ZIP tool, anda harus mencapai mirip ukuran file.
Selain itu, seperti yang disebutkan oleh Bradley Uffner dan Morgen di komentar, Excel akan deduplicate identik string dan hanya menyimpan satu salinan dari mereka. I'm tidak yakin tentang yang tepat keuntungan dari metode tersebut, dan itu akan tergantung pada data set, tapi sederhana kompresi zip mungkin akan membuat anda mendapatkan sebagian besar jalan di sana.1
9.1.3 Fisik Paket
masing-Masing Office Open XML dokumen ini dilaksanakan sebagai arsip ZIP.
1 Saya kira bahwa ini deduplikasi adalah paling efektif ketika anda memiliki beberapa lembar kerja, karena kompresi zip berlaku secara terpisah untuk masing-masing file dalam arsip dan hanya terbatas pada bagian-bagian dari data yang pada waktu - dengan menyimpan semua string bersama-sama dalam satu file, harus ada beberapa keuntungan untuk kemudian kompresi. Lebih praktis, jika anda format teks dalam sebuah file tunggal pula maka ada'mungkin akan ada sedikit perbedaan.
Jawaban yang diberikan adalah benar, hal ini karena Excel menyimpan data anda sebagai xml. Hal ini juga karena ini, yaitu pengurutan data secara efisien juga akan mengurangi ukuran file. Tes itu sendiri - misalnya anda memiliki data seperti
A B C
John Smith-Johnson-Williamson 12345
Sally Smith-Johnson-Williamson 67890
John Williams 34567
Jika anda urutkan berdasarkan C (kolom dengan semua atau hampir semua nilai-nilai unik) saja, maka nilai yang identik B tidak akan berdekatan. Di Excel's xml ini terlihat seperti ini:
<12345><John><Smith-Johnson-Williamson>
<34567><John><Williams>
<67890><Sally><Smith-Johnson-Williamson>
Jika anda mengurutkan oleh B (kolom dengan nilai-nilai umum), maka nilai yang identik yang berdekatan. Di Excel's xml ini terlihat seperti ini:
<Smith-Johnson-Williamson><John><12345>
<Sally><67890>
<Williams><John><34567>
Karena yang panjang string adalah sama dan berdekatan, Excel tahu itu bisa membawa mereka bersama-sama, mirip dengan ketika orang menulis daftar, dan untuk mengulang bagian dari baris di atas, mereka jenis kutipan daripada menulis ulang hal yang sama. Aku tidak menemukan bukti apapun bersama-string kamus dalam penyelidikan saya - hanya lekukan ini di tempat diulang bidang nilai.
Saya mendapat milis dari 250.000 pelanggan di hanya 11 negara, dan pada setiap record yang ada di lapangan itu adalah salah satu dari dua string yang mengidentifikasi tawaran yang mereka dapatkan. Karyawan kami adalah untuk beberapa alasan terbiasa melihat orang-orang dengan alamat jalan seperti yang diucapkan, jadi itu diurutkan di jalan nomor kolom, maka nama jalan, kota, dll... ketika aku terpaksa oleh tawaran pertama, kemudian negara, kode pos, kota, nama jalan, nomor jalan, dan akhirnya mengatasi-garis-2, ukuran file berkurang sangat. Aku memeriksa membongkar xml pada file diurutkan masing-masing cara untuk melihat apa yang sedang terjadi, dan di atas adalah apa yang aku menyimpulkan. Jika ada beberapa bidang dengan lebih dari 5 karakter, tetapi nilai-nilai dari satu set terbatas (katakan, tiket disposisi seperti 'diselesaikan','ditolak','disetujui',dll), kemudian memberikan beberapa pemikiran untuk memilah dan melihat apakah itu membantu.
Jika anda memiliki nomor seperti 3.14159265359, anda perlu 13 byte untuk menyimpan ini dalam sebuah file teks; jika anda menyimpan nomor ini sebagai pelampung, anda hanya perlu 4 byte.