Skip to main content

Viewing & Selecting Data

Setelah mempelajari cara mendeskripsikan DataFrame, langkah berikutnya adalah belajar melihat dan memilih data.

Ketika bekerja dengan dataset, kita sering tidak membutuhkan seluruh data sekaligus.

Kita mungkin ingin:

  • Melihat beberapa baris pertama.
  • Melihat beberapa baris terakhir.
  • Memilih satu baris tertentu.
  • Memilih beberapa baris.
  • Memilih satu kolom.
  • Memilih beberapa kolom.
  • Mencari data berdasarkan kondisi tertentu.

Pandas menyediakan berbagai cara untuk melakukan hal tersebut.


Menyiapkan DataFrame​

Sebagai contoh, kita akan menggunakan dataset sederhana mengenai penjualan mobil.

import pandas as pd

car_sales = pd.read_csv("car-sales.csv")

Kita dapat membayangkan DataFrame seperti berikut:

IndexMakeColourOdometer (KM)DoorsPrice
0ToyotaWhite15000044000
1HondaRed12000045000
2BMWBlack80000415000
3NissanBlue9000047000
4ToyotaGreen11000046000

Pada materi ini kita akan menggunakan DataFrame tersebut untuk memahami berbagai teknik pemilihan data.


Melihat Sebagian Data​

Ketika mendapatkan dataset yang besar, kita biasanya tidak perlu langsung menampilkan seluruh DataFrame.

Misalnya dataset memiliki:

10.000 baris

Jika kita menjalankan:

print(car_sales)

akan sangat tidak praktis untuk melihat seluruh data.

Sebagai gantinya, kita dapat melihat sebagian data.

Pandas menyediakan dua method yang sangat berguna:

head()

dan:

tail()

Menggunakan .head()​

Method:

car_sales.head()

digunakan untuk menampilkan 5 baris pertama DataFrame secara default.

Contohnya:

car_sales.head()

Hasilnya kurang lebih:

IndexMakeColourOdometer (KM)DoorsPrice
0ToyotaWhite15000044000
1HondaRed12000045000
2BMWBlack80000415000
3NissanBlue9000047000
4ToyotaGreen11000046000

Cara ini sangat berguna untuk mendapatkan gambaran cepat mengenai isi dataset.


Mengubah Jumlah Baris dengan .head()​

Secara default:

car_sales.head()

menampilkan 5 baris.

Namun kita dapat menentukan jumlah baris yang ingin ditampilkan.

Contohnya:

car_sales.head(7)

Artinya:

Tampilkan 7 baris pertama

Contoh lainnya:

car_sales.head(3)

akan menampilkan:

Baris 0
Baris 1
Baris 2

Jadi angka yang diberikan kepada head() menentukan jumlah baris dari bagian awal DataFrame yang ingin kita lihat.


Kapan Menggunakan .head()?​

.head() sangat berguna ketika:

  • baru membuka dataset.
  • ingin mengetahui bentuk data.
  • ingin memastikan file berhasil dibaca.
  • ingin melihat beberapa contoh data.
  • ingin memeriksa hasil manipulasi data.

Misalnya setelah membaca CSV:

car_sales = pd.read_csv("car-sales.csv")

kita dapat langsung melakukan:

car_sales.head()

Dengan begitu kita dapat memastikan apakah dataset berhasil dibaca dan terlihat seperti yang diharapkan.


Menggunakan .tail()​

Jika head() digunakan untuk melihat bagian awal DataFrame, maka tail() digunakan untuk melihat bagian akhir.

Contohnya:

car_sales.tail()

Secara default, tail() menampilkan 5 baris terakhir.


Mengubah Jumlah Baris dengan .tail()​

Sama seperti head(), kita dapat menentukan jumlah baris.

Contohnya:

car_sales.tail(3)

Artinya:

Tampilkan 3 baris terakhir

Misalnya DataFrame memiliki 10 baris, maka yang ditampilkan adalah:

Baris 7
Baris 8
Baris 9

.head() vs .tail()​

Perbedaannya sederhana:

MethodFungsi
df.head()Melihat 5 baris pertama
df.head(n)Melihat n baris pertama
df.tail()Melihat 5 baris terakhir
df.tail(n)Melihat n baris terakhir

Secara visual:

DataFrame

┌─────────────────┐
│ Baris pertama │ ← head()
│ Baris kedua │
│ Baris ketiga │
│ ... │
│ Baris terakhir │ ← tail()
└─────────────────┘

Keduanya merupakan cara cepat untuk melakukan pemeriksaan awal terhadap dataset.


Memilih Data dengan .loc dan .iloc​

