Pandas & NumPy Academy · Pelajaran

Pengakses .str

Akses kaedah rentetan pada Series menggunakan .str dan gunakan lower(), upper(), strip() serta len() pada semua nilai.

Pelajaran 1 daripada 413 langkah

Pengakses .str ialah pelajaran Pandas & NumPy Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pandas & NumPy Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pandas & NumPy Academy merangkumi sejumlah 4 pelajaran.

Pengenalan kepada Pengakses .str

Rentetan Python mempunyai banyak kaedah yang berguna seperti .lower(), .strip() dan .replace(), tetapi anda tidak boleh memanggilnya terus pada Series Pandas yang mengandungi rentetan — anda perlu menggunakan gelung. Pengakses .str menyelesaikan masalah ini dengan menyediakan versi tervektor bagi kaedah rentetan terbina dalam Python pada Series, lalu menggunakan operasi tersebut pada setiap elemen serentak tanpa menulis gelung dan mengendalikan NaN dengan baik (ia mengembalikan NaN bagi 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

Kaedah Penukaran Huruf Besar dan Kecil

Penggunaan huruf besar dan kecil yang tidak konsisten ialah antara isu kualiti data yang paling biasa. Pengakses .str menyediakan .lower(), .upper(), .title() (huruf pertama setiap perkataan dijadikan huruf besar) dan .capitalize() (hanya huruf pertama rentetan). Gunakan .lower() sebelum perbandingan dan operasi groupby supaya 'NYC' dan 'nyc' tidak dianggap sebagai kumpulan yang berbeza.

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

Membuang Ruang Kosong

Ruang kosong di awal dan akhir tidak kelihatan dalam paparan tetapi menyebabkan perbandingan padanan tepat gagal secara senyap. .str.strip() membuang ruang kosong pada kedua-dua hujung, .str.lstrip() membuang ruang kosong di sebelah kiri sahaja dan .str.rstrip() membuang ruang kosong di sebelah kanan sahaja. Anda juga boleh memberikan aksara tertentu untuk dibuang (contohnya, .str.strip('$') membuang 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'

Menyemak Panjang dengan .str.len()

.str.len() mengembalikan bilangan aksara dalam setiap elemen rentetan sebagai Series integer. Ini berguna untuk pengesahan — menyemak bahawa kod produk sentiasa mempunyai 5 aksara, nombor telefon mempunyai bilangan digit yang betul atau medan teks tidak terlalu pendek (contohnya, satu aksara yang mungkin menunjukkan ruang letak).

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

Menyemak Awalan dan Akhiran

.str.startswith() dan .str.endswith() mengembalikan Series boolean. Ini ialah cara paling kemas untuk menapis baris berdasarkan cara sesuatu nilai rentetan bermula atau berakhir — contohnya, memilih semua ID pesanan yang bermula dengan 'ORD' atau semua nama fail yang berakhir dengan '.csv'. Kedua-duanya juga menerima tuple rentetan untuk menyemak berbilang awalan atau akhiran serentak.

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 Carian Subrentetan

.str.contains(pattern) mengembalikan Series boolean yang menunjukkan sama ada setiap elemen mengandungi corak yang diberikan. Secara lalai, fungsi ini menerima ungkapan nalar, tetapi anda boleh memberikan regex=False untuk carian subrentetan literal. Argumen na=False menganggap NaN sebagai tidak sepadan, bukannya menyebarkan NaN ke dalam 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

Tingkah Laku NaN dalam Kaedah .str

Apabila Series mengandungi nilai NaN, kebanyakan kaedah .str menyebarkan NaN secara lalai — kaedah tersebut mengembalikan NaN pada kedudukan yang hilang dalam Series output. Kaedah yang mengembalikan nilai boolean (seperti .str.contains()) secara lalai mengembalikan NaN pada kedudukan yang hilang, yang boleh menimbulkan masalah dengan pengindeksan boolean. Gunakan na=False untuk menganggap NaN sebagai tidak sepadan, atau na=True untuk menganggapnya sepadan.

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 Kekerapan Corak

.str.count(pattern) mengira bilangan kali sesuatu corak muncul dalam setiap elemen rentetan. Ini berguna untuk kejuruteraan ciri dalam pemprosesan bahasa semula jadi — contohnya, mengira berapa kali sesuatu perkataan muncul, berapa banyak digit yang terkandung dalam rentetan atau berapa banyak koma yang memisahkan nilai dalam medan bersempadan.

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

Menggabungkan Kaedah .str

Oleh sebab setiap kaedah .str mengembalikan Series baharu, Anda boleh merangkaikan beberapa operasi rentetan dalam satu ungkapan. Ini ialah cara paling kemas untuk menggunakan beberapa langkah pembersihan pada lajur teks: membuang ruang kosong, menukar kepada huruf kecil dan membuang aksara khas — semuanya dalam satu baris yang mudah dibaca. Rangkaian ini dinilai dari kiri ke kanan, dengan setiap langkah menyalurkan hasilnya kepada langkah seterusnya.

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 Aksara dengan .str[]

Notasi .str[n] mengekstrak aksara pada kedudukan n daripada setiap rentetan, manakala .str[start:end] mengekstrak hirisan subrentetan. Ini ialah pengindeksan terv ektor ke dalam rentetan, yang berguna untuk mengekstrak kod lebar tetap seperti awalan poskod, digit tahun daripada rentetan tarikh 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 Praktikal dengan .str

Berikut ialah saluran paip pembersihan teks yang realistik untuk lajur nama produk yang dikikis daripada halaman web. Contoh ini menggabungkan pembuangan ruang kosong, penyeragaman huruf besar-kecil, pembuangan tanda baca dan penggabungan ruang kosong — urutan prapemprosesan standard dalam mana-mana tugasan 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']

Semakan Pantas

Uji pemahaman Anda tentang pengakses .str.

Rumusan Pelajaran

Dalam pelajaran ini Anda telah mempelajari bahawa: pengakses .str mendedahkan kaedah rentetan terv ektor pada Series Pandas, termasuk lower/upper/strip untuk penyeragaman, startswith/endswith/contains untuk penapisan dan len/count untuk pengukuran. Rangkaikan beberapa panggilan .str untuk membina saluran paip pembersihan yang mudah dibaca. Gunakan na=False apabila terdapat nilai NaN. Seterusnya kita akan memisahkan dan menggantikan rentetan untuk transformasi yang lebih lanjut.

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Pengakses .str” percuma?

Ya — teks penuh “Pengakses .str” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Pandas & NumPy Academy, tingkat taraf kepada CoddyKit PRO. Kursus Pandas & NumPy Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pengakses .str”?

Akses kaedah rentetan pada Series menggunakan .str dan gunakan lower(), upper(), strip() serta len() pada semua nilai. Anda berlatih Pandas & NumPy Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Pandas & NumPy Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Pandas & NumPy Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Pengakses .str” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pandas & NumPy Academy ini?

Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Pengakses .str
  2. Memisah dan Menggantikan Rentetan
  3. Pemadanan Corak dengan Regex
  4. Menggabung dan Membersihkan Lajur Teks
← Kembali ke Pandas & NumPy Academy