
Pandas – Manipulasi Teks
Teks adalah tipe data yang tak dapat dipisahkan dari keseharian. Data sebagai hasil dari observasi merefleksikan kondisi tersebut sehingga kita tidak pernah kesulitan menemukan data berbentuk teks. Keberadaan teks menimbulkan kebutuhan untuk memanipulasinya.
Kode Lima Detik
import pandas as pd
df = pd.read_csv('https://bit.ly/penjual_bd')
# teks jadi list
df['nama_pisah'] = df['nama'].str.split()
# list jadi teks
df['nama_gabung'] = df['nama_pisah'].str.join('-')
# ambil kata ke-n
df['nama_depan'] = df['nama'].str.split().str[0]
df['nama_belakang'] = df['nama'].str.split().str[1]
# mengecilkan huruf
df['nama_kecil'] = df['nama'].str.lower()
# membesarkan huruf
df['nama_kecil'] = df['nama'].str.upper()
# ganti kata
df['nama_depan_ganti'] = df['nama_depan'].str.replace('di', 'id')
# hilangkan spasi awal dan akhir
df['nama_spasi_kiri'] = df['nama_spasi'].str.strip()
# menduplikat teks
df['nama_dup'] = df['nama'].str.repeat(repeats=2)
# apakah mengandung teks tertentu
df['ada_di'] = df['nama'].str.contains('di')
# apakah hanya menggunakan huruf kecil
df['apa_kecil'] = df['nama_kecil'].str.islower()
Latar Belakang
Mengekstraksi, memotong dan mengganti teks merupakan beberapa metode standar yang diperlukan saat menangani data. Pandas menyediakan fungsi str yang membantu menangani teks (string), fungsi yang disebut sebagai “patterned after Python’s string methods, with some inspiration from R’s stringr package“.
Sebagai implikasi dari itu, kita dapat menggunakan fungsi/method yang biasa kita gunakan pada teks di Python atau saat menggunakan stringr di R, dengan sedikit penyesuaian dialek.
Kode
Kita menggunakan data bersahadja ini.
import pandas as pd
df = pd.read_csv('https://bit.ly/penjual_bd')

Memisahkan teks menjadi list
df['nama_pisah'] = df['nama'].str.split()

Menggabungkan list menjadi teks
df['nama_gabung'] = df['nama_pisah'].str.join('-')

Membuat kolom baru berdasar kata ke-n
df['nama_depan'] = df['nama'].str.split().str[0] df['nama_belakang'] = df['nama'].str.split().str[1]

Huruf besar/kecil
Huruf kecil
df['nama_kecil'] = df['nama'].str.lower()

Huruf besar
df['nama_kecil'] = df['nama'].str.upper()

Huruf besar di awal
df['nama_besar'] = df['nama_kecil'].str.title() df['nama_besar2'] = df['nama_kecil'].str.capitalize()

Tukar huruf besar dan kecil
df['nama_tukar'] = df['nama'].str.swapcase()

Ganti kata
df['nama_depan_ganti'] = df['nama_depan'].str.replace('di', 'id')

Ambil sebagian karakter
df['nama_5'] = df['nama'].str.slice(5) df['nama_2'] = df['nama'].str.slice(0, 10, 2)

Panjang Teks
df['panjang_nama'] = df['nama'].str.len()

Banyak Teks
df['banyak_di'] = df['nama'].str.count('di')

Hilangkan spasi
Untuk mensimulasikan, kita buat sebuah kolom yang datanya memiliki kelebihan spasi di kiri dan di kanannya.
df['nama_spasi'] = ' ' + df['nama'] + ' '
Spasi kiri
df['nama_spasi_kiri'] = df['nama_spasi'].str.lstrip()

Spasi kanan
df['nama_spasi_kiri'] = df['nama_spasi'].str.rstrip()

Spasi kiri dan kanan
df['nama_spasi_kiri'] = df['nama_spasi'].str.strip()

Membuat duplikat
Untuk membuat duplukasi teks di pandas kita menggunakan fungsi str.repeat yang sepertinya terinspirasi dari fungsi str_dup di package stringr.
df['nama_dup'] = df['nama'].str.repeat(repeats=2)

Penulis belum menemukan padanan fungsi tersebut di Python. Jika ingin mendupukasi teks, dengan “cara” python kode yang digunakan adalah berikut.
df['nama_dup2'] = df['nama'].str[:] * 2

Menurut penulis fungsi str.duplicate yang ditawarkan pandas, atau str_sub di stringr lebih mudah dicerna ketimbang yang ditawarkan Python.
Mencari teks (substring)
Mendapatkan posisi teks
df['ada_di_pada'] = df['nama'].str.find('di')

Apakah mengandung teks tertentu
df['ada_di'] = df['nama'].str.contains('di')

Apakah
Apakah teks menggunakan huruf kecil
df['apa_kecil'] = df['nama_kecil'].str.islower()

Apakah teks menggunakan huruf besar
df['apa_besar'] = df['nama_depan_besar'].str.isupper()

Lainnya
Selain islower dan isupper di atas, pandas menyediakan fungsi untuk menguji teks lainnya yaitu:
Referensi
- https://pandas.pydata.org/pandas-docs/stable/user_guide/text.html
- https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.html
- https://www.journaldev.com/24588/python-string-functions
- https://www.programiz.com/python-programming/methods/string
Cover Image by Gerd Altmann from Pixabay
