Untuk mengganti tipe data kolom digunakan method astype().
Pertama import dahulu library dan data yang digunakan.
import pandas as pd
df = pd.read_csv("nba.csv")
Untuk mengganti tipe data, pertama kita perbaiki dahulu data NaN (lihat modul sebelumnya).
df["Salary"].fillna(0, inplace=True)
df["College"].fillna("No College", inplace=True)
Sebelum mengganti tipe data, mari kita cek dahulu menggunakan perintah dtype.
df.dtypes
Name object
Team object
Number float64
Position object
Age float64
Height object
Weight float64
College object
Salary float64
dtype: object
Kita ubah tipe data kolom salary menjadi integer. Karena astype tidak memiliki parameter inplace, maka kita harus assign kembali ke df original.
df["Salary"] = df["Salary"].astype("int")
Jika kita cek, maka dataypes dari kolom Salary sudah berubah.
df.dtypes
df.dtypes
Name object
Team object
Number float64
Position object
Age float64
Height object
Weight float64
College object
Salary int64
dtype: object
Latihan
Ganti data type dari kolom Numer dan Age.
Solusi
df["Age"] = df["Age"].astype("int")
df["Number"] = df["Number"].astype("int")
Menggunakan Tipe Data Category
Disini kita akan perkenalkan tipe data category. Tipe data ini cocok untuk data yang dengan beberapa varian dan digunakan berulang.
Keuntungan menggunakan tipe data kategori adalah dapat mengurangi ukuran memory.
Pada data diatas, kolom posisi cocok untuk digunakan tipe data category.
Pertama kita cek ukuran dari memory yang digunakan dengan perintah info().
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 458 entries, 0 to 457
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Name 457 non-null object
1 Team 457 non-null object
2 Number 458 non-null int64
3 Position 457 non-null object
4 Age 458 non-null int64
5 Height 457 non-null object
6 Weight 457 non-null float64
7 College 458 non-null object
8 Salary 458 non-null int64
dtypes: float64(1), int64(3), object(5)
memory usage: 32.3+ KB
Kemudian kita juga dapat periksa berapa banyak tipe kategori yang digunakan pada kolom position.
df["Position"].nunique() #return 5
Sesuai ekspektasi, ada 5 posisi pada permainan Basket.
Kemudian kita ubah tipe data kolom Position menjadi category.
df["Position"].astype("category")
Jika kita periksa dengan perintah df.info(), dapat dilihat ukuran memory yang digunakan berkurang.
Untuk kasus disini berkurang dari 32.3+ KB menjadi 29.4+ KB.
Bila dataframe Anda besar, penurunan memory akan cukup signifikan dan akan mempercepat proses pengolahan data.
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 458 entries, 0 to 457
Data columns (total 9 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Name 457 non-null object
1 Team 457 non-null object
2 Number 458 non-null int64
3 Position 457 non-null category
4 Age 458 non-null int64
5 Height 457 non-null object
6 Weight 457 non-null float64
7 College 458 non-null object
8 Salary 458 non-null int64
dtypes: category(1), float64(1), int64(3), object(4)
memory usage: 29.4+ KB