Penjelasan sederhana
Kadang angka terbaca sebagai teks, atau ID terbaca sebagai desimal. astype() memaksa kolom ke tipe yang benar supaya bisa dihitung atau ditampilkan dengan tepat.
Sintaks
df['kolom'].astype(tipe)
| Bagian | Keterangan |
|---|---|
tipe | int, float, str, 'category', atau 'Int64' (angka bulat yang boleh kosong). |
df adalah nama DataFrame (tabel) yang sedang diolah. Contoh di bawah memakai import pandas as pd dan import numpy as np, yang sudah disiapkan otomatis.
Contoh astype()
Data contoh: karyawan (sudah tersedia sebagai DataFrame)
DataFrame karyawan
| id | nama | dept_id | kota | gaji | tgl_masuk | atasan_id |
|---|---|---|---|---|---|---|
| 1 | Andi Pratama | 3 | Bandung | 12500000 | 2019-03-11 | NaN |
| 2 | Bunga Lestari | 1 | Jakarta | 9800000 | 2020-07-01 | NaN |
| 3 | Candra Wijaya | 3 | Bandung | 8200000 | 2021-02-15 | 1 |
| 4 | Dewi Anggraini | 2 | Jakarta | 7500000 | 2022-05-09 | 6 |
| 5 | Eko Saputra | 1 | Jakarta | 6900000 | 2023-01-16 | 2 |
| 6 | Fajar Nugroho | 2 | Surabaya | 11000000 | 2018-09-03 | NaN |
| 7 | Gita Permata | 3 | Jakarta | 8200000 | 2023-08-21 | 1 |
| 8 | Hendra Gunawan | NaN | Medan | 5500000 | 2024-04-02 | NaN |
karyawan['dept_id'] = karyawan['dept_id'].astype('Int64')
karyawan['gaji_juta'] = (karyawan['gaji'] / 1000000).astype(str) + ' jt'
print(karyawan[['dept_id', 'gaji_juta']].dtypes)
karyawan[['nama', 'dept_id', 'gaji_juta']]
dept_id Int64 gaji_juta object dtype: object
Hasil 8 baris × 3 kolom
| nama | dept_id | gaji_juta |
|---|---|---|
| Andi Pratama | 3 | 12.5 jt |
| Bunga Lestari | 1 | 9.8 jt |
| Candra Wijaya | 3 | 8.2 jt |
| Dewi Anggraini | 2 | 7.5 jt |
| Eko Saputra | 1 | 6.9 jt |
| Fajar Nugroho | 2 | 11.0 jt |
| Gita Permata | 3 | 8.2 jt |
| Hendra Gunawan | NaN | 5.5 jt |
dept_id kembali jadi bilangan bulat tanpa kehilangan sel kosongnya, dan gaji diubah jadi teks bersatuan juta.
Cara kerjanya, langkah demi langkah
astype('Int64')mengubah dept_id ke bilangan bulat yang tetap boleh kosong.- Gaji dibagi sejuta, diubah ke teks, lalu disambung dengan " jt".
dtypesmenampilkan jenis isi kedua kolom: Int64 (angka bulat) dan object (teks).
Dipakai untuk apa di kantor?
- Kolom harga yang terbaca sebagai teks dari file CSV.
- Menghemat memori dengan tipe category untuk kolom berulang.
Kesalahan yang sering terjadi
astype(int)pada kolom yang masih ada NaN akan error. Pakai'Int64'atau isi dulu dengan fillna.- Mengubah teks yang mengandung titik ribuan langsung ke angka.
groupby()