0Pricing
Pandas & NumPy Academy · Pelajaran

Akses .str

Akses metode string pada Series menggunakan .str dan terapkan lower(), upper(), strip(), serta len() pada semua nilai.

Akses .str adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Pengantar Pengakses .str

String Python memiliki banyak metode yang berguna seperti .lower(), .strip(), dan .replace(), tetapi Anda tidak dapat memanggilnya secara langsung pada Series Pandas yang berisi string—Anda harus menggunakan perulangan. Pengakses .str mengatasi hal ini dengan menyediakan versi tervectorisasi dari metode string bawaan Python pada Series, menerapkan operasi ke setiap elemen sekaligus tanpa menulis perulangan dan menangani NaN dengan baik (mengembalikan NaN untuk nilai yang hilang).

import pandas as pd

names = pd.Series(['  Alice ', 'BOB', '  carol  '])

# .strip() removes leading/trailing whitespace from every element
print(names.str.strip())
# 0    Alice
# 1      BOB
# 2    carol

# .lower() lowercases every element
print(names.str.strip().str.lower())
# 0    alice
# 1      bob
# 2    carol

Metode Konversi Kapitalisasi

Kapitalisasi yang tidak konsisten merupakan salah satu masalah kualitas data yang paling umum. Pengakses .str menyediakan .lower(), .upper(), .title() (huruf pertama setiap kata menjadi huruf kapital), dan .capitalize() (hanya huruf pertama string). Gunakan .lower() sebelum perbandingan dan operasi groupby agar 'NYC' dan 'nyc' tidak diperlakukan sebagai grup yang berbeda.

import pandas as pd

df = pd.DataFrame({'city': ['new york', 'LOS ANGELES', 'Chicago', 'HOUSTON']})

df['city_lower'] = df['city'].str.lower()
df['city_title'] = df['city'].str.title()
df['city_upper'] = df['city'].str.upper()

print(df[['city_lower', 'city_title']])
#    city_lower   city_title
# 0   new york     New York
# 1  los angeles  Los Angeles
# 2    chicago      Chicago
# 3    houston      Houston

Menghapus Spasi

Spasi di awal dan akhir tidak terlihat dalam tampilan, tetapi menyebabkan perbandingan kecocokan persis gagal secara diam-diam. .str.strip() menghapus spasi dari kedua ujung, .str.lstrip() hanya menghapus dari kiri, dan .str.rstrip() hanya menghapus dari kanan. Anda juga dapat meneruskan karakter tertentu untuk dihapus (misalnya, .str.strip('$') menghapus tanda dolar).

import pandas as pd

df = pd.DataFrame({'code': ['  A001  ', '$B002$', '  C003']})

print(df['code'].str.strip())     # 'A001', '$B002$', 'C003'
print(df['code'].str.strip('$ ')) # 'A001', 'B002', 'C003'

Memeriksa Panjang dengan .str.len()

.str.len() mengembalikan jumlah karakter dalam setiap elemen string sebagai Series bilangan bulat. Ini berguna untuk validasi—memeriksa bahwa kode produk selalu terdiri dari 5 karakter, nomor telepon memiliki jumlah digit yang benar, atau bidang teks tidak terlalu pendek secara mencurigakan (misalnya, satu karakter yang menunjukkan nilai penanda).

import pandas as pd

df = pd.DataFrame({'sku': ['A001', 'BB02', 'CCC', 'D0005', 'E1']})

df['sku_len'] = df['sku'].str.len()
print(df)

# Rows with unexpected SKU length
bad_skus = df[df['sku_len'] != 4]
print(bad_skus)
#     sku  sku_len
# 2   CCC        3
# 3  D0005        5
# 4    E1        2

Memeriksa Awalan dan Akhiran

.str.startswith() dan .str.endswith() mengembalikan Series boolean. Keduanya merupakan cara paling bersih untuk memfilter baris berdasarkan awal atau akhir nilai string—misalnya, memilih semua ID pesanan yang diawali 'ORD' atau semua nama file yang diakhiri '.csv'. Keduanya juga menerima tuple string untuk memeriksa beberapa awalan atau akhiran sekaligus.

import pandas as pd

df = pd.DataFrame({'file': ['data.csv', 'report.xlsx', 'backup.csv', 'config.json']})

# Filter CSV files
csv_files = df[df['file'].str.endswith('.csv')]
print(csv_files)
#         file
# 0   data.csv
# 2  backup.csv

# Multiple suffixes
spreadsheets = df[df['file'].str.endswith(('.csv', '.xlsx'))]
print(spreadsheets.shape)  # (3, 1)

.str.contains() untuk Pencarian Substring

.str.contains(pattern) mengembalikan Series boolean yang menunjukkan apakah setiap elemen berisi pola yang diberikan. Secara default, fungsi ini menerima ekspresi reguler, tetapi Anda dapat meneruskan regex=False untuk pencarian substring literal. Argumen na=False memperlakukan NaN sebagai tidak cocok, alih-alih meneruskan NaN ke hasil.

import pandas as pd

df = pd.DataFrame({
    'description': ['Red apple', 'Green banana', 'Red cherry', None, 'Blue grape']
})

# Find rows containing 'Red' (case-sensitive)
mask = df['description'].str.contains('Red', na=False)
print(df[mask])
#    description
# 0   Red apple
# 2  Red cherry

Perilaku NaN dalam Metode .str

