Wednesday, 5 September 2018

10 Command Line Tools Untuk Data Analisis di Linux

Biasanya kebanyakan orang akan melakukan pengolahan data menggunakan GUI dengan spreadsheet tool. Tapi kali ini kita akan membahas bagaimana melakukan analisis data menggunakan 10 command line tools.

Untuk yang ingin mencoba tutorial ini dapat menggunakan data .CSV yang dapat didownload pada link berikut GitHub dengan tipe data .CSV (comma separated value).

1. head dan tail

Sebenarnya kita dapat menggunakan command "cat" untuk menampilkan sebuah file dalam terminal. Hanya ketika data yang akan kita tampilkan sangat banyak data yang tampil pada terminal menjadi sangat panjang.

Gunakan command head dan tail. Kedua command ini adalah sebuah utilities untuk menampilkan data dengan pendekatan yang berbeda dengan command "cat". Dengan menggunakan "head" dan "tail" kita dapat menentukan berapa baris yang ingin kita tampilkan dalam layar. "head" berarti baris yang tampil akan dihitung dari baris paling atas, sementara "tail" akan melakukan sebalikya dari command "head".


Hasil dari command di atas menghasilkan 3 baris terakhir dari file, data yang ditampilan dengan cepat adalah out a date, author name, title dan dan beberapa informasi, tapi permasalah dari hasil di atas adalah kita tidak tahu nama setiap column. Sekarang kita coba tampilkan header dari data tersebut.

Sekarang kita tahu nama setiap column dari data yang kita tampilkan.

2. wc

Sekarang kita akan mencari tahu seberapa besar data dalam file menggunakan command "wc" (word count), command "wc" dapat menghitung jumlah bytes, characters, words, atau baris di dalam sebuah file. Yang akan kita lakukan adalah mencari tahu jumlah baris dalam file kita.

File contoh kita memiliki 93 baris, dan yang harus kita ingat adalah baris pertama dalam file adalah header jadi kita memiliki 92 data.

3. grep

Command "grep" adalah yang paling powerfull menurut saya, dengan "grep" kita dapat melakukan pencarian pada file atau inputan lain dengan pattern tertentu yang kita definisikan dengan menggunakan regular expressions. Kita lihat contoh simpel dari "grep".

Kita menggunakan command "grep" dengan diikuti oleh flag "-i", flag ini meminta pencarian "grep" untuk tidak case sensitive, lalu diikuti oleh pattern yang ingin kita cari lalu file yang menjadi target pencarian kita. Kita mendapatkan empat baris data yang berhubungan dengan "security" tapi bagaimana jika hasil pencarian menghasilkan data yang lebih banyak dari ini. Caranya kita dapat menggunakan sebuah "pipe" pada command kita dan mengkombinasikannya dengan command "wc". Dengan mengkombinasikan pencarian "grep" dan wc kita dapat menghasilkan jumlah data dari pencarian "grep".

Pada command di atas "wc" akan mengambil output dari "grep" untuk melakukan penghitungannya tanpa harus menyimpan hasil dari "grep" terlebih dahulu. Inilah mengapa menggunakan pipe input dan output, khususnya saat menggabungkan script pada shell membuat terminal menjadi sangat powerful tool untuk data analysis.

4. tr

Sebuah file dengan format CSV sangat membantu untuk melakukan analysis data, tapi terkadang kita juga ingin melakukan convert file menjadi format yang berbeda mungkin karena akan digunakan pada application yang berbeda. Seperti misalnya kita membutuhkan "tab" sebagai separators dari pada menggunakan koma, atau kita ingin menambahkan format HTML pada file sehingga kita bisa membuat sebuah table. Command "tr" akan melakukannya untuk kita, dengan mengubah satu type data menjadi type data yang lain. Seperti contoh sebelumnya command ini juga dapat menggunakan pipe input dan output.

Sekarang kita akan mencoba command "tr" yang dikombinasikan dengan grep.

Apa yang command di atas lakukan? Pertama kita melakukan pencarian tanggal yang dimaksudkan menggunakan "grep". Lalu kita menggunakan pipe pada output ini, dimana kita mengubah koma menjadi tab. Selanjutnya kita menggunakan karakter ">" sebagai perintah agar output dari command menjadi sebuah file baru dan tidak ditampilkan di layar.

Sekarang kita coba lihat hasil dari command di atas.

5. sort

