Pandas DataFrame – Mengganti Type Data Column

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
Sharing is caring:

Leave a Comment