Posted with : Python


Pandas

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.



blog comments powered by Disqus