Pandas DataFrame – Latihan Optimisasi Data

Melanjutkan dari modul sebelumnya, kita akan melakukan optimisasi dataframe dengan mengubah tipedata kolom.

Berikut status terakhir dari modul sebelumnya.

import pandas as pd

df = pd.read_csv("employees.csv", parse_dates=["Start Date", "Last Login Time"])

df.info()
df.head(3)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 8 columns):
 #   Column             Non-Null Count  Dtype         
---  ------             --------------  -----         
 0   First Name         933 non-null    object        
 1   Gender             855 non-null    object        
 2   Start Date         1000 non-null   datetime64[ns]
 3   Last Login Time    1000 non-null   datetime64[ns]
 4   Salary             1000 non-null   int64         
 5   Bonus %            1000 non-null   float64       
 6   Senior Management  933 non-null    object        
 7   Team               957 non-null    object        
dtypes: datetime64[ns](2), float64(1), int64(1), object(4)
memory usage: 62.6+ KB

Dari info diatas, dapat dilakukan optimisasi untuk kolom:

  • Gender, dari string menjadi Category.
  • Senior Management, dari string menjadi boolean.
df["Gender"] = df["Gender"].astype("category")
df["Senior Management"] = df["Senior Management"].astype("bool")
df["Team"] = df["Team"].astype("category")

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 8 columns):
 #   Column             Non-Null Count  Dtype         
---  ------             --------------  -----         
 0   First Name         933 non-null    object        
 1   Gender             855 non-null    category      
 2   Start Date         1000 non-null   datetime64[ns]
 3   Last Login Time    1000 non-null   datetime64[ns]
 4   Salary             1000 non-null   int64         
 5   Bonus %            1000 non-null   float64       
 6   Senior Management  1000 non-null   bool          
 7   Team               957 non-null    category      
dtypes: bool(1), category(2), datetime64[ns](2), float64(1), int64(1), object(1)
memory usage: 42.6+ KB

Jika kita bandingkan memory usage turun menjadi 42.6+ KB dari 62.6+ KB.

Sharing is caring:

Leave a Comment