Cara menggunakan list to sqlite python

Pandas merupakan salah satu library yang disediakan oleh Python. Dimana, andas berguna untuk melakukan analisis dan pengolahan data dari menengah sampai besar.

Pada pembahasan kali ini, kita akan lebih banyak menggunakan Pandas khususnya untuk data manipulation! Yuk kita simak lebih dalam!

Memanggil Library Pandas

Pandas adalah library python open source yang biasanya digunakan untuk kebutuhan data analisis. Pandas membuat Python supaya dapat bekerja dengan data yang berbentuk tabular seperti spreadsheet dengan cara pemuatan data yang cepat, manipulasi data, menggabungkan data, serta ada berbagai fungsi yang lain.

Pertama-tama, kita harus import dulu Pandas library di Python script yang telah tersedia.

biasanya ketika menggunakan library Pandas, library Numpy juga diimport, sehingga menjadi

DataFrame & Series

Di Pandas terdapat 2 kelas data baru yang digunakan sebagai struktur dari spreadsheet:

  1. Series: satu kolom bagian dari tabel dataframe yang merupakan 1 dimensional numpy array sebagai basis data nya, terdiri dari 1 tipe data [integer, string, float, dll].

Contoh Series:

2. DataFrame: gabungan dari Series, berbentuk rectangular data yang merupakan tabel spreadsheet itu sendiri [karena dibentuk dari banyak Series, tiap Series biasanya punya 1 tipe data, yang artinya 1 dataframe bisa memiliki banyak tipe data].

Atribut DataFrame & Series

Dataframe dan Series memiliki sangat banyak atribut yang digunakan untuk transformasi data, tetapi ada beberapa attribute yang sering dipakai. Di sini series number_list dan data frame matrix_list pada subbab sebelumnya digunakan kembali.

1. Attribute .info[]

Attribute .info[] digunakan untuk mengecek kolom apa yang membentuk dataframe itu, data types, berapa yang non null, dll. Attribute ini tidak dapat digunakan pada series, hanya pada data frame saja.

2. Attribute .shape[]

Attribute .shape digunakan untuk mengetahui berapa baris dan kolom, hasilnya dalam format tuple [baris, kolom].

3. Attribute .dtypes

Attribute .dtypes digunakan untuk mengetahui tipe data di tiap kolom. Tipe data object: kombinasi untuk berbagai tipe data [number & text, etc].

4. Attribute .astype[nama_tipe_data]

Attribute .astype[nama_tipe_data] untuk convert tipe data berdasarkan tipe data seperti: float, int, str, numpy.float, numpy.int ataupun numpy.datetime.

5. Attribute .copy[]

Attribute .copy[] digunakan melakukan duplikat, untuk disimpan di variable yang berbeda mungkin supaya tidak loading data lagi.

6. Attribute .to_list[]

Attribute .to_list[] digunakan untuk mengubah series menjadi list dan tidak dapat digunakan untuk dataframe.

7. Attribute .unique[]

Attribute .unique[] digunakan menghasilkan nilai unik dari suatu kolom, hasilnya dalam bentuk numpy array. Attribute ini hanya digunakan pada series saja.

8. Attribute .index

Attribute .index digunakan untuk mencari index/key dari Series atau Dataframe.

9. Attribute .columns

Attribute .columns digunakan untuk mengetahui apa saja kolom yang tersedia di dataframe tersebut [hanya digunakan untuk dataframe saja].

10. Attribute .loc

Attribute .loc digunakan slice dataframe atau series berdasarkan nama kolom dan/atau nama index.

11. Attribute .iloc

Attribute .iloc digunakan untuk slice dataframe atau series berdasarkan index kolom dan/atau index.

Creating Series & Dataframe from List

Untuk membuat Series atau Dataframe bisa dari berbagai macam tipe data container/mapping di python, seperti list dan dictionary, maupun dari numpy array.

Pada sub bagian ini, kamu akan membuat Series dan Dataframe yang bersumber dari list. Sekedar meninjau bahwa, list merupakan sebuah kumpulan data berbagai macam tipe data, yang mutable [dapat diganti].

Series

Contoh membuat series dari list:

DataFrame

Contoh membuat dataframe dari list of list:

Creating Series & Dataframe from Dictionary

Untuk membuat Series atau Dataframe bisa dari berbagai macam tipe data container/mapping di python, seperti list dan dictionary, maupun dari numpy array.

Pada sub bagian ini, akan membuat Series dan Dataframe yang bersumber dari dictionary. Sekedar meninjau bahwa, dictionary merupakan kumpulan data yang strukturnya terdiri dari key dan value.

Series

