Dua section sebelumnya sibuk dengan angka dan tanggal, tetapi data nyata juga penuh teks: nama pelanggan, email, alamat, dan kode pesanan. pandas 3.0 menyimpan kolom teks dalam dtype str bawaan, dan accessor .str menjadi pintu masuk untuk memprosesnya — satu pemanggilan method bekerja pada setiap baris sekaligus tanpa loop Python, gaya yang dikenal sebagai vectorized. Chapter ini memperkenalkan method .str yang paling sering dipakai: mengubah huruf, mengukur panjang, memotong bagian teks, dan menguji awalan. Method pencarian dan penggantian seperti contains() serta replace() dibahas terpisah pada chapter berikutnya agar ruangnya cukup.

Kolom Teks Memakai dtype str #

Kita mulai dari mengonfirmasi bagaimana pandas menyimpan kolom teks pada DataFrame sederhana berisi empat pelanggan toko online:

python
import pandas as pd

pelanggan = pd.DataFrame({
    "nama": ["Budi Santoso", "siti aminah", "Dewi Lestari", "andi pratama"],
    "kota": ["jakarta", "Bandung", "surabaya", "Medan"],
})
print(pelanggan)
print(pelanggan["kota"].dtype)

pelanggan["kota_bersih"] = pelanggan["kota"].str.upper()
pelanggan["nama_title"] = pelanggan["nama"].str.title()
print(pelanggan)

print(pelanggan["nama"].str.len().tolist())
print(pelanggan["nama"].str.get(0).tolist())
print(pelanggan["nama"].str.slice(0, 4).tolist())
print(pelanggan["nama"].str.startswith("s").tolist())

Output yang Dihasilkan:

text
           nama      kota
0  Budi Santoso   jakarta
1   siti aminah   Bandung
2  Dewi Lestari  surabaya
3  andi pratama     Medan
str
           nama      kota kota_bersih    nama_title
0  Budi Santoso   jakarta     JAKARTA  Budi Santoso
1   siti aminah   Bandung     BANDUNG   Siti Aminah
2  Dewi Lestari  surabaya    SURABAYA  Dewi Lestari
3  andi pratama     Medan       MEDAN  Andi Pratama
[12, 11, 12, 12]
['B', 's', 'D', 'a']
['Budi', 'siti', 'Dewi', 'andi']
[False, True, False, False]

Mari kita telaah bagian penting skrip di atas:

  1. Baris 3-6: DataFrame pelanggan dibuat dari dua kolom teks, nama dan kota, dengan campuran huruf besar, kecil, dan tanpa kapital di awal — kondisi data yang lazim di lapangan.
  2. Baris 8: properti .dtype pada kolom kota menunjukkan str, bukan object seperti versi pandas lama. dtype str hanya menampung string, sehingga kesalahan isi kolom terdeteksi lebih awal.
  3. Baris 10-11: dua kolom baru dihasilkan dari pelanggan["kota"].str.upper() dan pelanggan["nama"].str.title(). Accessor .str menerapkan method string Python tersebut pada setiap elemen dan mengembalikan Series baru.
  4. Baris 14-17: beberapa method pembaca diuji pada kolom nama, masing-masing mengembalikan list lewat .tolist() agar mudah diperiksa.

Peta Method .str yang Sering Dipakai #

Method di belakang .str terbagi ke dalam beberapa kelompok kerja. Tabel berikut merangkum kelompok yang muncul di skrip kita:

KelompokMethodHasil
Mengubah huruflower(), upper(), title()salinan teks dengan kapitalisasi baru
Panjang dan potonganlen(), get(0), slice(0, 4)jumlah karakter, karakter ke-n, substring
Menguji isistartswith("s"), endswith("m")Series boolean per baris
Menyambung tekscat(sep=", ")satu string gabungan

Baris 14 memanggil str.len() dan menghasilkan [12, 11, 12, 12] — panjang tiap nama. Baris 15 memakai str.get(0) untuk mengambil karakter pertama tiap baris, menghasilkan ['B', 's', 'D', 'a']. Baris 16 memotong empat karakter pertama dengan str.slice(0, 4), sehingga Dewi Lestari menjadi Dewi. Baris 17 menguji awalan "s" dengan startswith("s") dan hanya baris siti aminah yang bernilai True — uji seperti ini menjadi dasar filter baris yang dibahas pada chapter berikutnya.

Perilaku Nilai NaN pada .str #

Kolom teks di dunia nyata sering memiliki baris kosong. Accessor .str tidak memproses NaN sebagai string: method yang mengembalikan teks seperti upper() mengembalikan NaN untuk baris kosong, len() juga mengembalikan NaN (dengan dtype float64), sementara method uji seperti startswith() dan contains() mengembalikan False. Perilaku konsisten ini membuat hasil .str panjangnya selalu sama dengan input, tetapi makna False dari baris kosong perlu disikapi sesuai analisis.

Dokumentasi resmi yang relevan: User Guide: Working with text data , pandas.Series.str , dan What’s new in pandas 3.0.0 untuk ringkasan perubahan dtype str.

Setelah huruf dan potongan teks terkendali, langkah berikutnya adalah mencari baris yang memuat kata tertentu lalu mengganti teksnya — dua pekerjaan yang ditangani contains() dan replace() pada chapter Pencarian dan Penggantian Teks.