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:
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:
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:
- Baris 3-6: DataFrame
pelanggandibuat dari dua kolom teks,namadankota, dengan campuran huruf besar, kecil, dan tanpa kapital di awal — kondisi data yang lazim di lapangan. - Baris 8: properti
.dtypepada kolomkotamenunjukkanstr, bukanobjectseperti versi pandas lama. dtypestrhanya menampung string, sehingga kesalahan isi kolom terdeteksi lebih awal. - Baris 10-11: dua kolom baru dihasilkan dari
pelanggan["kota"].str.upper()danpelanggan["nama"].str.title(). Accessor.strmenerapkan method string Python tersebut pada setiap elemen dan mengembalikan Series baru. - 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:
| Kelompok | Method | Hasil |
|---|---|---|
| Mengubah huruf | lower(), upper(), title() | salinan teks dengan kapitalisasi baru |
| Panjang dan potongan | len(), get(0), slice(0, 4) | jumlah karakter, karakter ke-n, substring |
| Menguji isi | startswith("s"), endswith("m") | Series boolean per baris |
| Menyambung teks | cat(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.