"Lima exabytes informasi diciptakan oleh umat manusia dari saat kelahiran peradaban hingga 2003, tetapi jumlah yang sama sekarang diciptakan setiap dua hari." Eric SchmidtDatatable adalah pustaka Python untuk melakukan pemrosesan data multi-threaded yang efisien. Datatable mendukung dataset yang tidak sesuai dengan memori.
Jika Anda menulis dalam R, maka Anda mungkin sudah menggunakan paket 
data.table . 
Data.table adalah ekstensi dari paket 
data.frame R. Selain itu, mereka yang menggunakan R untuk dengan cepat mengumpulkan kumpulan data besar tidak dapat melakukan tanpa paket ini (kita berbicara, khususnya, sekitar 100 GB data dalam RAM).
Paket 
data.table untuk R sangat fleksibel dan kuat. Menggunakannya mudah dan nyaman, program yang digunakan ditulis dengan cukup cepat. Paket ini dikenal luas di kalangan programmer-R. Ini diunduh lebih dari 400 ribu kali sebulan, digunakan di hampir 650 paket CRAN dan Bioconductor ( 
sumber ).
Apa gunanya penambangan data untuk Python? Masalahnya adalah bahwa ada paket 
datatable Python yang merupakan analog dari 
data.table dari dunia R. Paket 
datatable jelas berfokus pada pemrosesan set data besar. Ini ditandai dengan kinerja tinggi - baik ketika bekerja dengan data yang sepenuhnya ditempatkan dalam RAM, dan ketika bekerja dengan data yang ukurannya melebihi jumlah RAM yang tersedia. Ini mendukung pemrosesan data multi-threaded. Secara umum, paket 
datatable dapat disebut sebagai adik dari 
data.table .
Datatable
Sistem pembelajaran mesin modern perlu memproses data dalam jumlah yang sangat besar dan menghasilkan banyak fitur. Ini diperlukan untuk membangun model seakurat mungkin. Modul Python yang dapat 
datatable dibuat untuk mengatasi masalah ini. Ini adalah seperangkat alat untuk melakukan operasi dengan volume data yang besar (hingga 100 GB) pada satu komputer dengan kecepatan setinggi mungkin. Sponsor pengembangan 
dataat adalah 
H2O.ai , dan pengguna pertama paket tersebut adalah 
Driverless.ai .
Toolkit ini sangat mirip dengan 
panda , tetapi lebih fokus pada penyediaan pemrosesan data berkecepatan tinggi dan mendukung kumpulan data besar. Selain itu, pengembang paket yang dapat 
datatable , berupaya agar nyaman bagi pengguna untuk menggunakannya. Ini, khususnya, API yang kuat dan pesan kesalahan yang dipikirkan dengan matang. Pada artikel ini, kita akan berbicara tentang bagaimana menggunakan 
datatable , dan bagaimana tampilannya dibandingkan dengan 
pandas saat memproses set data yang besar.
Instalasi
Di macOS, 
datatable dapat dengan mudah diinstal menggunakan 
pip :
 pip install datatable 
Di Linux, instalasi dilakukan dari distribusi biner:
 
Saat ini, 
datatable tidak berfungsi di bawah Windows, tetapi pekerjaan sedang berlangsung dalam arah ini, jadi dukungan Windows hanyalah masalah waktu.
Detail tentang cara menginstal 
datatable dapat ditemukan di 
sini .
Kode yang akan digunakan dalam artikel ini dapat ditemukan di repositori GitHub 
ini atau di 
sini di mybinder.org.
Membaca data
Kumpulan data yang akan kami uji di sini diambil dari Kaggle ( 
Data Pinjaman Klub Data ). Set ini terdiri dari data lengkap tentang semua pinjaman yang diterbitkan pada 2007-2015, termasuk status pinjaman saat ini (Lancar, Terlambat, Dibayar Penuh, dll.) Dan informasi pembayaran terbaru. File ini terdiri dari 2,26 juta baris dan 145 kolom. Ukuran dataset ini sangat ideal untuk menunjukkan kemampuan perpustakaan yang dapat 
datatable .
 
Mari memuat data ke objek 
Frame . Unit dasar analisis dalam sebuah 
datatable adalah 
Frame . Ini sama dengan 
DataFrame dari 
pandas atau tabel SQL. Yaitu, kita berbicara tentang data yang diatur sebagai larik dua dimensi di mana baris dan kolom dapat dibedakan.
▍Pemuatan data menggunakan dataat
 %%time datatable_df = dt.fread("data.csv") ____________________________________________________________________ CPU times: user 30 s, sys: 3.39 s, total: 33.4 s           Wall time: 23.6 s 
