Dataset
Dataset
Dataset yang akan digunakan adalah dataset yang sederhana, sehungga lebih mudah untuk
memahami Pandas. Data diambil dari Badan Pusat Statistik (bps.go.id). Dataset tersebut
memuat beberapa informasi tentang provinsi di Indonesia pada tahun 2015. Dataset ini
memiliki 10 kolom:
1. province: nama provinsi di Indonesia
2. rainfall: jumah curah hujan dalam mm yang diambil dari stasiun pengamatan yang
dimiliki BMKG
3. rainy_day: jumlah hari terjadinya hujan dalam setahun
4. expenses_food_urban: rata-rata pengeluaran perkapita dalam sebulan untuk
makanan di perkotaan
5. expenses_other_urban: rata-rata pengeluaran perkapita dalam sebulan untuk
barang non makanan di perkotaan
6. expenses_food_rural: rata-rata pengeluaran perkapita dalam sebulan untuk
makanan di pedesaan
7. expense_other_rural: rata-rata pengeluaran perkapita dalam sebulan untuk barang
non makanan di pedesaan
8. unemployment: persentase angka pengangguran bulan agustus
9. time_zone: klasifikasi zona waktu
10. island: nama pulau
Dataset dapat didownload pada github
Import Paket Pandas
Untuk menggunakan paket pandas kita harus melakukan import paket, dan memberikan
nama yang lebih pendek seperti pd, dengan menggunakan perintah import as
import pandas as pd
print('Pandas version: {}'.format(pd.__version__))
dengan perintah "version" kita dapat mengetahui versi pandas yang kita gunakan. Versi
Pandas yang digunakan pada tutorial ini adalah versi 1.1.0
Membaca File csv
Dataset yang digunakan adalah data-provinsi-2015 dataset yang telah dijelaskan
sebelumnya dan berada pada github.com/project303/dataset. File dataset ini memiliki
format text dengan tab sebagai pemisah antar kolom dan memiliki header sebagai nama
dari kolom.
Untuk membaca text file dengan delimiter menggunakan perintah read_csv().
(1)
import pandas as pd
print('Pandas version: {}'.format(pd.__version__))
url = "https://raw.githubusercontent.com/project303/dataset/master/data-
province-2015.cvs"
df = pd.read_csv(url, sep='\t')
(2) demikian seterusnya list program diteruskan sampai habis yang ber highlight
kuning
df.head()
Untuk melihat lebih banyak data, perintah head dapat diberi parameter jumlah dataframe
yang ingin ditampilkan. Sebagai contoh untuk menampilkan 10 records pertama dari
DataFrame
(3)
df.head(10)
Untuk menampilkan n record terakhir, dapat menggunakan perintah tail(n). Jika tidak diberi
parameter jumlah recordnya, maka secara default akan menampilkan 5 record
(4)
df.tail()
Fungsi sample() pada Pandas dapat digunakan jika kita ingin menampilkan dataframe
secara acak. Misalkan menampilkan 10 dataframe secara acak
(5)
df.sample(10)
(6)
df
Jumlah Data
Untuk memperoleh informasi jumlah records pada setiap kolom menggunakan perintah
count()
(7)
df.count()
Fungsi count() akan menampilkan nama kolom dan jumlah baris/record. Seperti yang
ditampilkan, semua kolom memiliki jumlah record yang sama, yaitu 34. Ini juga berarti
bahwa tidak ada nilai null di semua kolom.
Cara lain untuk menampilkan jumlah record adalah dengan menggunakan property shape
(8)
df.shape[0]
Dari nilai property shape yang terlihat diatas, memberikan informasi bahwa DataFrame
memiliki 34 baris/record dan 10 kolom.
Property DataFrame lainnya adalah dtypes, yang dapat digunakan untuk melihat struktur
dari data
(10)
df.dtypes
Informasi lebih detail mengenai struktur DataFrame dapat dilihat menggunakan fungsi
info()
(11)
df.info()
Informasi Statistik
Informasi statistik untuk setiap kolom seperti nilai minimum, nilai maksimum, standar
deviasi, rata-rata dan sebagainya, dapat ditampilkan dengan mengikuti perintah berikut
(12)
df.describe(include='all')
Menampilkan Kolom
Kita dapat memilih kolom mana saja yang akan ditampilkan, yaitu dengan menyebutkan
nama kolom yang akan ditampilkan. Sebagai contoh kita hanya ingin menampilkan kolom
province, unemployment dan expenses_food_urban
(13)
df[['province', 'unemployment', 'expenses_food_urban']].head()
Memfilter Data
Salah satu bagian penting yang digunakan dalam penyiapan data dan analisis data adalah
filtering, yaitu pemilihan data dengan kriteria tertentu. Ini juga disebut data subset.
Bagi mereka yang terbiasa menggunakan SQL, ini adalah bagian dari pernyataan WHERE.
Misalnya, kami ingin menampilkan data untuk pulau yang sama dengan 'Sumatera'
(14)
df[(df.island == "Sumatera")].head()
(15)
df[(df.island == "Sumatera") & (df.unemployment < 5)]
Penulisan dengan cara yang berbeda tetapi memiliki hasil yang sama
(16)
df[(df['island'] == "Sumatera") & (df['unemployment'] < 5)].head()
Fungsi isin() dapat digunakan untuk memfilter kolom jika nilainya ditentukan dalam bentuk
list/daftar. Misalnya, kami ingin menampilkan provinsi di Sumatera dan pulau Kalimantan
yang memiliki tingkat pengangguran kurang dari 5
(17)
df[ (df['island'].isin(['Sumatera', 'Kalimantan']))
& (df['unemployment'] < 5)
]
(18)
df[ ~(df['island'].isin(['Sumatera', 'Kalimantan']))
& (df['unemployment'] < 5)
].head()
Hasil pernyataan diatas menunjukkan semua data yang TIDAK berada di pulau Sumatera
dan Kalimantan, dan memiliki tingkat pengangguran kurang dari 5
Jika pernyataan kondisi terlalu rumit, maka sebaiknya dibuat variable DataFrame baru
sehingga menyederhanakan proses berikutnya
(19)
df2 = df[ ~(df['island'].isin(['Sumatera', 'Kalimantan']))
& (df['unemployment'] < 5)
]
df2.sample(5)
Mengurutkan Data
Fungsi sort_values() digunakan untuk melakukan pengurutan data berdasarkan dengan
kolom yang disebutkan mulai dari nilai terkecil. Perintah berikut untuk menampilkan data
diurutkan berdasarkan kolom rainfall
(20)
df.sort_values('rainfall').head()
Untuk mengurutkan data dimulai dari nilai terbesar, maka parameter ascending diberi nilai
False
(21)
df.sort_values('rainfall', ascending=False).head()
Jika ingin mengurutkan data dengan menggunakan lebih dari satu kolom maka perlu
ditentukan daftar nama kolom, misalkan mengurutkan berdasarkan kolom rainfall dan
rainy_day, dapat dilakukan seperti berikut
df.sort_values(['rainfall', 'rainy_day' ]).head()
pada baris 3 dan 4 terlihat data memiliki nilai rainy_day yang tidak berurut, karena telah
diurutkan berdasarkan rainfall terlebih dahulu
Setiap kolom juga dapat memiliki tipe pengurutannya masing-masing, misalkan time_zone
diurutkan secara DESC dan rainy_day secara ASC
(22)
df.sort_values(['time_zone', 'rainy_day'], ascending=[0, 1]).head(10)
Jika ingin menampilkan hanya kolom time_zone, rainy_day, province, dan island