Selain melihat bagian awal dan akhir data, kita juga dapat memilih data tertentu.

Pandas menyediakan dua cara penting:

.loc

dan:

.iloc

Keduanya digunakan untuk memilih data, tetapi memiliki konsep yang berbeda.

Perbedaan utama:

.loc
↓
berdasarkan label

.iloc
↓
berdasarkan posisi

.loc - Location​

.loc digunakan untuk memilih data berdasarkan label index.

Misalnya DataFrame memiliki index:

0
1
2
3
4

Kita dapat memilih data dengan:

car_sales.loc[3]

Artinya:

Ambil data dengan label index 3

Jika index tersebut memiliki data:

Nissan | Blue | 90000 | 4 | 7000

maka baris tersebut akan dikembalikan.


Memahami Label Index​

Perhatikan DataFrame:

IndexMake
0Toyota
1Honda
2BMW
3Nissan
4Toyota

Jika kita menggunakan:

car_sales.loc[3]

Pandas mencari:

Label index = 3

Kemudian mengembalikan baris tersebut.

Jadi konsep utama .loc adalah:

.loc
↓
Cari berdasarkan label

.iloc - Integer Location​

.iloc digunakan untuk memilih data berdasarkan posisi.

Posisi dimulai dari:

0

Misalnya:

PosisiIndexMake
00Toyota
11Honda
22BMW
33Nissan
44Toyota

Jika kita menggunakan:

car_sales.iloc[3]

maka Pandas mengambil data pada posisi ke-3.

Dalam contoh ini hasilnya kebetulan sama dengan loc[3] karena label index juga berurutan dari 0.


Perbedaan .loc dan .iloc​

Untuk DataFrame dengan index default:

0, 1, 2, 3, 4

hasil .loc dan .iloc mungkin terlihat sama.

Contohnya:

car_sales.loc[3]

dan:

car_sales.iloc[3]

keduanya dapat menghasilkan baris yang sama.

Namun konsepnya berbeda:

.loc
→ berdasarkan label

.iloc
→ berdasarkan posisi

Perbedaan ini menjadi sangat penting ketika index DataFrame tidak lagi menggunakan angka berurutan.


Contoh Index Tidak Berurutan​

Bayangkan DataFrame memiliki index:

IndexMake
10Toyota
20Honda
30BMW
40Nissan

Sekarang:

car_sales.loc[30]

berarti:

Cari label index 30

Sedangkan:

car_sales.iloc[3]

berarti:

Ambil data pada posisi ke-3

Hasilnya:

.loc[30]
→ BMW

.iloc[3]
→ Nissan

Ini menunjukkan mengapa memahami perbedaan .loc dan .iloc sangat penting.


Slicing dengan .iloc​

Slicing digunakan untuk mengambil sebagian data berdasarkan rentang posisi.

Contohnya:

car_sales.iloc[:3]

Artinya:

Ambil data dari posisi awal
sampai sebelum posisi 3

Maka posisi yang diambil:

0
1
2

Posisi 3 tidak termasuk.


Memahami Slicing​

Perhatikan:

car_sales.iloc[:3]

dapat dibaca:

:
→ mulai dari awal

3
→ berhenti sebelum posisi 3

Sehingga:

0 ✓
1 ✓
2 ✓
3 ✗

Ini mengikuti aturan slicing yang umum dalam Python.


Contoh Slicing dengan .iloc​

Misalnya:

car_sales.iloc[1:4]

Maka posisi yang diambil:

1
2
3

Posisi:

4

tidak termasuk.

Secara umum:

.iloc[start:stop]

mengambil data mulai dari start hingga sebelum stop.


Slicing dengan .loc​

Slicing menggunakan .loc memiliki aturan yang berbeda ketika menggunakan label.

Contohnya:

car_sales.loc[:3]

Jika indexnya:

0
1
2
3
4

maka label yang diambil adalah:

0
1
2
3

Perhatikan bahwa label 3 ikut termasuk.


Perbedaan Slicing .loc dan .iloc​

Ini merupakan salah satu hal yang penting untuk diingat.

Dengan:

car_sales.iloc[:3]

yang diambil:

0
1
2

Sedangkan:

car_sales.loc[:3]

yang diambil:

0
1
2
3

Perbedaannya:

.iloc
→ batas akhir tidak termasuk

.loc
→ label batas akhir termasuk

Untuk pemula, konsep ini perlu diperhatikan agar tidak salah mengambil data.


Memilih Kolom​

Selain memilih baris, kita juga sering perlu memilih kolom tertentu.

Misalnya DataFrame memiliki:

Make
Colour
Odometer (KM)
Doors
Price