Fungsi 
fread() di atas adalah mekanisme yang kuat dan sangat cepat. Secara otomatis dapat mendeteksi dan memproses parameter untuk sebagian besar file teks, mengunduh data dari arsip .ZIP dan file Excel, mengambil data dengan URL, dan banyak lagi.
Selain itu, pengurai 
datatable memiliki fitur berikut:
- Secara otomatis dapat mendeteksi pembatas, heading, tipe kolom, aturan pelolosan karakter, dan sebagainya.
- Ia dapat membaca data dari berbagai sumber. Diantaranya adalah sistem file, URL, command shell, teks mentah, arsip.
- Ia mampu melakukan pembacaan data multithread untuk kinerja maksimum.
- Ini menampilkan indikator kemajuan saat membaca file besar.
- Itu bisa membaca file yang sesuai dan tidak sesuai dengan RFC4180 .
▍Mengunduh data menggunakan panda
Sekarang mari kita lihat berapa lama 
pandas perlu membaca file yang sama.
 %%time pandas_df= pd.read_csv("data.csv") ___________________________________________________________ CPU times: user 47.5 s, sys: 12.1 s, total: 59.6 s Wall time: 1min 4s 
Anda dapat melihat bahwa 
datatable jelas lebih cepat daripada 
pandas saat membaca dataset besar. 
Pandas dalam percobaan kami membutuhkan waktu lebih dari satu menit, dan waktu yang diperlukan oleh data diukur dalam detik.
Konversi Objek Bingkai
Objek 
Frame paket 
datatable ada dapat dikonversi ke objek 
DataFrame numpy atau 
pandas . Ini dilakukan seperti ini:
 numpy_df = datatable_df.to_numpy() pandas_df = datatable_df.to_pandas() 
Mari kita coba untuk mengonversi 
Frame sudah ada menjadi 
datatable menjadi 
pandas DataFrame dan lihat berapa lama.
 %%time datatable_pandas = datatable_df.to_pandas() ___________________________________________________________________ CPU times: user 17.1 s, sys: 4 s, total: 21.1 s Wall time: 21.4 s 
Tampaknya membaca file menjadi 
Frame datatable dan kemudian mengonversinya menjadi objek 
DataFrame pandas membutuhkan waktu lebih sedikit daripada memuat data ke 
DataFrame menggunakan 
pandas . Oleh karena itu, mungkin, jika Anda berencana untuk memproses sejumlah besar data menggunakan 
pandas , akan lebih baik memuatnya menggunakan 
datatable , dan kemudian mengubahnya menjadi 
DataFrame .
 type(datatable_pandas) ___________________________________________________________________ pandas.core.frame.DataFrame 
Properti dasar dari objek Frame
Pertimbangkan properti dasar objek 
Frame dari 
datatable . Mereka sangat mirip dengan properti serupa dari objek 
DataFrame dari 
pandas :
 print(datatable_df.shape)        
Di sini kita dapat menggunakan metode 
head() , yang menampilkan 
n baris pertama:
 datatable_df.head(10) 
10 baris pertama objek Frame dari dataatWarna header menunjukkan tipe data. Merah menunjukkan garis, hijau menunjukkan bilangan bulat, biru menunjukkan angka floating-point.
Statistik Ringkasan
Menghitung statistik ringkasan dalam 
pandas adalah operasi yang membutuhkan banyak memori untuk menyelesaikannya. Dalam kasus 
datatable ini tidak demikian. Berikut adalah perintah yang dapat Anda gunakan untuk menghitung berbagai metrik dalam data yang dapat 
datatable :
 datatable_df.sum()      datatable_df.nunique() datatable_df.sd()       datatable_df.max() datatable_df.mode()     datatable_df.min() datatable_df.nmodal()   datatable_df.mean() 
Kami menghitung nilai rata-rata di atas kolom menggunakan 
datatable dan 
pandas dan menganalisis waktu yang diperlukan untuk menyelesaikan operasi ini.
▍ Mencari rata-rata menggunakan datatable
 %%time datatable_df.mean() _______________________________________________________________ CPU times: user 5.11 s, sys: 51.8 ms, total: 5.16 s Wall time: 1.43 s 
▍ Menemukan rata-rata menggunakan panda
 pandas_df.mean() __________________________________________________________________ Throws memory error. 
