Python Data Science : Pandas — Part 1
Advantages Library and Read/Write Files CSV/ Excel/JSON
Pandas merupakan library opensource dengan BSD licence, menawarkan high-performance, easy-to-use data structure dan data analysis tools untuk bahasa pemrograman Python [1]. Pandas memungkinkan datascientist untuk melakukan import data dari berbagai sumber mulai dari CSV, Excel, SQL bahkan sampai binary HDF5. Pandas memiliki banyak variasi operasi data manipulation sepery groupby, join, merge, melt, concatenation dan juga untuk keperluan data cleansing seperti filtering dan replacing [2].
Data Frame
Pandas merepresentasikan data sebagai Data Frame. Data Frame sendiri merupakan struktur data berbentuk tabel dua dimensi dengan ukuran yang dapat berubah-ubah dan dapat menampung data heterogen (integer, text, decimal, dll.). Data Frame disusun oleh Baris, Kolom dan Data [3].
Advantages Pandas Library
1. Kemampuan untuk menghandle data yang sangat besar
Ketika membaca file mengunakan Pandas, kita dapat memilah file tersebut menjadi beberapa bagian kecil. Setelah itu kita bisa melakukan preprocessing data untuk mendapatkan data yang sudah bersih dan hanya diperlukan [4].
2. Memiliki Feature yang sangat banyak
Pandas memiliki banyak fitur yang diperlukan untuk data analisis seperti untuk melakukan filtering dengan beragam kondisi atau segmentasi dan segregasi data sesuai dengan preferensi[5].
3. Handling missing data
Pandas dapat menghandle missing data dengan menggunakan function fillna(). Nilai yang hilang dapat diganti dengan nilai khusus atau nilai bertambah seperti rata-rata, median [6][7].
4. Cleaning up
Pandas dapat mendeteksi data yang hilang, tidak sesuai, atau tidak standar dan menggantinya dengan format yang umum atau umumnya diisi dengan median data. Function isnull() pada pandas dapat mengidentifikasi data pada baris kolom tertentu apakah kosong atau tidak, dan dengan mengunakan function fillna() kita bisa mengisinya dengan nilai yang standar [6][8].
5. Input and output tools dengan support banyak format file
Pandas dapat membaca dan menulis dari dan ke berbagai jenis file mulai dari CSV, Excel, SQL, JSON, bahkan binary data seperti HDF5 [6][2].
6. Merging and joining of Dataframe
Pandas memiliki kemampuan untuk melakukan merging dan joining data sama seperti pada RDBMS SQL [9]. Jenis Merging dan joining data frame yang bisa dilakukan oleh Pandas, sebagai berikut :
- Inner Merge / Inner join
- Left Merge / Left outer join
- Right Merge / Right outer join
- Outer Merge / Full outer join
7. A lot of time series
Pandas memberikan kemudahan dalam analisis data time series, yang dapat menjadikan index sebagai date time value, konversi antar time zone, konversi dari string date time menjadi date time, advance time series filtering, timeseries data plotting, rolling_data by average, sum, max, min dan lain sebagainya [10][11].
8. Visualization
Pandas menyediakan fitur plot data yang sangat mudah digunakan. mulai dari histogram, line chart, bar chart, box plot, scatter plot, kernel density plot sampai plotting data untuk data timeseries [12].
Pandas Hands On
Persiapan :
- Install Anaconda (Python package manager), Jupyter Notebook (python IDE) dan library yang diperlukan. Bisa dilihat disini.
- Pengetahuan dasar Python Programming. Bisa dilihat disini.
- Download Dataset (kali ini akan menggunakan dataset COVID-19 dari kaggle.com). dapat didownload disini.
Basic Pandas Operation
Read File (CSV, EXCEL, JSON) menggunakan Pandas.
Terlebih dahulu kita buka jupyter notebook. Setelah itu buat file notebook baru. Pastikan file CSV dataset COVID-19 yang telah didownload satu folder dengan file notebook yang dibuat.
Setelah itu kita import library pandas,
import pandas as pd
untuk cek versi pandas yang digunakan, jalankan command berikut,
pd.__version__
Selanjutnya kita akan coba membaca file CSV COVID-19 yang telah didownload dengan menggunakan fungsi pd.read_csv().
pd.read_csv("COVID19_line_list_data.csv")
Diatas terlihat file CSV yang dibaca mengunakan Pandas dapat dibentuk ulang menjadi Data Frame. Jika kita lihat raw CSV COVID-19 tersebut langsung menggunakan teks editor, maka terlihat jika tiap kolom data dipisahkan koma (,) dan tiap baris data merupakan 1 record data.
Kita dapat menyimpan Pandas Data Frame kedalam variable untuk kebutuhan analisa selanjutnya,
COV19_WORLD = pd.read_csv("COVID19_line_list_data.csv")# Print Dataframe
COV19_WORLD
Untuk menampilkan beberapa baris data teratas, bisa menggunakan perintah berikut,
COV19_WORLD.head()
Perintah diatas hanya akan menampilkan 5 data teratas, kita dapat mengatur ulang jumlah data yang ingin dikeluarkan dengan menambahkan argumen banyaknya baris data. Berikut command jika ingin menampilkan 3 data teratas,
COV19_WORLD.head(3)
Kita juga dapat menampilkan data paling akhir dari Data Frame dengan menggunakan command berikut,
COV19_WORLD.tail()
Sama seperti sebelumnya, kita dapat mengatur ulang jumlah data yang ingin ditampilkan dengan menambahkan argumen jumlah baris data. Berikut jika ingin menampilkan sebanyak 3 data paling akhir dari Data Frame,
COV19_WORLD.tail(3)
Kita juga dapat melakukan random sampling dari data yang diambil dengan menggunakan command berikut,
COV19_WORLD.sample(5)
Kita dapat menampilkan rangkuman dari Data Frame yang sedang diproses sehingga kita dapat melihat banyaknya kolom, tipe-data tiap kolom, banyaknya baris data sampai alokasi memori.
COV19_WORLD.info()
Terlihat pada summary diatas, Data Frame yang kita miliki mempunyai 27 kolom dan 1085 entri data. Selanjutnya kita akan coba mengambil hanya sebagian kolom yang diperlukan. Kolom yang akan kita gunakan adalah :
reporting date, location, country, gender, age, death, recovered
Jalankan command berikut untuk menampilkan kolom diatas,
COV19_WORLD[['reporting date', 'location', 'country', 'gender', 'age', 'death', 'recovered']]
Kita simpan Data Frame hasil filtering kolom tersebut kedalam variable baru, jalankan command berikut,
COV19_WORLD_FILT_COL = COV19_WORLD[['reporting date', 'location', 'country', 'gender', 'age', 'death', 'recovered']]COV19_WORLD_FILT_COL
Selanjutnya kita dapat mengubah nama kolom pada Data Frame dengan menggunakan command berikut,
COV19_WORLD_FILT_COL = COV19_WORLD_FILT_COL.rename(columns={'reporting date': 'REPORTING_DATE', 'location' : 'LOCATION', 'country' : 'COUNTRY', 'gender' : 'GENDER', 'age' : 'AGE', 'death' : 'DEATH', 'recovered' : 'RECOVERED'})COV19_WORLD_FILT_COL
Selanjutnya kita akan menyimpan Data Frame kedalam file CSV. Jalankan command berikut,
COV19_WORLD_FILT_COL.to_csv("COVID19_line_list_data_compact.csv")
Selanjutnya pada screen Home Jupyter kita akan melihat ada file baru dengan nama ‘COVID19_line_list_data_compact.csv’,
Menyimpan Data Frame kedalam Excel dengan nama ‘COVID19_line_list_data_compact.xlsx’, jalankan command berikut,
COV19_WORLD_FILT_COL.to_excel("COVID19_line_list_data_compact.xlsx")
Kita juga dapat menyimpan Data Frame kedalam format TXT dengan pemisah ‘tab’ dengan menggunakan fungsi .to_csv() serta menambahkan parameter sep=’\t’ dimana \t merupakan string literal untuk ‘tab’. Berikut command untuk menyimpan Data Frame kedalam format txt file dengan pemisah ‘tab’.
COV19_WORLD_FILT_COL.to_csv("COVID19_line_list_data_compact.txt", sep='\t')
Selain itu kita juga dapat menyimpan Data Frame kedalam JSON, dengan menggunakan fungsi .to_json() kita dapat mengatur format JSON yang akan disimpan menggunakan parameter orient=’’ dengan default oprion columns. varian parameter orient diantaranya ‘split’, ‘records’, ‘index’, ‘columns’,
‘values’ dan ‘table’. Berikut command untuk menyimpan Data Frame kedalam JSON file dengan format records,
COV19_WORLD_FILT_COL.to_json("COVID19_line_list_data_compact.json", orient='records')
Setelah itu kita akan mencoba membaca file compact COVID-19 yang sudah disimpan keberbagai jenis file diatas (CSV, TXT, EXCEL, JSON) menggunakan Pandas. Pertama kita coba baca file COVID19_line_list_data_compact.csv .
pd.read_csv("COVID19_line_list_data_compact.csv")
Dan kita juga bisa membaca file TXT yang sebelumnya disimpan dengan separator ‘tab’ dengan menggunakan command berikut, tambahkan parameter sep=’\t’ agar tiap kolom pada file bisa dibaca oleh Pandas.
pd.read_csv("COVID19_line_list_data_compact.txt", sep='\t')
Selanjutnya kita akan membaca file Excel yang sebelumnya disimpan,
pd.read_excel("COVID19_line_list_data_compact.xlsx", sheet_name='Sheet1')
Jika terdapat error berikut, kita perlu meng-install library dependency tambahan xlrd melalui Anaconda Prompt. [Jika tidak muncul error, bagian ini bisa di skip]
Install library xlrd via Anaconda Prompt :
conda install xlrd
Setelah berhasil di-install (xlrd), kita dapat menjalankan perintah untuk membaca file excel menggunakan pandas,
Yang terakhir kita akan membaca file JSON menggunakan Pandas sehingga bisa diproses dalam bentuk Data Frame, menggunakan command berikut,
pd.read_json("COVID19_line_list_data_compact.json")
Sekian untuk Python Data Science : Pandas — Part 1 dipart 2 akan dibahas mengenai teknik Filtering, Grouping, Merging dan Joining data menggunakan Pandas.
Terima kasih….
Sumber :
- https://pandas.pydata.org/pandas-docs/stable/index.html
- https://en.wikipedia.org/wiki/Pandas_(software)
- https://www.geeksforgeeks.org/python-pandas-dataframe/
- https://towardsdatascience.com/why-and-how-to-use-pandas-with-large-data-9594dda2ea4c
- https://data-flair.training/blogs/advantages-of-python-pandas/
- https://www.quora.com/What-are-the-benefits-of-a-Pythons-pandas-over-Microsoft-Excel-for-data-analysis
- https://towardsdatascience.com/handling-missing-values-with-pandas-b876bf6f008f
- https://towardsdatascience.com/data-cleaning-with-python-and-pandas-detecting-missing-values-3e9c6ebcf78b
- https://www.shanelynn.ie/merge-join-dataframes-python-pandas-index-1/
- https://towardsdatascience.com/basic-time-series-manipulation-with-pandas-4432afee64ea
- https://towardsdatascience.com/getting-started-with-pandas-time-series-functionality-c10b6ee733a4
- https://stackabuse.com/pandas-library-for-data-visualization-in-python/