Kita mungkin hanya ingin mengambil kolom:

Make

Pandas menyediakan beberapa cara untuk melakukannya.

Cara yang paling umum adalah menggunakan bracket notation.


Bracket Notation​

Contohnya:

car_sales["Make"]

Perintah tersebut memilih kolom:

Make

Hasilnya berupa Series.

Secara sederhana:

DataFrame
↓
["Make"]
↓
Series

Mengapa Bracket Notation Direkomendasikan?​

Bracket notation merupakan cara yang umum dan aman untuk memilih kolom.

Contohnya:

car_sales["Odometer (KM)"]

Cara ini tetap dapat digunakan meskipun nama kolom mengandung:

  • spasi
  • tanda kurung
  • karakter tertentu

Misalnya:

car_sales["Odometer (KM)"]

Dot Notation​

Pandas juga memungkinkan kita memilih kolom menggunakan dot notation.

Contohnya:

car_sales.Make

Ini dapat digunakan untuk kolom sederhana seperti:

Make

atau:

Price

Contohnya:

car_sales.Price

Keterbatasan Dot Notation​

Dot notation tidak cocok untuk semua nama kolom.

Misalnya nama kolom:

Odometer (KM)

Kita tidak dapat menuliskannya seperti:

car_sales.Odometer (KM)

Kode tersebut tidak valid.

Karena itu, gunakan bracket notation:

car_sales["Odometer (KM)"]

Bracket vs Dot Notation​

Perbandingannya:

CaraContohKeterangan
Bracket notationcar_sales["Make"]Direkomendasikan
Dot notationcar_sales.MakeRingkas tetapi memiliki keterbatasan

Untuk pembelajaran dan project nyata, biasakan menggunakan:

car_sales["Make"]

terutama jika nama kolom berasal dari dataset yang belum kita kontrol.


Memilih Beberapa Kolom​

Kita juga dapat memilih lebih dari satu kolom.

Contohnya:

car_sales[["Make", "Price"]]

Perhatikan bahwa terdapat dua pasang bracket:

car_sales[
["Make", "Price"]
]

Bracket bagian luar digunakan untuk memilih data dari DataFrame.

List bagian dalam berisi nama kolom yang ingin dipilih.

Hasilnya adalah DataFrame baru yang hanya memiliki:

Make
Price

Boolean Indexing​

Salah satu fitur Pandas yang sangat penting adalah Boolean Indexing.

Boolean Indexing memungkinkan kita memilih baris berdasarkan kondisi tertentu.

Contohnya:

car_sales[car_sales["Make"] == "Toyota"]

Artinya:

Pilih baris
di mana Make sama dengan Toyota

Filtering Berdasarkan Teks​

Misalnya terdapat data:

MakeColourPrice
ToyotaWhite4000
HondaRed5000
BMWBlack15000
ToyotaGreen6000

Kita dapat mencari semua mobil Toyota:

car_sales[car_sales["Make"] == "Toyota"]

Hasilnya hanya baris yang memenuhi kondisi:

Make == Toyota

Memahami Boolean Condition​

Bagian:

car_sales["Make"] == "Toyota"

akan menghasilkan nilai Boolean untuk setiap baris.

Secara sederhana:

Toyota → True
Honda → False
BMW → False
Toyota → True

Pandas kemudian hanya mengambil baris yang memiliki:

True

Sehingga:

car_sales[car_sales["Make"] == "Toyota"]

menghasilkan data Toyota saja.


Operator Perbandingan​

Boolean Indexing dapat menggunakan berbagai operator perbandingan.

Beberapa yang umum:

OperatorArti
==Sama dengan
!=Tidak sama dengan
>Lebih besar dari
<Lebih kecil dari
>=Lebih besar atau sama dengan
<=Lebih kecil atau sama dengan

Contoh:

car_sales["Price"] > 5000

Artinya:

Price lebih besar dari 5000

Filtering Berdasarkan Nilai Numerik​

Kita juga dapat melakukan filtering menggunakan angka.

Misalnya kita ingin mencari mobil dengan jarak tempuh lebih dari 100.000 km:

car_sales[car_sales["Odometer (KM)"] > 100000]

Artinya:

Ambil baris
yang memiliki Odometer (KM)
lebih besar dari 100000

Contoh Boolean Filtering​

Misalnya:

MakeOdometer (KM)
Toyota150000
Honda80000
BMW60000
Nissan120000

Kondisi:

car_sales["Odometer (KM)"] > 100000

secara konseptual menghasilkan:

150000 → True
80000 → False
60000 → False
120000 → True

Kemudian:

car_sales[car_sales["Odometer (KM)"] > 100000]

