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.