Seperti yang Anda lihat, di 
pandas kami tidak bisa mendapatkan hasilnya - kesalahan yang terkait dengan memori dikeluarkan.
Manipulasi data
Frame dan 
DataFrame adalah struktur data yang berupa tabel. Dalam 
datatable , tanda kurung siku digunakan untuk memanipulasi data. Ini mirip dengan cara kerjanya dengan matriks konvensional, tetapi di sini, saat menggunakan tanda kurung, Anda dapat menggunakan fitur tambahan.
Bekerja dengan data yang dapat didata menggunakan kurung sikuDalam matematika, ketika bekerja dengan matriks, konstruksi bentuk 
DT[i, j] juga digunakan. Struktur serupa dapat ditemukan di C, C ++ dan R, dalam paket 
pandas dan 
numpy , serta dalam banyak teknologi lainnya. Pertimbangkan untuk melakukan manipulasi data umum dalam data.
▍ Membentuk Baris atau Sampel Kolom
Kode berikut memilih semua baris dari kolom 
funded_amnt :
 datatable_df[:,'funded_amnt'] 
Pilih semua baris kolom funded_amntBerikut cara memilih 5 baris dan 3 kolom pertama:
 datatable_df[:5,:3] 
Pemilihan 5 baris pertama dan 3 kolom▍Menyortir data menggunakan datatable
Urutkan set data dengan kolom yang dipilih:
 %%time datatable_df.sort('funded_amnt_inv') _________________________________________________________________ CPU times: user 534 ms, sys: 67.9 ms, total: 602 ms Wall time: 179 ms 
▍Menyortir data menggunakan panda
 %%time pandas_df.sort_values(by = 'funded_amnt_inv') ___________________________________________________________________ CPU times: user 8.76 s, sys: 2.87 s, total: 11.6 s Wall time: 12.4 s 
Perhatikan perbedaan signifikan dalam waktu yang diperlukan untuk mengurutkan data dan 
pandas .
El Hapus baris dan kolom
Berikut cara menghapus kolom bernama 
member_id :
 del datatable_df[:, 'member_id'] 
Pengelompokan
Datatable, seperti 
pandas , mendukung kemampuan pengelompokan data. Mari kita lihat bagaimana cara mendapatkan rata-rata kolom 
funded_amound , data yang dikelompokkan berdasarkan kolom 
grade .
▍Mengelompokkan data menggunakan datatable
 %%time for i in range(100):   datatable_df[:, dt.sum(dt.f.funded_amnt), dt.by(dt.f.grade)] ____________________________________________________________________ CPU times: user 6.41 s, sys: 1.34 s, total: 7.76 s Wall time: 2.42 s 
Di sini Anda dapat melihat penggunaan konstruksi 
.f . Ini disebut frame proxy - mekanisme sederhana yang memungkinkan Anda untuk merujuk ke objek 
Frame yang saat ini beberapa tindakan sedang dilakukan. Dalam kasus kami, 
dt.f sama dengan 
datatable_df .
▍ Mengelompokkan data menggunakan panda
 %%time for i in range(100):   pandas_df.groupby("grade")["funded_amnt"].sum() ____________________________________________________________________ CPU times: user 12.9 s, sys: 859 ms, total: 13.7 s Wall time: 13.9 s 
Penyaringan garis
Sintaksis penyaringan mirip dengan sintaksis pengelompokan. 
loan_amnt garis 
loan_amnt yang nilai 
loan_amnt lebih besar dari 
funded_amnt .
 datatable_df[dt.f.loan_amnt>dt.f.funded_amnt,"loan_amnt"] 
Menyimpan Objek Bingkai
Isi objek 
Frame dapat ditulis ke file CSV, yang memungkinkan penggunaan data di masa depan. Ini dilakukan seperti ini:
 datatable_df.to_csv('output.csv') 
Anda dapat membaca tentang metode yang dapat 
datatable lainnya untuk bekerja dengan data di 
sini .
Ringkasan
Modul Python yang dapat 
datatable pasti lebih cepat daripada 
pandas biasa. Ini juga merupakan anugerah bagi mereka yang perlu memproses set data yang sangat besar. Sejauh ini, satu-satunya minus 
datatable dibandingkan dengan 
pandas adalah jumlah fungsionalitas. Namun, pekerjaan aktif sedang dilakukan pada 
datatable , sehingga sangat mungkin bahwa di masa depan, data akan melampaui 
pandas di semua arah.
Pembaca yang budiman! Apakah Anda berencana untuk menggunakan paket 
datatable dalam proyek Anda?

