Beberapa waktu lalu berawal dari keingintahuan saya untuk mengolah data csv yang agak besar, rasanya agak lebih mudah menggunakan Python untuk mengolah data csv yang cukup besar. Saya memulai belajar menggunakan Python (Python 3) dan ternyata cukup mudah hampir mirip seperti PHP yang selama ini saya gunakan.
Jadi beberapa hal yang harus saya lakukan adalah generate data dummy, dan mengolahnya. Dikarenakan saya baru saja mencoba ‘Python’ mungkin beberapa percobaan akan jadi catatan saya di blog ini, terutama penggunaan Pandas yang saya rasa sangat powerful dan cepat sekali dalam pengolahan data csv untuk ukuran data yang lumayan besar. Pastikan Anda sudah menginstall Pandas dengan cara : Install melalui Anaconda
conda install pandas
Atau install melalui pip
pip install --upgrade pandas
Pada blog saya kali ini akan menggunakan data yang berasal dari dataset dki jakarta pada laman http://data.jakarta.go.id/dataset/jumlahrtrwperkelurahandkijakarta. Bentuk data yang kita gunakan berbentuk csv Data-Jumlah-RT-RW-per-Kelurahan_2013-2017.csv.
Struktur data Pandas
- Series (Array 1 Dimensi)
- Dataframe (Array 2 Dimensi)
Untuk memulai/membaca file csv pada Pandas sangat mudah sekali
import pandas as pd
df = pd.read_csv('Data-Jumlah-RT-RW-per-Kelurahan_2013-2017.csv')
print(df)
df akan berisi sebuah Dataframe / array 2 dimensi yang akan bisa kita olah/ubah ke series, contoh output seperti berikut :
tahun nama_provinsi ... jumlah_rt jumlah_rw
0 2013 PROVINSI DKI JAKARTA ... 29 5
1 2013 PROVINSI DKI JAKARTA ... 31 5
2 2013 PROVINSI DKI JAKARTA ... 15 3
...
Kita akan melihat data unik(distict dalam SQL) kolom kabupaten_kota :
available_kabkota = df['nama_kabupaten_kota'].unique()
print(available_kabkota)
Maka output yang dihasilkan adalah :
['KAB.ADM.KEP.SERIBU' 'JAKARTA PUSAT' 'JAKARTA UTARA' 'JAKARTA BARAT' 'JAKARTA SELATAN' 'JAKARTA TIMUR']
Group By: split-apply-combine
Jika kita ingin menghitung record suatu kolom tertentu kita gunakan fungsi size()
count_kabkota = df.groupby(['nama_kabupaten_kota']).size().reset_index(name='counts')
print(count_kabkota)
Outputnya :
nama_kabupaten_kota counts
0 JAKARTA BARAT 280
1 JAKARTA PUSAT 220
2 JAKARTA SELATAN 325
3 JAKARTA TIMUR 325
4 JAKARTA UTARA 155
5 KAB.ADM.KEP.SERIBU 30
Untuk penjumlahan suatu kolom terhadap kolom tertentu, semisal kita ingin total pada kolom jumlah_rt terhadap kolom nama_kabupaten_kota, nama_kecamatan, nama_kelurahan
rt = df.groupby(['nama_kabupaten_kota','nama_kecamatan','nama_kelurahan'])['jumlah_rt'].sum().reset_index()
print(rt)
Outputnya sebagai berikut :
nama_kabupaten_kota nama_kecamatan nama_kelurahan jumlah_rt
0 JAKARTA BARAT CENGKARENG CENGKARENG BARAT 906
1 JAKARTA BARAT CENGKARENG CENGKARENG TIMUR 1132
2 JAKARTA BARAT CENGKARENG DURI KOSAMBI 843
3 JAKARTA BARAT CENGKARENG KAPUK 1110
4 JAKARTA BARAT CENGKARENG KEDAUNG KALI ANGKE 494
5 JAKARTA BARAT CENGKARENG RAWA BUAYA 700
6 JAKARTA BARAT GROGOL PETAMBURAN GROGOL 570
7 JAKARTA BARAT GROGOL PETAMBURAN JELAMBAR 695
8 JAKARTA BARAT GROGOL PETAMBURAN JELAMBAR BARU 674
9 JAKARTA BARAT GROGOL PETAMBURAN TANJUNG DUREN SELATAN 463
10 JAKARTA BARAT GROGOL PETAMBURAN TANJUNG DUREN UTARA 450
11 JAKARTA BARAT GROGOL PETAMBURAN TOMANG 870
12 JAKARTA BARAT GROGOL PETAMBURAN WIJAYA KUSUMA 635
13 JAKARTA BARAT KALI DERES KALIDERES 908
14 JAKARTA BARAT KALI DERES KAMAL 510
15 JAKARTA BARAT KALI DERES PEGADUNGAN 945
16 JAKARTA BARAT KALI DERES SEMANAN 583
17 JAKARTA BARAT KALI DERES TEGAL ALUR 822
18 JAKARTA BARAT KEBON JERUK DURI KEPA 685
19 JAKARTA BARAT KEBON JERUK KEBON JERUK 665
20 JAKARTA BARAT KEBON JERUK KEDOYA SELATAN 365
21 JAKARTA BARAT KEBON JERUK KEDOYA UTARA 660
22 JAKARTA BARAT KEBON JERUK KELAPA DUA 300
23 JAKARTA BARAT KEBON JERUK SUKABUMI SELATAN 390
24 JAKARTA BARAT KEBON JERUK SUKABUMI UTARA 515
25 JAKARTA BARAT KEMBANGAN JOGLO 570
26 JAKARTA BARAT KEMBANGAN KEMBANGAN SELATAN 388
27 JAKARTA BARAT KEMBANGAN KEMBANGAN UTARA 590
28 JAKARTA BARAT KEMBANGAN MERUYA SELATAN 420
29 JAKARTA BARAT KEMBANGAN MERUYA UTARA 630
.. ... ... ... ...
237 JAKARTA UTARA KELAPA GADING KELAPA GADING BARAT 1084
238 JAKARTA UTARA KELAPA GADING KELAPA GADING TIMUR 1211
239 JAKARTA UTARA KELAPA GADING PEGANGSAAN DUA 1262
240 JAKARTA UTARA KOJA KOJA 735
241 JAKARTA UTARA KOJA LAGOA 1110
242 JAKARTA UTARA KOJA RAWA BADAK SELATAN 545
243 JAKARTA UTARA KOJA RAWA BADAK UTARA 595
244 JAKARTA UTARA KOJA TUGU SELATAN 475
245 JAKARTA UTARA KOJA TUGU UTARA 1070
246 JAKARTA UTARA PADEMANGAN ANCOL 346
247 JAKARTA UTARA PADEMANGAN PADEMANGAN BARAT 1073
248 JAKARTA UTARA PADEMANGAN PADEMANGAN TIMUR 767
249 JAKARTA UTARA PENJARINGAN KAMAL MUARA 224
250 JAKARTA UTARA PENJARINGAN KAPUK MUARA 500
251 JAKARTA UTARA PENJARINGAN PEJAGALAN 1125
252 JAKARTA UTARA PENJARINGAN PENJARINGAN 1210
253 JAKARTA UTARA PENJARINGAN PLUIT 1251
254 JAKARTA UTARA TANJUNG PRIOK KEBON BAWANG 980
255 JAKARTA UTARA TANJUNG PRIOK PAPANGGO 635
256 JAKARTA UTARA TANJUNG PRIOK SUNGAI BAMBU 520
257 JAKARTA UTARA TANJUNG PRIOK SUNTER AGUNG 1400
258 JAKARTA UTARA TANJUNG PRIOK SUNTER JAYA 1116
259 JAKARTA UTARA TANJUNG PRIOK TANJUNG PRIOK 790
260 JAKARTA UTARA TANJUNG PRIOK WARAKAS 920
261 KAB.ADM.KEP.SERIBU KEP. SERIBU SLT P. PARI 70
262 KAB.ADM.KEP.SERIBU KEP. SERIBU SLT P. TIDUNG 145
263 KAB.ADM.KEP.SERIBU KEP. SERIBU SLT P. UNTUNG JAWA 45
264 KAB.ADM.KEP.SERIBU KEP. SERIBU UTR P. HARAPAN 75
265 KAB.ADM.KEP.SERIBU KEP. SERIBU UTR P. KELAPA 155
266 KAB.ADM.KEP.SERIBU KEP. SERIBU UTR P. PANGGANG 145
Sekian.