Contoh membuat series dari dictionary:

DataFrame

Contoh membuat dataframe dari dict dengan setiap pasangan key dan value-nya berisi list yang sama panjangnya:

Creating Series & Dataframe from Numpy Array

Untuk membuat Series atau Dataframe bisa dari berbagai macam tipe data container/mapping di python, seperti list dan dictionary, maupun dari numpy array.

Pada sub bagian ini, akan membuat Series dan Dataframe yang bersumber dari numpy array. Sekedar meninjau bahwa, numpy array kumpulan data yang terdiri atas berbagai macam tipe data, mutable, tapi dibungkus dalam array oleh library Numpy.

Series

Contoh membuat series dari numpy array 1D:

DataFrame

Contoh membuat dataframe dari numpy array 2D:

Dataset I/O

Pandas menyediakan berbagai method untuk membaca file tersebut hanya dengan dipanggil method itu, code yang lebih simple dan loading yang lebih, tentu saja output nya dapat berupa Series atau Dataframe.

Terdapat sangat banyak file yang dapat dibaca/dapat disimpan oleh Pandas, tapi ada beberapa file yang paling umum dan sering digunakan oleh praktisi data seperti berikut ini:

  1. CSV [Comma Separated Values], antar data dalam satu baris dipisahkan oleh comma, “,”.
  2. TSV [Tab Separated Values], antar data dalam satu baris dipisahkan oleh “Tab”.
  3. Excel
  4. Google BigQuery
  5. SQL Query
  6. JSON [Java Script Object Notation]
Read Dataset — CSV dan TSV

CSV dan TSV pada hakikatnya adalah tipe data text dengan perbedaan terletak pada pemisah antar data dalam satu baris. Pada file CSV, antar data dalam satu baris dipisahkan oleh comma, “,”. Namun, pada file TSV antar data dalam satu baris dipisahkan oleh “Tab”.

Fungsi .read_csv[] digunakan untuk membaca file yang value nya dipisahkan oleh comma [default], terkadang pemisah value nya bisa di set ‘\t’ untuk file tsv [tab separated values].

Notes :
Dataset csv : //dqlab-dataset.s3-ap-southeast-1.amazonaws.com/sample_csv.csv

Dataset tsv : //dqlab-dataset.s3-ap-southeast-1.amazonaws.com/sample_tsv.tsv

Membaca file CSV

Jika dijalankan akan menghasilkan output di console:

Membaca file TSV

Jika dijalankan akan menghasilkan output di console:

Read Dataset — Excel

File Excel dengan ekstensi *.xls atau *.xlsx cukup banyak digunakan dalam menyimpan data. Pandas juga memiliki fitur untuk membaca file excel.

Notes :

Dataset : //dqlab-dataset.s3-ap-southeast-1.amazonaws.com/sample_excel.xlsx

Fungsi .read_excel[] digunakan untuk membaca file excel menjadi dataframe pandas.

Jika dijalankan code di atas akan menghasilkan output di console seperti berikut

Read Dataset — JSON

Method .read_json[] digunakan untuk membaca URL API yang formatnya JSON dan merubahnya menjadi dataframe pandas. Method ini dapat digunakan seperti yang dicontohkan berikut ini:

Dataset JSON: //dqlab-dataset.s3-ap-southeast-1.amazonaws.com/covid2019-api-herokuapp-v2.json

Setelah di-run, barulah akan menampilkan 10 data teratas dari dataset yang telah disediakan

Read Dataset — SQL

Fungsi .read_sql[] atau .read_sql_query[] digunakan untuk membaca query dari database dan translate menjadi pandas dataframe, contoh case ini database sqlite.

Jika menggunakan .read_sql_query

Output:

Jika menggunakan .read_sql

Output:

Jika dilihat dari kedua hasil output, maka terlihat keduanya menghasilkan output yang sama

Read Dataset — Google BigQuery

Untuk data yang besar [big data], umumnya digunakan Google BigQuery. Layanan ini dapat digunakan jika telah memiliki Google BigQuery account.

Fungsi .read_gbq[] digunakan untuk membaca Google BigQuery table menjadi dataframe pandas.

project_id=”XXXXXXXX” adalah ID dari Google BigQuery account.

Outputnya:

Write Dataset

Dalam bekerja sebagai data scientist/analis setelah dilakukan data cleaning dataset yang sudah rapi tentunya disimpan terlebih dahulu ke dalam media penyimpanan.

Pandas menyediakan fitur demikian secara ringkas melalui penerapan method pada dataframe/series yang ditabelkan berikut ini.

Method .to_csv[]