Sekarang bagaimana jika kita ingin mempelajari secara lebih detail sebuah column? Kita akan mencari artikel mana yang paling panjang dalam daftar? Sekarang kita memiliki daftar artikel mulai dari 20 januari, kita dapat menggunakan perintah pengurutan untuk mengurutkan bedasarkan kolom jumlah kata. Sebenarnya kita bisa langsung membuat perintah untuk melakukan pengurutan jumlah kata pada column tertentu langsung dari hasil output. Tapi terkadang lebih mudah jika kita memecah langkah yang panjang menjadi langkah-langkah kecil dari pada membuat command yang sangat panjang dalam satu waktu.

Ini adalah contoh dengan command panjang, coba kita perjelas apa yang sebenarnya terjadi. Pertama kita menggunakan command sort untuk mengurutkan berdasarkan jumlah kata. Options "-nr" memberitahukan sort melakukan sebuah sort numeric, dan mengembalikan menghasilkan yang telah dibalik (largest to smallest). Selanjutnya t$'\t' memberitahukan sort bahwa pembatasnya (delimiter) adalah tab ('\t'). Lalu "$" adalah tanda untuk memberi tahu shell bahwa ini adalah string yang harus diproses dan diubah menjadi tab aktual. Lalu "-k8" berfungsi untuk memberitahukan sort bahwa penghitungan word dilakukan pada column ke-8.

6. sed

Terkadang kita ingin melakukan select pada baris tertentu dalam file. "sed", "sed" untuk stream editor adalah salah satu cara untuk melakukan ini. Lalu bagaimana kalau kita ingin menggabungkan beberapa file yang kesemuanya memiliki header? Karena kita hanya membutuhkan satu header untuk satu file yang kita punya, jadi kita harus mempunyai cara bagaimana menghilangkan header yang tidak dipakai. Atau kita hanya mengambil beberapa baris yang kita inginkan saja? Jawabannya adalah "sed". Dengan "sed" juga kita dapat menemukan dan mengganti sebuah file secara massal.

Sekarang kita buat file yang tidak memiliki header dari file artikel yang ada, sehingga akan cocok jika kita menggabungkan ke file lain. (Misal, kita memiliki file berbeda setiap bulan dan ingin menggabungkannya)

Option '1 d' memberitahukan kepada sed untuk menghapus baris pertama pada file. Sebenarnya sed lebih powerful dari hanya melakukan ini. Cobalah untuk membacanya lebih dalam. Dan saya akan coba bahasa "sed" dalam satu artikel sendiri.

7. cut

Selanjutnya bagaiman jika saya ingin menghapus sebuah column bukan sebuah baris. Atau bagaimana jika kita hanya ingin menyisakan satu column pada file kita. Sekarang kita coba membuat daftar penulis baru dari contoh yang kita buat di atas.

Dalam contoh ini, kita memberitahukan "cut" dengan option -d',' untuk memberitahu "cut" bahwa file dipisahkan dengan koma. dan dengan option "-f3" kita memberitahukan pada "cut" bahwa kita menginginkan column ketiga lalu mengirimkan output menjadi sebuah file baru author.txt.

8. uniq

Contoh terakhir kita adalah mengambil membuat daftar author, tapi berapa banyak author yang uniq dalam daftar yang kita miliki? Berapa banyak tulisan yang dimiliki setiap author? Dengan "uniq" kita akan mudah menemukannya. Marikita lakukan "sort" pada file, lalu temukan yang uniques dan tampilkan file dengan jumlah artikel yang ditulis oleh author.

Melihat sekilas pada file, kita sekarang dapat melihat berapa banyak artikel yang dimiliki setiap penulis. Sekarang kita lihat tiga baris untuk memastikannya berhasil.

9. awk

Satu lagi tool untuk melakukan analysis data pada command terminal. "awk", "awk" adalah salah satu yang powerful, silakan explore lebih banyak untuk tool ini.

Kita akan kembali menggunakan file TSV yang berisi artikel dari tanggal 20 Januari, kita akan gunakan untuk membuat daftar baru dari penulis artikel tersebut, bersama dengan jumlah kata yang ditulis oleh setiap penulis.

Mari kita lihat apa yang sedang terjadi pada command di atas, -F "\t" yang ditulis setelah "awk" memberitahukan kalau kita bekerja dengan file yang dipisahkan oleh tab. Dan di dalam kurung karawal kita memberitahukan kepada "awk" untuk hanya mengeksekusi sedikit bit dari code. Kita memberitakukan untuk melakukan print column ketiga dengan flag "$3", dan column terakhir dengan "$NF" ("number of fields") dan menempatkan dua spaces antara agar terlihat lebih rapih.

Itulah beberapa command pada terminal yang dapat kita manfaatkan untuk melakukan pengolahan data (data analysis).

No comments:

Post a comment