Method split berguna untuk memisahkan target string berdasarkan separator yang kita input.
Mari kita import library dan data yang digunakan.
import pandas as pd
df = pd.read_csv("chicago.csv").dropna(how="all")
df["Department"] = df["Department"].astype("category")
df.head()
Parameter yang digunakan adalah
- expand: mengembalikan hasil split menjadi dataframe.
- n: jumlah split yang akan dilakukan.
Contoh code untuk memisahkan first name dan last name dari kolom Name.
df["Name"].str.split(",")
0 [AARON, ELVIA J]
1 [AARON, JEFFERY M]
2 [AARON, KARINA]
3 [AARON, KIMBERLEI R]
4 [ABAD JR, VICENTE M]
...
32057 [ZYGADLO, MICHAEL J]
32058 [ZYGOWICZ, PETER J]
32059 [ZYMANTAS, MARK E]
32060 [ZYRKOWSKI, CARLO E]
32061 [ZYSKOWSKI, DARIUSZ]
Name: Name, Length: 32062, dtype: object
Pandas akan mengembalikan series of list. Perhatikan tanda koma diatas bukan bagian dari string, namun bagian dari list.
Jika Anda ingin mengambil last name, dapat digunakan method get dengan index 0. Struktur nama adalah lastname, firstname.
df["Name"].str.split(",").str.get(0)
0 AARON
1 AARON
2 AARON
3 AARON
4 ABAD JR
...
32057 ZYGADLO
32058 ZYGOWICZ
32059 ZYMANTAS
32060 ZYRKOWSKI
32061 ZYSKOWSKI
Name: Name, Length: 32062, dtype: object
Contoh code menggunakan expand pada kolom Name, dan diassign ke dataframe original menjadi kolom baru lastname dan firstname.
df[["Last Name", "First Name"]] = df["Name"].str.split(",", expand=True)
Contoh menggunakan parameter n, kita akan split kolom Position Tile, dengan melakukan 1 kali split. Position title akan displit berdasarkan spasi, dan hanya dilakukan 1 kali.
Silakan bereksperimen dengan mengubah nilai n menjadi 2.
df["Position Title"].str.split(" ", n = 1, expand=True)
Latihan
Cari 3 firstname yang paling banyak digunakan. Tips, dapatkan firstname, tanpa middle name.
Solusi
df["Name"].str.split(",").str.get(1).str.split(" ").str.get(2).value_counts().head(3)
MICHAEL 1153
JOHN 899
JAMES 676
Name: Name, dtype: int64