Method .to_csv ini digunakan untuk export dataframe kembali ke csv atau tsv

CSV

df.to_csv["csv1.csv", index=False]

TSV

df.to_csv["tsv1.tsv", index=False, sep='\t']
Method to_clipboard[]

Method to_clipboard[] digunakan untuk export dataframe menjadi bahan copy jadi nanti bisa tinggal klik paste di excel atau google sheets

df.to_clipboard[]
Method .to_excel[]

Method .to_excel[] digunakan untuk export dataframe menjadi file excel

df_excel.to_excel["xlsx1.xlsx", index=False]
Method .to_gbq[]

Method .to_gbq digunakan untuk export dataframe menjadi table di Google BigQuery

df.to_gbq["temp.test", project_id="XXXXXX", if_exists="fail"]

temp: nama dataset,

test: nama table

if_exists: ketika tabel dengan dataset.table_name yang sama sudah ada, apa action yang ingin dilakukan

["fail": tidak melakukan apa-apa,

"replace': membuang tabel yang sudah ada dan mengganti yang baru,

"append": menambah baris di tabel tersebut dengan data yang baru

Head & Tail

Seperti yang telah dipelajari sebelumnya bahwa ada method .head yang diterapkan pada suatu variabel bertipe pandas dataframe/series.

Method .head ditujukan untuk membatasi tampilan jumlah baris teratas dari dataset. Sementara itu, method .tail ditujukan untuk membatasi jumlah baris terbawah dari dataset.

Secara umum kedua method ini memiliki bentuk

[nama_dataframe].head[n]

dan

[nama_dataframe].tail[n]

dengan n merupakan jumlah baris yang akan ditampilkan, jika tidak disebutkan n = 5 [sebagai nilai default dari n].

Notes :

Dataset : //dqlab-dataset.s3-ap-southeast-1.amazonaws.com/sample_csv.csv

Berdasarkan file sample_csv.csv cetaklah 3 data teratas dan 3 data terbawah.

Dari syntax berikut menghasilkan output sebagai berikut:

3 data teratas:

3 data terbawah:

Indexing, Slicing dan Transforming

Sekarang kita masuk ke bagian indexing, slicing dan transforming. Apa itu? Mari kita pelajari bersama! Kita mulai dari Indexing

Indexing — Part 1

Index merupakan key identifier dari tiap row/column untuk Series atau Dataframe [sifatnya tidak mutable untuk masing-masing value tapi bisa diganti untuk semua value sekaligus].

Jika tidak disediakan, pandas akan membuat kolom index default secara otomatis sebagai bilangan bulat [integer] dari 0 sampai range jumlah baris data tersebut.

Kolom index dapat terdiri dari

  1. satu kolom [single index], atau
  2. multiple kolom [disebut dengan hierarchical indexing].

Index dengan multiple kolom ini terjadi karena unique identifier tidak dapat dicapai hanya dengan set index di 1 kolom saja sehingga membutuhkan beberapa kolom yang menjadikan tiap row menjadi unique.

Secara default setelah suatu data frame dibaca dari file dengan format tertentu, index-nya merupakan single index.

Indexing — Part 2.

Pada sub bab ini akan mencetak index dan kolom yang dimiliki oleh file “sample_csv.csv”. Untuk menentukan index dan kolom yang dimiliki oleh dataset yang telah dinyatakan sebagai sebuah dataframe pandas dapat dilakukan dengan menggunakan attribut .index dan .columns.

Berikut adalah contohnya:

Dari syntax berikut dapat disimpulkan bahwa

Indexing — Part 3

Di sub bab sebelumnya telah dibahas terkait single index, tentunya pada sub bab ini akan bahas multi index atau disebut juga dengan hierarchical indexing.

Untuk membuat multi index [hierarchical indexing] dengan pandas diperlukan kolom-kolom mana saja yang perlu disusun agar index dari data frame menjadi sebuah hirarki yang kemudian dapat dikenali.

Pada sub bab sebelumnya telah diberikan nama-nama kolom dari dataframe yang telah dibaca, yaitu

Selanjutnya akan membuat multi index dengan menggunakan kolom ‘order_id’, ‘customer_id’, ‘product_id’, dan ‘order_date’ dengan menggunakan method .set_index[].

berikut hasil tampilan dataframe df_x-nya

Untuk melihat multi index yang telah diset dapat dilakukan dengan

yang memberikan output

Perlu diketahui bahwa kumpulan index dari multi index adalah list dari banyak tuples, tuples nya merupakan kombinasi yang ada dari gabungan index-index tersebut. Dari multi index tersebut juga terdapat atribut levels yang menunjukkan urutan index, dalam case ini ‘order_id’ > ‘customer_id’ > ‘product_id’ > ‘order_date’.

yang menghasilkan output berupa

Indexing — Part 4

Terdapat beberapa cara untuk membuat index, salah satunya adalah seperti yang telah dilakukan pada sub bab sebelumnya dengan menggunakan method .set_index[].

Di sub bab ini akan menggunakan assignment untuk menset index dari suatu data frame. Untuk itu file “sample_excel.xlsx” yang digunakan

Perhatikan syntax berikut:

Berikut adalah hasil outputnya:

Note:

  • Cara yang ditunjukkan oleh baris ketujuh [ke 7] pada code editor di atas hanya berlaku jika index yang diassign tersebut memiliki panjang yang sama dengan jumlah baris dari dataframe.
  • Jika ingin kembalikan dataframe ke index defaultnya yaitu dari 0 s/d jumlah baris data — 1, maka dapat menggunakan method .reset_index[drop=True], argument drop=True bertujuan untuk menghapus index lama.
Indexing — Part 5

Jika file yang akan dibaca melalu penggunaan library pandas dapat dipreview terlebih dahulu struktur datanya maka melalui fungsi yang ditujukan untuk membaca file dapat diset mana kolom yang akan dijadikan index.

Fitur ini telah dimiliki oleh setiap fungsi yang digunakan dalam membaca data dengan pandas, yaitu penggunaan argumen index_col pada fungsi yang dimaksud. Untuk jelasnya dapat diperhatikan pada kode berikut ini.

Dari dataset sample_csv.csv, sample_tsv.tsv, atau sample_excel.xlsx sudah tahu bahwa kolom dataset adalah ‘order_id’; ‘order_date’; ‘customer_id’; ‘city’; ‘province’; ‘product_id’; ‘brand’; ‘quantity’; and ‘item_price’. Sehingga kode di atas digunakan langsung kolom ‘order_date’ pada saat membaca filenya.

Terlihat bahwa kolom order_date sudah jadi index, dan tentunya jumlah kolom dataframe berkurang satu, yaitu menjadi delapan kolom.

Slicing — Part 1

Seperti artinya slicing adalah cara untuk melakukan filter ke dataframe/series berdasarkan kriteria tertentu dari nilai kolomnya ataupun kriteria index-nya.

Terdapat 2 cara paling terkenal untuk slicing dataframe, yaitu dengan menggunakan method .loc dan .iloc pada variabel bertipe pandas DataFrame/Series. Method .iloc ditujukan untuk proses slicing berdasarkan index berupa nilai integer tertentu. Akan tetapi akan lebih sering menggunakan dengan method .loc karena lebih fleksibel.

Dataset belum dilakukan indexing, jadi slicing berdasarkan nilai kolomnya. Untuk itu “sample_csv.csv” dibaca kembali dan dipraktikkan metode .loc[] dengan mengambil tanggal 1 Januari 2019 dari kolom order_date dan product_id nya adalah P2154 dan P2556.

Berikut adalah hasil output

Slicing — Part 2

Dalam sub bab sebelumnya telah mempelajari bagaimana menslicing/filtering dataset dengan menggunakan method .loc pada kolom dataset.

Sekarang, menerapkan berdasarkan index. Tentu syaratnya adalah dataset sudah dilakukan indexing terlebih dahulu melalui penerapan method .set_index

Kita gunakan dengan dua cara:

Cara 1: Gunakan method .loc seperti yang dicontohkan berikut

Output cara 1:

Cara 2: Gunakan pd.IndexSlice sebagai varaibel untuk melakukan slicing index

Output cara 2:

Transforming — Part 1

Transform adalah ketika mengubah dataset yang ada menjadi entitas baru, dapat dilakukan dengan

  • konversi dari satu data type ke data type yang lain,
  • transpose dataframe
  • atau yang lainnya.

Hal yang biasa dilakukan pertama kali setelah data dibaca adalah mengecek tipe data di setiap kolomnya apakah sesuai dengan representasinya. Untuk itu dapat menggunakan attribut .dtypes pada dataframe yang telah kita baca tadi,

[nama_dataframe].dtypes

Untuk konversi tipe data, secara default system akan mendeteksi data yang tidak bisa di render as date type or numeric type sebagai object yang basically string. Tidak bisa di render oleh system ini karena berbagai hal, mungkin karena formatnya asing dan tidak dikenali oleh python secara umum [misal: date type data → ‘2019Jan01’].

Data contoh tersebut tidak bisa di render karena bulannya Jan tidak bisa di translate menjadi in form of number [00–12] dan tidak ada ‘-’ di antara tahun, bulan dan harinya. Jika seluruh data pada kolom di order_date sudah tertulis dalam bentuk ‘YYYY-MM-DD’ maka ketika dibaca, kolom order_date sudah langsung dinyatakan bertipe data datetime.

Untuk merubah kolom date_order yang sebelumnya bertipe object menjadi kolom bertipe datetime, cara pertama yang dapat dilakukan adalah menggunakan

pd.to_datetime[argumen]

dengan argumen adalah isi kolom dari dataframe yang akan dirubah tipe datanya, misal dalam format umum

nama_dataframe["nama_kolom"]

Sehingga lengkapnya dapat ditulis sebagai

df.to_csv["tsv1.tsv", index=False, sep='\t']
0

Selanjutnya, tipe data di kolom order_date yang semula bertipe objek menjadi bertipe datetime

Dataset : //dqlab-dataset.s3-ap-southeast-1.amazonaws.com/sample_csv.csv

Dengan syntax berikut, maka keluar hasil output sebagai berikut:

Berdasarkan hasil output, tipe data order_date yang semula dari tipe object menjadi tipe data datetime.

Transforming — Part 2

Pada sub bab ini akan mengubah tipe data pada kolom dataframe yang telah dibaca menjadi tipe data float [kolom quantity] dan tipe categori [kolom city].

Secara umum, untuk merubah ke numerik dapat menggunakan pd.to_numeric[], yaitu:

df.to_csv["tsv1.tsv", index=False, sep='\t']
1

Sedangkan untuk menjadi suatu kolom yang dapat dinyatakan sebagai kategory dapat menggunakan method .astype[] pada dataframe, yaitu

df.to_csv["tsv1.tsv", index=False, sep='\t']
2

Sekarang, kita akan mulai melakukan perubahan tipe data pada kolom:

  • quantity yang semula bertipe int64 menjadi bertipe float32, dan
  • city yang semula bertipe object menjadi bertipe category

Notes :

Dataset : //dqlab-dataset.s3-ap-southeast-1.amazonaws.com/sample_csv.csv

Berikut adalah syntaxnya:

Dengan melakukan data manipulation terhadap tipe data yang dilakukan, muncul hasil output sebagai berikut:

Dari hasil transformasi berikut, diketahui bahwa quantity yang semula bertipe int64 menjadi bertipe float32, dan city yang semula bertipe object menjadi bertipe category.

Transforming — Part 3

Sekarang akan mempelajari teknik/cara berikutnya dalam proses transformasi suatu dataframe. Di sub bab ini akan memakai method .apply[] dan .map[] pada suatu dataframe.

Method .apply[] digunakan untuk menerapkan suatu fungsi python [yang dibuat dengan def atau anonymous dengan lambda] pada dataframe/series atau hanya kolom tertentu dari dataframe.

Berikut ini adalah contohnya yaitu akan merubah setiap baris pada kolom brand menjadi lowercase

Jika dijalankan maka akan menghasilkan:

Method .map[] hanya dapat diterapkan pada series atau dataframe yang diakses satu kolom saja. Method ini digunakan untuk mensubstitusikan suatu nilai ke dalam tiap baris datanya.

Mari lihat contoh yang diberikan berikut ini yang mana akan ambil huruf terakhir dari brand

Jika dijalankan maka akan menghasilkan

Transforming — Part 4

Di sub bab sebelumnya sudah mengetahui bahwa map hanya dapat digunakan untuk pandas series. Pada sub bab ini akan menggunakan method .applymap pada dataframe

Kali ini kita gunakan dengan dua cara:

Cara 1 dengan tanpa define function awalnya, langsung pake fungsi anonymous lambda x

Cara 2 dengan define function

Setelah itu, berikut keluaran hasil outputnya:

Cara 1 dan cara 2 menunjukkan bahwa keduanya menhasilkan dataframe yang sama.

Dengan cara yang sama seperti diatas kita akan membuat matriks random ukuran 3 x 4 dengan seed randomnya 1234. Kemudian gunakan kedua cara seperti di atas untuk merubah seluruh isi dengan fungsi kuadrat x**2 + 3*x + 2.

Berikut syntax yang bisa digunakan:

Jika dijalankan maka menghasilkan output berikut:

Inspeksi Missing Value

Value yang hilang/tidak lengkap dari dataframe akan membuat analisis atau model prediksi yang dibuat menjadi tidak akurat dan mengakibatkan keputusan salah yang diambil. Terdapat beberapa cara untuk mengatasi data yang hilang/tidak lengkap tersebut.

Data COVID-19 yang akan digunakan ini diambil dari google big query, tetapi sudah disediakan datasetnya dalam format csv dengan nama “public data covid19 jhu csse eu.csv”. Ini adalah studi kasus untuk meng-handle missing value. Bagaimanakah langkah-langkahnya?

Di pandas data yang hilang umumnya direpresentasikan dengan NaN.

Langkah pertama, harus tahu kolom mana yang terdapat data hilang dan berapa banyak dengan cara:

Cara 1: menerapkan method .info[] pada dataframe yang dapat diikuti dari kode berikut ini

Notes :

Dataset : //dqlab-dataset.s3-ap-southeast-1.amazonaws.com/CHAPTER+4+-+missing+value+-+public+data+covid19+.csv

Berikut syntax yang digunakan:

Cara 2: mengetahui berapa banyak nilai hilang dari tiap kolom di dataset tersebut dengan menerapkan chaining method pada dataframe yaitu .isna[].sum[]. Method .isna[] digunakan untuk mengecek berapa data yang bernilai NaN dan .sum[] menjumlahkannya secara default untuk masing-masing kolom dataframe.

Perhatikanlah kode berikut

df.to_csv["tsv1.tsv", index=False, sep='\t']
3Treatment untuk Missing Value

Terdapat beberapa cara untuk mengatasi missing value, antara lain:

  1. dibiarkan saja,
  2. hapus value itu, atau
  3. isi value tersebut dengan value yang lain [biasanya interpolasi, mean, median, etc]

Sebelum melakukan action ke missing value pada data covid diatas, sebaiknya tampilkan beberapa row teratas dari dataset itu

dan dilihat kembali jumlah missing value tiap kolomnya

agar dapat ditelaah terlebih dahulu.

Hanya kolom combine_key yang keseluruhan barisnya adalah missing value [1000 buah], sementara kolom country_region, date, dan confirmed tidak memiliki missing value. Untuk kolom lainnya terdapat beragam jumlah missing value. Apa yang dapat dilakukan?

Untuk memahami mana kolom yang akan ditreatment dengan tiga perlakukan di atas lihat nature dari data terlebih dahulu. Contohnya pada kolom death dan recovered jika ada yang missing value maka kemungkinan terbesarnya adalah tidak ada meninggal atau sembuh pada hari tersebut.

Untuk kolom yang seluruhnya missing yaitu combined_key dapat dibuang saja satu kolom itu karena tidak ada data yang dapat diketahui dari kolom tersebut.

Sementara, kolom yang lainnya bagaimana? Misal ambil kolom province_stat, missing valuenya dapat terjadi bahwa tidak dilaporkan itu berasal dari daerah mana di negara itu. Dapat mengisi misal dengan string ‘unknown’ karena tahu kolom tersebut bertipe data string.

Sekarang dapat menerapkan dua aksi yaitu

  1. Membiarkannya saja
  2. Mengahapus kolom

Treatment pertama [membiarkannya saja] seperti pada kolom confirmed, death, dan recovered. Akan tetapi jika tidak ada yang terkonfirmasi, meninggal dan sembuh sebenarnya dapat menukar value ini dengan angka nol. Meskipun ini lebih make sense dalam representasi datanya, tetapi untuk sub bab ini ketiga kolom tersebut diasumsikan dibiarkan memiliki nilai missing value.

Treatment kedua yaitu dengan menghapus kolom, yang mana ini digunakan jika seluruh kolom dari dataset yang dipunyai semua barisnya adalah missing value. Untuk itu dapat menerapkan method .dropna[] pada dataframe, bagaimana caranya?

df.to_csv["tsv1.tsv", index=False, sep='\t']
4

Pada method .dropna[] ada dua keyword argumen yang harus diisikan yaitu axis dan how. Keyword axis digunakan untuk menentukan arah dataframe yang akan dibuang angka 1 untuk menyatakan kolom [column-based] atau dapat ditulis dalam string “column”. Jika digunakan angka 0 berarti itu dalam searah index [row-based] atau dapat ditulis dalam string “index”.

Sementara, keyword how digunakan untuk bagaimana cara membuangnya. Opsi yang dapat diterimanya [dalam string] adalah

  • “all” artinya jika seluruh data di satu/beberapa kolom atau di satu/beberapa baris adalah missing value.
  • “any” artinya jika memiliki 1 saja data yang hilang maka buanglah baris/kolom tersebut.
df.to_csv["tsv1.tsv", index=False, sep='\t']
5

menghandle missing value pada dataframe. Treatment ini dilakukan dengan cara mengisi missing value dengan nilai lain, yang dapat berupa :

  • nilai statistik seperti mean atau median
  • interpolasi data
  • text tertentu

Akan mulai pada kolom yang missing yang tipe datanya adalah berupa object. Kolom tersebut adalah province_state, karena tidak tahu secara persis province_state mana yang dimaksud, bisa menempatkan string “unknown” sebagai substitusi missing value. Meskipun keduanya berarti sama-sama tidak tahu tetapi berbeda dalam representasi datanya.

Untuk melakukan hal demikian dapat menggunakan method .fillna[] pada kolom dataframe yang dimaksud. Perhatikan kode berikut

df.to_csv["tsv1.tsv", index=False, sep='\t']
6

Menghandle missing value tentunya dengan jalan mengganti missing value dengan nilai statistik kolom bersangkutan, baik median atau mean [nilai rata-rata]. Misalnya akan menggunakan kolom active. Dengan mengabaikan terlebih dahulu sebaran berdasarkan negara [univariate], jika mengisi dengan nilai rata-rata maka harus melihat terlebih dahulu data apakah memiliki ouliers atau tidak. Jika ada outliers dari data maka menggunakan nilai tengah [median] data adalah cara yang lebih safe.

Untuk itu diputuskan dengan mengecek nilai median dan nilai mean kolom active juga nilai min dan max-nya. Jika data pada kolom active terdistribusi normal maka nilai mean dan median akan hampir sama.

Terlihat data memiliki distribusi yang skewness, karena nilai mean dan median yang cukup jauh serta range data yang cukup lebar. Di sini pada kolom active data memiliki outliers. Jadi akan mengisi missing value dengan median.

df.to_csv["tsv1.tsv", index=False, sep='\t']
7

Data yang menggunakan interpolasi untuk mengisi data yang hilang adalah time series data, yang secara default akan diisi dengan interpolasi linear.

Perhatikan kode berikut:

df.to_csv["tsv1.tsv", index=False, sep='\t']
8Case Study! Let’s Tryyyyyyyyyy

Diberikan dataset ‘retail_raw_test.csv’

  1. Baca dataset
df.to_csv["tsv1.tsv", index=False, sep='\t']
9

2. Mengganti tipe data

  • customer_id dari string ke int64,
  • quantity dari string ke int64,
  • item_price dari string ke int64
df.to_clipboard[]
0

3. transform product_value supaya bentuknya seragam dengan format PXXXX, assign ke kolom baru “product_id”, dan drop kolom “product_value”, jika terdapat nan gantilah dengan “unknown”.

df.to_clipboard[]
1

4. tranform order_date menjadi value dengan format YYYY-mm-dd

df.to_clipboard[]
2

5. cek data hilang dari tiap kolom dan kemudian isi missing value

  • di brand dengan “no_brand”, dan
  • cek dulu bagaimana missing value di city & province — isi missing value di city dan province dengan “unknown”
df.to_clipboard[]
3

6. create column city/province dari gabungan city & province

df.to_clipboard[]
4

7. membuat index berdasarkan city_provice, order_date, customer_id, order_id, product_id [cek index]

df.to_clipboard[]
5

8. membuat kolom “total_price” sebagai hasil perkalian quantity dengan item_price

df.to_clipboard[]
6

9. slice data hanya untuk Jan 2019

df.to_clipboard[]
7

Performa Penjualan di Setiap Cabang

Diberikan 4 csv files yang isinya retail data untuk tiap Quarter:

  1. csv [data dari bulan January — March] → //dqlab-dataset.s3-ap-southeast-1.amazonaws.com/LO4/retail_data_from_1_until_3.csv
  2. csv [data dari bulan April — June] → //dqlab-dataset.s3-ap-southeast-1.amazonaws.com/LO4/retail_data_from_4_until_6.csv
  3. csv [data dari bulan July — September] → //dqlab-dataset.s3-ap-southeast-1.amazonaws.com/LO4/retail_data_from_7_until_9.csv
  4. csv [data dari bulan October — December] → //dqlab-dataset.s3-ap-southeast-1.amazonaws.com/LO4/retail_data_from_10_until_12.csv

Goal: Automation untuk pembuatan grafik dari measurement yang dibutuhkan.

Untuk part 1 ini yang perlu dilakukan:

[1]. Load masing-masing data *.csv dengan Pandas

df.to_clipboard[]
8

[2]. Pengecekan dan Transformasi Data

  • Cek data sekilas [melihat bentuk data biasanya 5 data teratas]
df.to_clipboard[]
9

  • Cek list kolom untuk semua dataframe apakah seluruh kolom dari keempat dataframe yang terpisah itu sama
df_excel.to_excel["xlsx1.xlsx", index=False]
0

  • Jika sama digabungkan.
df_excel.to_excel["xlsx1.xlsx", index=False]
1

  • Cek informasi dataframe yang telah digabungkan
df_excel.to_excel["xlsx1.xlsx", index=False]
2

  • Statistik deskriptif dari dataframe yang telah digabungkan.
df_excel.to_excel["xlsx1.xlsx", index=False]
3

[3] Transformasi Data

  • Jika ada data yang tidak seharusnya maka dapat dibuang
df_excel.to_excel["xlsx1.xlsx", index=False]
4

  • Jika ada kolom yang seharusnya bertipe datetime64 ubahlah
df_excel.to_excel["xlsx1.xlsx", index=False]
5
  • Cek kembali informasi dataframe
df_excel.to_excel["xlsx1.xlsx", index=False]
2

  • Tampilkan kembali statistik deskriptif dari dataframe
df_excel.to_excel["xlsx1.xlsx", index=False]
7

[4]. Filter province yang hanya termasuk 5 provinsi besar di Jawa [DKI Jakarta, Jawa Barat, Jawa Tengah, Jawa Timur, dan Yogyakarta]

df_excel.to_excel["xlsx1.xlsx", index=False]
8

[5]. Mengelompokkan data berdasarkan order_date dan province yang sudah difilter dan menghitung order unique count, customer unique count, product unique count, brand unique count, dan GMV [Gross Merchandise Volume = total_price untuk semua penjualan]

df_excel.to_excel["xlsx1.xlsx", index=False]
9

[6]. Melakukan unstack untuk mendapatkan order_date di bagian baris dan province di bagian column

df.to_gbq["temp.test", project_id="XXXXXX", if_exists="fail"]
0

[7]. Slicing data untuk masing-masing measurement [kolom], misal: kolom order

df.to_gbq["temp.test", project_id="XXXXXX", if_exists="fail"]
1

[8]. Lakukan resampling pada data tersebut untuk dilakukan perhitungan secara bulanan

df.to_gbq["temp.test", project_id="XXXXXX", if_exists="fail"]
2

Sekarang dilanjutkan untuk langkah #[9] yaitu menampilkan grafik dari langkah #[8] yang telah dilakukan.

[9]. Plot untuk hasil pada langkah #[8]

df.to_gbq["temp.test", project_id="XXXXXX", if_exists="fail"]
3

Langah 7 s/d 9 yang telah dilakukan baru untuk satu measurement yaitu order. Berarti ada empat kali lagi kode seperti ini harus dibuat. Karena struktur code masih sama, dapat menggunakan perulangan sesuai dengan jumlah measurement yaitu 5, sehingga kelima measurement dapat ditampilkan grafiknya dalam satu canvas figure.

Mari memulai dengan membuat sebuah perulangan dengan dataframe unstack_city_province yang digunakan [hasil dari langkah ke 5].

df.to_gbq["temp.test", project_id="XXXXXX", if_exists="fail"]
4

Penutup

Akhirnya, kita telah sampai di penutup mengenai pembahasan kita tentang Data Manipulation with Pandas — Part 1. Materi-materi yang telah kita pelajari dan praktekkan dalam modul ini aku telah mendapatkan pengetahuan [knowledge] dan praktek [skill] untuk:

  • Memahami library Pandas dan interaksinya dengan numpy
  • Memahami dan mempraktekkkan bagaimana membuat series dan dataframe pada pandas dari berbagai tipe data seperti list, list of list, dict, ataupun numpy array
  • emahami dan mempraktekkkan bagaimana membaca dataset dari berbagai format standar seperti csv, tsc, excel, json, sql sehingga dapat dijadikan pandas dataframe/series serta bagaimana cara menyimpannya ke format standar dataset.
  • Mampu memahami dan mempraktekkan proses indexing, transformasi dan slicing pada dataframe
  • Mampu memahami dan mempraktekkan bagaimana cara menghandle missing value pada suatu dataframe
  • Latihan dalam mengerjakan project bisnis sederhana menggunakan pandas
Semangat terus ya semuanya buat belajar data!

Uwuuuuwwww, gimana nih temen-temen! Seruuu banget dong yaaa belajar Python. Jadi, belajar banyak kan mengenai Exploratory Data Analysis with Python for Beginner kali ini. Mudah-mudahan kalian semuanya paham ya! Semoga bermanfaat!

“With data collection, ‘the sooner the better’ is always the best answer.” — Marissa Mayer

Terima kasih banyak sebelumnya atas waktu yang diluangkan untuk membaca artikel ini. Kurang lebihnya mohon maaf. See you!

Bài mới nhất

Chủ Đề