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


Cover Image by Gerd Altmann from Pixabay

Leave a Reply

Your email address will not be published. Required fields are marked *