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.
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