hanya mengambil baris dengan nilai True.


Filtering sebagai Konsep Penting​

Boolean Indexing sangat penting dalam Data Science karena kita sering perlu menemukan subset data.

Misalnya:

Semua mobil Toyota
↓
Semua mobil dengan harga > 10.000
↓
Semua mobil dengan odometer > 100.000
↓
Semua data dengan kondisi tertentu

Konsep dasarnya:

DataFrame
↓
Condition
↓
True / False
↓
Data yang memenuhi kondisi

Contoh Workflow​

Misalnya kita baru membaca dataset:

import pandas as pd

car_sales = pd.read_csv("car-sales.csv")

Pertama, lihat data awal:

car_sales.head()

Kemudian lihat data akhir:

car_sales.tail()

Pilih satu kolom:

car_sales["Make"]

Pilih beberapa kolom:

car_sales[["Make", "Price"]]

Pilih baris berdasarkan index:

car_sales.loc[3]

Pilih baris berdasarkan posisi:

car_sales.iloc[3]

Filter berdasarkan teks:

car_sales[car_sales["Make"] == "Toyota"]

Filter berdasarkan angka:

car_sales[car_sales["Odometer (KM)"] > 100000]

Ringkasan head() dan tail()​

head()
↓
Melihat bagian awal DataFrame

tail()
↓
Melihat bagian akhir DataFrame

Contoh:

car_sales.head()
car_sales.head(7)

car_sales.tail()
car_sales.tail(3)

Ringkasan .loc dan .iloc​

.loc
↓
Berdasarkan label

.iloc
↓
Berdasarkan posisi

Contoh:

car_sales.loc[3]

berarti:

Ambil label index 3

Sedangkan:

car_sales.iloc[3]

berarti:

Ambil posisi ke-3

Ringkasan Slicing​

Dengan .iloc:

car_sales.iloc[:3]

mengambil:

0
1
2

Sedangkan:

car_sales.loc[:3]

mengambil:

0
1
2
3

Perhatikan aturan:

.iloc → stop tidak termasuk
.loc → label stop termasuk

Ringkasan Pemilihan Kolom​

Cara yang direkomendasikan:

car_sales["Make"]

Untuk beberapa kolom:

car_sales[["Make", "Price"]]

Dot notation:

car_sales.Make

dapat digunakan untuk nama kolom tertentu, tetapi memiliki keterbatasan.

Karena itu, bracket notation biasanya lebih fleksibel.


Ringkasan Boolean Indexing​

Boolean Indexing digunakan untuk melakukan filtering.

Berdasarkan teks:

car_sales[car_sales["Make"] == "Toyota"]

Berdasarkan angka:

car_sales[car_sales["Odometer (KM)"] > 100000]

Konsepnya:

Condition
↓
True / False
↓
Filter
↓
Data yang sesuai

Checklist Pemula​

Setelah mempelajari materi ini, pastikan sudah memahami:

  • Apa fungsi head()?
  • Apa fungsi tail()?
  • Bagaimana mengubah jumlah baris yang ditampilkan?
  • Apa perbedaan .loc dan .iloc?
  • Apa yang dimaksud label index?
  • Apa yang dimaksud posisi?
  • Bagaimana melakukan slicing dengan .iloc?
  • Bagaimana melakukan slicing dengan .loc?
  • Apa perbedaan aturan slicing .loc dan .iloc?
  • Bagaimana memilih satu kolom?
  • Bagaimana memilih beberapa kolom?
  • Apa perbedaan bracket notation dan dot notation?
  • Apa itu Boolean Indexing?
  • Bagaimana melakukan filtering berdasarkan teks?
  • Bagaimana melakukan filtering berdasarkan angka?

Kesimpulan​

Pandas menyediakan berbagai cara untuk melihat dan memilih data dari DataFrame.

Untuk melihat sebagian data, gunakan:

car_sales.head()
car_sales.tail()

Untuk memilih data berdasarkan label atau posisi:

car_sales.loc[3]
car_sales.iloc[3]

Untuk memilih kolom:

car_sales["Make"]

atau beberapa kolom:

car_sales[["Make", "Price"]]

Untuk melakukan filtering:

car_sales[car_sales["Make"] == "Toyota"]

atau:

car_sales[car_sales["Odometer (KM)"] > 100000]

Secara keseluruhan:

Viewing
↓
head() / tail()
↓
Selecting
↓
loc / iloc
↓
Column Selection
↓
Boolean Indexing
↓
Filtering

Kemampuan memilih data merupakan dasar yang sangat penting sebelum kita mulai melakukan data cleaning, manipulasi data, dan analisis dataset.