import pandas
#cek versi pandas.__version__
'1.0.5'
Kembali ke EDA
Proses download dan install pandas
library dapat dilakukan execute baris di bawah ini di local environment’s console masing-masing:
pip install pandas
Jika menggunakan google colab, maka pandas sudah ada sehingga tidak usah menginstall lagi (cukup import). Bila menggunakan anaconda, dapat run baris tersebut di anaconda prompt.
import pandas dan dinamakan sbg ‘pd’ agar lebih mudah dan efisisen
Series
: struktur data dasar yang bisa diibaratkan sebagai array satu dimensi yang mempunyai indexDataFrame
: struktur data 2 dimensi yang berbentuk tabular (mempunyai baris dan kolom). Kita dapat memikirkan dataframe sebagai kumpulan seriesSeries
ObjectSeries
merupakan array 1 dimensi yang mempunyai index. Dapat dibuat dari list maupun array seperti berikut:
Output Series
mempunyai values
di sebelah kanan dan index
di sebelah kiri
Seperti pada Numpy, kita dapat melakukan slicing pada index untuk mengeluarkan output value yang diinginkan
Seperti yang dapat dilihat, Series
pandas jauh lebih umum dan fleksibel dibandingkan dengan array satu dimensi.
Series
as generalized NumPy arrayMembuat series
dengan index
tertentu. Perhatikan, banyaknya index dan value ditetapkan harus sama jumlahnya.
a 0.25
b 0.50
c 0.75
d 1.00
dtype: float64
Dapat juga digunakan index sembarang/bebas dalam membuat sebuah series.
2 0.25
5 0.50
3 0.75
7 1.00
dtype: float64
Series
as specialized dictionariesDictionary adalah koleksi data yang berisi key dan value. Disini, kita akan membuat series dari dictionary.
menu_dict = {'Ayam goreng': 12000,
'Ayam bakar': 12001,
'Ayam hidup': 190000,
'Ayam': 20000,
'Ayam juga': 20000} #nama ayam disebut key dan harga disebut value
menu_dict
{'Ayam goreng': 12000,
'Ayam bakar': 12001,
'Ayam hidup': 190000,
'Ayam': 20000,
'Ayam juga': 20000}
Ayam goreng 12000
Ayam bakar 12001
Ayam hidup 190000
Ayam 20000
Ayam juga 20000
dtype: int64
Ayam goreng 12000
Ayam bakar 12001
Ayam hidup 190000
dtype: int64
DataFrame
ObjectDataFrame
merupakan array dua dimensi yang mempunyai column serta index yang fleksibel. Kedepannya, konsep penggunaan dataframe ini akan banyak digunakan dalam data science & machine learning, terutama dalam data preprocessing/cleaning sebelum melakukan modelling.
[('Ayam goreng', 12000),
('Ayam bakar', 12001),
('Ayam hidup', 190000),
('Ayam', 20000),
('Ayam juga', 20000)]
Menu | Harga | |
---|---|---|
0 | Ayam goreng | 12000 |
1 | Ayam bakar | 12001 |
2 | Ayam hidup | 190000 |
3 | Ayam | 20000 |
4 | Ayam juga | 20000 |
#Alternatif, list menu dan list harga terpisah
menu_dict2 = {'Menu':['ayam goreng','ayam bakar','ayam rebus'],'Harga':[17000,15000,10000]}
df_menu2 = pd.DataFrame(menu_dict2)
df_menu2
Menu | Harga | |
---|---|---|
0 | ayam goreng | 17000 |
1 | ayam bakar | 15000 |
2 | ayam rebus | 10000 |
menu = ['ayam goreng','ayam bakar','ayam rebus']
harga = [17000,15000,10000]
df_menu3 = pd.DataFrame({'nama':menu,"biaya":harga})
df_menu3
nama | biaya | |
---|---|---|
0 | ayam goreng | 17000 |
1 | ayam bakar | 15000 |
2 | ayam rebus | 10000 |
Pertama-tama akan dilakukan Import
melalui pd.read_csv (untuk format csv) atau pd.read_excel
Silakan download file nya: dkikepadatankelurahan2013.csv
#jika upload dataset
#contoh path
path = 'F:\Praktikum Semester 2\EDA\[25_03_2021] Pertemuan 1\dkikepadatankelurahan2013.csv' #jangan lupa nama file.csv nya
df = pd.read_csv(path,';')
df
TAHUN | NAMA PROVINSI | NAMA KABUPATEN/KOTA | NAMA KECAMATAN | NAMA KELURAHAN | LUAS WILAYAH (KM2) | KEPADATAN (JIWA/KM2) | 35-39 Laki-Laki | 35-39 Perempuan | 40-44 Laki-Laki | ... | 55-59 Laki-Laki | 55-59 Perempuan | 60-64 Laki-Laki | 60-64 Perempuan | 65-69 Laki-Laki | 65-69 Perempuan | 70-74 Laki-Laki | 70-74 Perempuan | >75 Laki-Laki | >75 Perempuan | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR | P. PANGGANG | 0,91 | 6779 | 231 | 235 | 233 | ... | 98 | 106 | 72 | 65 | 36 | 33 | 33 | 20 | 13 | 27 |
1 | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR | P. KELAPA | 3,76 | 1705 | 84 | 88 | 99 | ... | 30 | 39 | 29 | 24 | 12 | 21 | 13 | 5 | 5 | 8 |
2 | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR | P. HARAPAN | 3,59 | 628 | 255 | 238 | 232 | ... | 139 | 101 | 73 | 56 | 18 | 35 | 24 | 25 | 18 | 26 |
3 | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU SLT | P. UNTUNG JAWA | 0,59 | 3625 | 199 | 185 | 178 | ... | 97 | 83 | 58 | 56 | 40 | 54 | 26 | 27 | 16 | 13 |
4 | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU SLT | P. TIDUNG | 1,57 | 3084 | 98 | 75 | 73 | ... | 37 | 32 | 22 | 13 | 18 | 15 | 10 | 18 | 11 | 17 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
262 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | MUNJUL | 1,9 | 12734 | 1167 | 1112 | 1026 | ... | 482 | 482 | 302 | 291 | 173 | 137 | 118 | 94 | 52 | 51 |
263 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | SETU | 3,25 | 6028 | 937 | 928 | 857 | ... | 392 | 354 | 254 | 211 | 124 | 115 | 64 | 83 | 59 | 64 |
264 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | BAMBU APUS | 3,17 | 8400 | 1242 | 1187 | 1062 | ... | 596 | 476 | 377 | 250 | 169 | 179 | 108 | 96 | 70 | 84 |
265 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | LUBANG BUAYA | 3,72 | 18055 | 3258 | 2988 | 2732 | ... | 1376 | 1308 | 959 | 739 | 393 | 385 | 293 | 291 | 160 | 165 |
266 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | CEGER | 3,63 | 5492 | 1007 | 930 | 874 | ... | 416 | 390 | 279 | 214 | 110 | 153 | 101 | 53 | 45 | 44 |
267 rows × 25 columns
bisa tambahkan parameter sep=“,” atau sep = “;” tergantung delimiter file yang kamu upload
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 267 entries, 0 to 266
Data columns (total 25 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 TAHUN 267 non-null int64
1 NAMA PROVINSI 267 non-null object
2 NAMA KABUPATEN/KOTA 267 non-null object
3 NAMA KECAMATAN 267 non-null object
4 NAMA KELURAHAN 267 non-null object
5 LUAS WILAYAH (KM2) 267 non-null object
6 KEPADATAN (JIWA/KM2) 267 non-null int64
7 35-39 Laki-Laki 267 non-null int64
8 35-39 Perempuan 267 non-null int64
9 40-44 Laki-Laki 267 non-null int64
10 40-44 Perempuan 267 non-null int64
11 45-49 Laki-Laki 267 non-null int64
12 45-49 Perempuan 267 non-null int64
13 50-54 Laki-Laki 267 non-null int64
14 50-54 Perempuan 267 non-null int64
15 55-59 Laki-Laki 267 non-null int64
16 55-59 Perempuan 267 non-null int64
17 60-64 Laki-Laki 267 non-null int64
18 60-64 Perempuan 267 non-null int64
19 65-69 Laki-Laki 267 non-null int64
20 65-69 Perempuan 267 non-null int64
21 70-74 Laki-Laki 267 non-null int64
22 70-74 Perempuan 267 non-null int64
23 >75 Laki-Laki 267 non-null int64
24 >75 Perempuan 267 non-null int64
dtypes: int64(20), object(5)
memory usage: 52.3+ KB
DataFrame.head()
-> menampilkan 5 baris pertamaDataFrame.tail()
-> menampilkan 5 baris terakhirDataFrame.shape
-> jumlah baris kolom danDataFrame.columns
-> menampilkan nama kolomDataFrame.index
-> menampilkan index barisDataFrame.info(data)
-> menampilkan informasi mengenai dataTAHUN | NAMA PROVINSI | NAMA KABUPATEN/KOTA | NAMA KECAMATAN | NAMA KELURAHAN | LUAS WILAYAH (KM2) | KEPADATAN (JIWA/KM2) | 35-39 Laki-Laki | 35-39 Perempuan | 40-44 Laki-Laki | ... | 55-59 Laki-Laki | 55-59 Perempuan | 60-64 Laki-Laki | 60-64 Perempuan | 65-69 Laki-Laki | 65-69 Perempuan | 70-74 Laki-Laki | 70-74 Perempuan | >75 Laki-Laki | >75 Perempuan | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR | P. PANGGANG | 0,91 | 6779 | 231 | 235 | 233 | ... | 98 | 106 | 72 | 65 | 36 | 33 | 33 | 20 | 13 | 27 |
1 | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR | P. KELAPA | 3,76 | 1705 | 84 | 88 | 99 | ... | 30 | 39 | 29 | 24 | 12 | 21 | 13 | 5 | 5 | 8 |
2 | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR | P. HARAPAN | 3,59 | 628 | 255 | 238 | 232 | ... | 139 | 101 | 73 | 56 | 18 | 35 | 24 | 25 | 18 | 26 |
3 | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU SLT | P. UNTUNG JAWA | 0,59 | 3625 | 199 | 185 | 178 | ... | 97 | 83 | 58 | 56 | 40 | 54 | 26 | 27 | 16 | 13 |
4 | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU SLT | P. TIDUNG | 1,57 | 3084 | 98 | 75 | 73 | ... | 37 | 32 | 22 | 13 | 18 | 15 | 10 | 18 | 11 | 17 |
5 rows × 25 columns
TAHUN | NAMA PROVINSI | NAMA KABUPATEN/KOTA | NAMA KECAMATAN | NAMA KELURAHAN | LUAS WILAYAH (KM2) | KEPADATAN (JIWA/KM2) | 35-39 Laki-Laki | 35-39 Perempuan | 40-44 Laki-Laki | ... | 55-59 Laki-Laki | 55-59 Perempuan | 60-64 Laki-Laki | 60-64 Perempuan | 65-69 Laki-Laki | 65-69 Perempuan | 70-74 Laki-Laki | 70-74 Perempuan | >75 Laki-Laki | >75 Perempuan | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
262 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | MUNJUL | 1,9 | 12734 | 1167 | 1112 | 1026 | ... | 482 | 482 | 302 | 291 | 173 | 137 | 118 | 94 | 52 | 51 |
263 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | SETU | 3,25 | 6028 | 937 | 928 | 857 | ... | 392 | 354 | 254 | 211 | 124 | 115 | 64 | 83 | 59 | 64 |
264 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | BAMBU APUS | 3,17 | 8400 | 1242 | 1187 | 1062 | ... | 596 | 476 | 377 | 250 | 169 | 179 | 108 | 96 | 70 | 84 |
265 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | LUBANG BUAYA | 3,72 | 18055 | 3258 | 2988 | 2732 | ... | 1376 | 1308 | 959 | 739 | 393 | 385 | 293 | 291 | 160 | 165 |
266 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | CEGER | 3,63 | 5492 | 1007 | 930 | 874 | ... | 416 | 390 | 279 | 214 | 110 | 153 | 101 | 53 | 45 | 44 |
5 rows × 25 columns
TAHUN | NAMA PROVINSI | NAMA KABUPATEN/KOTA | NAMA KECAMATAN | NAMA KELURAHAN | LUAS WILAYAH (KM2) | KEPADATAN (JIWA/KM2) | 35-39 Laki-Laki | 35-39 Perempuan | 40-44 Laki-Laki | ... | 55-59 Laki-Laki | 55-59 Perempuan | 60-64 Laki-Laki | 60-64 Perempuan | 65-69 Laki-Laki | 65-69 Perempuan | 70-74 Laki-Laki | 70-74 Perempuan | >75 Laki-Laki | >75 Perempuan | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR | P. PANGGANG | 0,91 | 6779 | 231 | 235 | 233 | ... | 98 | 106 | 72 | 65 | 36 | 33 | 33 | 20 | 13 | 27 |
1 rows × 25 columns
Index(['TAHUN', 'NAMA PROVINSI', 'NAMA KABUPATEN/KOTA', 'NAMA KECAMATAN',
'NAMA KELURAHAN', 'LUAS WILAYAH (KM2)', 'KEPADATAN (JIWA/KM2)',
'35-39 Laki-Laki', '35-39 Perempuan', '40-44 Laki-Laki',
'40-44 Perempuan', '45-49 Laki-Laki', '45-49 Perempuan',
'50-54 Laki-Laki', '50-54 Perempuan', '55-59 Laki-Laki',
'55-59 Perempuan', '60-64 Laki-Laki', '60-64 Perempuan',
'65-69 Laki-Laki', '65-69 Perempuan', '70-74 Laki-Laki',
'70-74 Perempuan', '>75 Laki-Laki', '>75 Perempuan'],
dtype='object')
### 2.3. Pandas Index
Object
Slicing pada Index object dapat dilakukan dalam bentuk list maupun array.
Int64Index([2, 3, 5, 7, 11], dtype='int64')
Int64Index([2, 5, 11], dtype='int64')
salah satu perbedaan Index
object dan array Numpy
arrays adalah indices-nya yang immutable. Artinya, indicenya tidak dapat dilakukan modifikasi / update value ke dalamnya.
Series
a 0.25
b 0.50
c 0.75
d 1.00
dtype: float64
a 0.25
b 0.50
c 0.75
d 0.95
dtype: float64
a 0.25
b 0.50
c 0.75
d 0.95
e 1.25
dtype: float64
Melakukan slicing dapat dilakukan dengan dua cara, secara explicit dan implicit (integer index)
Kita dapat menampilkan sekumpulan indices yang telah ditentukan dengan menaruhnya ke dalam sebuah list
Perhatikan, saat melakukan slicing dengan explicit index (misal, data ['a':'c']
), final index diikutsertakan dalam outputnya, sementara ketika melakukan slicing dengan implicit index (misal, data[0:2]
), final index tidak diikutsertakan dalam outputnya. Ketika slicing melalui list (misal, data [['a', 'e']]
), semua indices dari a sampai e akan ditampilkan.
Series
Secara sederhana, loc : slicing & indexing melalui explicit index. Sedangkan iloc : slicing & indexing melalui implisit index (angka)
data = pd.Series(['Hello', 'DPhir', 'world'], index=['a', 'b', 'c']) #define sebuah series baru
data
a Hello
b DPhir
c world
dtype: object
loc
attributeiloc
attributeDataFrame
TAHUN | NAMA PROVINSI | NAMA KABUPATEN/KOTA | NAMA KECAMATAN | NAMA KELURAHAN | LUAS WILAYAH (KM2) | KEPADATAN (JIWA/KM2) | 35-39 Laki-Laki | 35-39 Perempuan | 40-44 Laki-Laki | ... | 55-59 Laki-Laki | 55-59 Perempuan | 60-64 Laki-Laki | 60-64 Perempuan | 65-69 Laki-Laki | 65-69 Perempuan | 70-74 Laki-Laki | 70-74 Perempuan | >75 Laki-Laki | >75 Perempuan | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR | P. PANGGANG | 0,91 | 6779 | 231 | 235 | 233 | ... | 98 | 106 | 72 | 65 | 36 | 33 | 33 | 20 | 13 | 27 |
1 rows × 25 columns
0 2013
1 2013
2 2013
3 2013
4 2013
...
262 2013
263 2013
264 2013
265 2013
266 2013
Name: TAHUN, Length: 267, dtype: int64
Output yang sama di atas dapat diperoleh dengan :
0 2013
1 2013
2 2013
3 2013
4 2013
...
262 2013
263 2013
264 2013
265 2013
266 2013
Name: TAHUN, Length: 267, dtype: int64
Bisa juga membuat sebuah kolom baru yang diperoleh dari gabungan dua kolom lain. Misalkan disini ingin digabung jumlah laki2 dan perempuan yang berusia 50-54
DataFrame
Sama seperti pada series, loc digunakan untuk slicing menggunakan explicit index(nama indexnya langsung) dan iloc menggunakan implicit index (angka/urutan)
yang penting pahami bahwa functionnya itu
df.iloc[baris, kolom]
loc
attributeDefinisikan sebuah dataframe baru menggunakan dataset penduduk sebelumnya dengan set ‘NAMA KELUARAHAN’ sebagai index (untuk contoh saja)
TAHUN | NAMA PROVINSI | NAMA KABUPATEN/KOTA | NAMA KECAMATAN | LUAS WILAYAH (KM2) | KEPADATAN (JIWA/KM2) | 35-39 Laki-Laki | 35-39 Perempuan | 40-44 Laki-Laki | 40-44 Perempuan | ... | 55-59 Perempuan | 60-64 Laki-Laki | 60-64 Perempuan | 65-69 Laki-Laki | 65-69 Perempuan | 70-74 Laki-Laki | 70-74 Perempuan | >75 Laki-Laki | >75 Perempuan | gabungan_50-54 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
NAMA KELURAHAN | |||||||||||||||||||||
P. PANGGANG | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR | 0,91 | 6779 | 231 | 235 | 233 | 210 | ... | 106 | 72 | 65 | 36 | 33 | 33 | 20 | 13 | 27 | 263 |
P. KELAPA | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR | 3,76 | 1705 | 84 | 88 | 99 | 88 | ... | 39 | 29 | 24 | 12 | 21 | 13 | 5 | 5 | 8 | 63 |
P. HARAPAN | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR | 3,59 | 628 | 255 | 238 | 232 | 234 | ... | 101 | 73 | 56 | 18 | 35 | 24 | 25 | 18 | 26 | 311 |
3 rows × 25 columns
df1.loc[ :'P. TIDUNG', :'NAMA KECAMATAN'] #menampilkan baris hingga 'P. TIDUNG', kolom hingga 'NAMA KECAMATAN'
TAHUN | NAMA PROVINSI | NAMA KABUPATEN/KOTA | NAMA KECAMATAN | |
---|---|---|---|---|
NAMA KELURAHAN | ||||
P. PANGGANG | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR |
P. KELAPA | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR |
P. HARAPAN | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR |
P. UNTUNG JAWA | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU SLT |
P. TIDUNG | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU SLT |
TAHUN | NAMA PROVINSI | NAMA KABUPATEN/KOTA | NAMA KECAMATAN | LUAS WILAYAH (KM2) | KEPADATAN (JIWA/KM2) | 35-39 Laki-Laki | 35-39 Perempuan | 40-44 Laki-Laki | 40-44 Perempuan | ... | 55-59 Perempuan | 60-64 Laki-Laki | 60-64 Perempuan | 65-69 Laki-Laki | 65-69 Perempuan | 70-74 Laki-Laki | 70-74 Perempuan | >75 Laki-Laki | >75 Perempuan | gabungan_50-54 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
NAMA KELURAHAN | |||||||||||||||||||||
P. KELAPA | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR | 3,76 | 1705 | 84 | 88 | 99 | 88 | ... | 39 | 29 | 24 | 12 | 21 | 13 | 5 | 5 | 8 | 63 |
1 rows × 25 columns
iloc
attributeTAHUN | NAMA PROVINSI | NAMA KABUPATEN/KOTA | NAMA KECAMATAN | |
---|---|---|---|---|
NAMA KELURAHAN | ||||
P. PANGGANG | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR |
P. KELAPA | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR |
P. HARAPAN | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU UTR |
P. UNTUNG JAWA | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU SLT |
P. TIDUNG | 2013 | PROVINSI DKI JAKARTA | KAB.ADM.KEP.SERIBU | KEP. SERIBU SLT |
TAHUN | NAMA PROVINSI | NAMA KABUPATEN/KOTA | NAMA KECAMATAN | LUAS WILAYAH (KM2) | KEPADATAN (JIWA/KM2) | 35-39 Laki-Laki | 35-39 Perempuan | 40-44 Laki-Laki | 40-44 Perempuan | ... | 55-59 Perempuan | 60-64 Laki-Laki | 60-64 Perempuan | 65-69 Laki-Laki | 65-69 Perempuan | 70-74 Laki-Laki | 70-74 Perempuan | >75 Laki-Laki | >75 Perempuan | gabungan_50-54 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
NAMA KELURAHAN | |||||||||||||||||||||
CIPINANG BESAR UTARA | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | JATINEGARA | 1,15 | 48850 | 2704 | 2409 | 2344 | 2180 | ... | 1126 | 742 | 765 | 403 | 441 | 307 | 350 | 228 | 247 | 2943 |
1 rows × 25 columns
Dataframe
condition = … (disarankan conditionnya dimasukkin ke variabel gini biar ga bingung dalam penulisannya)
df[condition]
ingat bahwa di condition merupakan logical statement dimana harus bernilai TRUE atau FALSE (Boolean)
Memungkinkan kita untuk mengekstrak/filter bagian dari data yang diinginkan. Misal kita ingin menampilkan data yang luas wilayahnya memenuhi 1 (KM2).
0 False
1 False
2 False
3 False
4 False
...
262 True
263 False
264 False
265 True
266 False
Name: KEPADATAN (JIWA/KM2), Length: 267, dtype: bool
Diperoleh sebuah series yang berisi boolean value. Jika kita slice data awal dengan boolean value ini, maka akan diperoleh data dengan luas wilayah >1 (yang akan ditampilkan adalah yang True saja)
df[df['KEPADATAN (JIWA/KM2)']>10000].head() #head akan menunjukkan 5 baris pertama, ga pakai head juga sabi
TAHUN | NAMA PROVINSI | NAMA KABUPATEN/KOTA | NAMA KECAMATAN | NAMA KELURAHAN | LUAS WILAYAH (KM2) | KEPADATAN (JIWA/KM2) | 35-39 Laki-Laki | 35-39 Perempuan | 40-44 Laki-Laki | ... | 55-59 Perempuan | 60-64 Laki-Laki | 60-64 Perempuan | 65-69 Laki-Laki | 65-69 Perempuan | 70-74 Laki-Laki | 70-74 Perempuan | >75 Laki-Laki | >75 Perempuan | gabungan_50-54 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
7 | 2013 | PROVINSI DKI JAKARTA | JAKARTA PUSAT | GAMBIR | CIDENG | 1,26 | 14584 | 850 | 748 | 749 | ... | 537 | 555 | 343 | 413 | 215 | 259 | 142 | 214 | 165 | 1377 |
8 | 2013 | PROVINSI DKI JAKARTA | JAKARTA PUSAT | GAMBIR | PETOJO UTARA | 1,12 | 18987 | 954 | 920 | 914 | ... | 510 | 544 | 421 | 398 | 235 | 241 | 132 | 215 | 159 | 1415 |
9 | 2013 | PROVINSI DKI JAKARTA | JAKARTA PUSAT | GAMBIR | PETOJO SELATAN | 1,14 | 14465 | 752 | 675 | 691 | ... | 466 | 428 | 279 | 328 | 160 | 215 | 116 | 150 | 121 | 1125 |
10 | 2013 | PROVINSI DKI JAKARTA | JAKARTA PUSAT | GAMBIR | KEBON KELAPA | 0,78 | 15890 | 592 | 491 | 447 | ... | 329 | 353 | 263 | 246 | 140 | 152 | 100 | 136 | 72 | 858 |
11 | 2013 | PROVINSI DKI JAKARTA | JAKARTA PUSAT | GAMBIR | DURI PULO | 0,72 | 35628 | 1213 | 1106 | 1105 | ... | 616 | 597 | 404 | 409 | 215 | 255 | 156 | 196 | 138 | 1682 |
5 rows × 26 columns
Terlihat yang ditampilkan adalah data2 dengan luas wilayah >1. Bisa juga diberikan 2 kondisi dan gunakan logical operator
df[(df['LUAS WILAYAH (KM2)']>1) & (df['KEPADATAN (JIWA/KM2)'] < 1000)] # & (and) artinya dua2nyah harus terpenuhi
TypeError: '>' not supported between instances of 'str' and 'int'
Selain operator & dan |, dapat digunakan juga operator ~, yaitu negasi.
df[~((df['LUAS WILAYAH (KM2)']>1) & (df['LUAS WILAYAH (KM2)']<3))] .head(3) #selain yang di range 1-3
TypeError: '>' not supported between instances of 'str' and 'int'
TAHUN | NAMA PROVINSI | NAMA KABUPATEN/KOTA | NAMA KECAMATAN | NAMA KELURAHAN | LUAS WILAYAH (KM2) | KEPADATAN (JIWA/KM2) | 35-39 Laki-Laki | 35-39 Perempuan | 40-44 Laki-Laki | ... | 55-59 Perempuan | 60-64 Laki-Laki | 60-64 Perempuan | 65-69 Laki-Laki | 65-69 Perempuan | 70-74 Laki-Laki | 70-74 Perempuan | >75 Laki-Laki | >75 Perempuan | gabungan_50-54 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
259 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | CIPAYUNG | 3,08 | 8441 | 1241 | 1172 | 1029 | ... | 469 | 374 | 278 | 164 | 177 | 112 | 101 | 61 | 110 | 1398 |
260 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | CILANGKAP | 6,03 | 4396 | 1237 | 1276 | 1195 | ... | 397 | 267 | 235 | 161 | 133 | 77 | 90 | 52 | 62 | 1263 |
261 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | PONDOK RANGGON | 3,66 | 6772 | 1088 | 1064 | 969 | ... | 391 | 271 | 227 | 131 | 109 | 80 | 105 | 42 | 82 | 1320 |
262 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | MUNJUL | 1,9 | 12734 | 1167 | 1112 | 1026 | ... | 482 | 302 | 291 | 173 | 137 | 118 | 94 | 52 | 51 | 1290 |
263 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | SETU | 3,25 | 6028 | 937 | 928 | 857 | ... | 354 | 254 | 211 | 124 | 115 | 64 | 83 | 59 | 64 | 983 |
264 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | BAMBU APUS | 3,17 | 8400 | 1242 | 1187 | 1062 | ... | 476 | 377 | 250 | 169 | 179 | 108 | 96 | 70 | 84 | 1572 |
265 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | LUBANG BUAYA | 3,72 | 18055 | 3258 | 2988 | 2732 | ... | 1308 | 959 | 739 | 393 | 385 | 293 | 291 | 160 | 165 | 3554 |
266 | 2013 | PROVINSI DKI JAKARTA | JAKARTA TIMUR | CIPAYUNG | CEGER | 3,63 | 5492 | 1007 | 930 | 874 | ... | 390 | 279 | 214 | 110 | 153 | 101 | 53 | 45 | 44 | 996 |
8 rows × 26 columns