Saat sebuah Series berisi nilai NaN, sebagian besar metode .str secara default meneruskan NaN—metode tersebut mengembalikan NaN pada posisi yang hilang dalam Series output. Metode yang mengembalikan nilai boolean (seperti .str.contains()) secara default mengembalikan NaN pada posisi yang hilang, yang dapat menimbulkan masalah pada pengindeksan boolean. Gunakan na=False untuk memperlakukan NaN sebagai tidak cocok, atau na=True untuk memperlakukannya sebagai cocok.

import pandas as pd
import numpy as np

s = pd.Series(['hello', None, 'world', np.nan])

# Default: NaN propagates
print(s.str.upper())
# 0    HELLO
# 1     None
# 2    WORLD
# 3      NaN

# contains with na=False: NaN treated as non-matching
print(s.str.contains('o', na=False))
# 0     True
# 1    False
# 2     True
# 3    False

.str.count() untuk Frekuensi Pola

.str.count(pattern) menghitung berapa kali suatu pola muncul dalam setiap elemen string. Ini berguna untuk rekayasa fitur dalam pemrosesan bahasa alami—misalnya, menghitung berapa kali sebuah kata muncul, berapa banyak digit yang terdapat dalam string, atau berapa banyak koma yang memisahkan nilai dalam bidang dengan pembatas.

import pandas as pd

df = pd.DataFrame({'text': ['hello world', 'foo bar baz', 'a b c d e']})

# Count number of words (spaces + 1)
df['word_count'] = df['text'].str.count(' ') + 1
print(df)
#           text  word_count
# 0  hello world           2
# 1  foo bar baz           3
# 2    a b c d e           5

Merangkai Metode .str

Karena setiap metode .str mengembalikan Series baru, Anda dapat merangkai beberapa operasi string dalam satu expression. Ini adalah cara paling rapi untuk menerapkan beberapa langkah pembersihan pada kolom teks: menghapus spasi, mengubah menjadi huruf kecil, dan menghapus karakter khusus — semuanya dalam satu baris yang mudah dibaca. Rangkaian ini dievaluasi dari kiri ke kanan, dengan setiap langkah meneruskan hasilnya ke langkah berikutnya.

import pandas as pd

df = pd.DataFrame({'tag': ['  Python  ', ' DATA-SCIENCE ', ' Machine_Learning !']})

df['tag_clean'] = (
    df['tag']
    .str.strip()
    .str.lower()
    .str.replace('[-_!]', ' ', regex=True)
    .str.strip()
)
print(df)
#                      tag           tag_clean
# 0            Python       python
# 1       DATA-SCIENCE     data science
# 2  Machine_Learning !  machine learning

Mengindeks Karakter dengan .str[]

Notasi .str[n] mengambil karakter pada posisi n dari setiap string, sedangkan .str[start:end] mengambil potongan substring. Ini adalah pengindeksan tervectorisasi ke dalam string, yang berguna untuk mengambil kode dengan lebar tetap seperti awalan kode pos, digit tahun dari string tanggal, atau huruf pertama nama.

import pandas as pd

df = pd.DataFrame({'code': ['NYC-001', 'LAX-042', 'ORD-018']})

# Extract city code (first 3 chars)
df['city'] = df['code'].str[:3]

# Extract numeric part (chars 4 onwards)
df['num'] = df['code'].str[4:]

print(df)
#       code city num
# 0  NYC-001  NYC 001
# 1  LAX-042  LAX 042
# 2  ORD-018  ORD 018

Pembersihan Praktis dengan .str

Berikut adalah pipeline pembersihan teks yang realistis untuk kolom nama produk yang diambil dari halaman web. Pipeline ini menggabungkan penghapusan spasi, normalisasi huruf besar-kecil, penghapusan tanda baca, dan penggabungan spasi — urutan prapemrosesan standar dalam tugas NLP atau pembersihan data.

import pandas as pd

df = pd.DataFrame({
    'product': ['  Apple iPhone 15!!', 'samsung GALAXY s24 ', '  Google Pixel 8  Pro  ']
})

df['product_clean'] = (
    df['product']
    .str.strip()
    .str.title()
    .str.replace('[^A-Za-z0-9 ]', '', regex=True)  # remove punctuation
    .str.replace(r'\s+', ' ', regex=True)            # collapse extra spaces
    .str.strip()
)
print(df['product_clean'].tolist())
# ['Apple Iphone 15', 'Samsung Galaxy S24', 'Google Pixel 8 Pro']

Pemeriksaan Singkat

Uji pemahaman Anda tentang pengakses .str.

Ringkasan Pelajaran

Dalam pelajaran ini, Anda mempelajari bahwa pengakses .str menyediakan metode string tervectorisasi pada Series Pandas, termasuk lower/upper/strip untuk normalisasi, startswith/endswith/contains untuk penyaringan, dan len/count untuk pengukuran. Rangkai beberapa pemanggilan .str untuk membangun pipeline pembersihan yang mudah dibaca. Gunakan na=False jika terdapat nilai NaN. Selanjutnya, Anda akan memisahkan dan mengganti string untuk melakukan transformasi yang lebih lanjut.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Akses .str” gratis?

Ya — teks lengkap “Akses .str” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Akses .str”?

Akses metode string pada Series menggunakan .str dan terapkan lower(), upper(), strip(), serta len() pada semua nilai. Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?

Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Akses .str” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?

Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Akses .str
  2. Memisahkan dan Mengganti String
  3. Pencocokan Pola dengan Regex
  4. Menggabungkan dan Membersihkan Kolom Teks
← Kembali ke Pandas & NumPy Academy