Pandas & NumPy Academy · Pelajaran

Memeriksa Tipe Data Kolom

Baca atribut dtypes, bedakan int64 dari float64 dan object, lalu temukan kolom yang perlu dikonversi.

Pelajaran 1 dari 413 langkah

Memeriksa Tipe Data Kolom adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Mengapa Tipe Data Kolom Penting

Setiap kolom dalam Pandas DataFrame memiliki tipe data yang menentukan cara nilai disimpan di memori dan operasi apa yang valid untuk nilai tersebut. Kolom bilangan bulat dengan tipe data object (string) tidak dapat dijumlahkan. Tanggal yang disimpan sebagai string akan diperlakukan sebagai teks, bukan deret waktu. Tipe data yang keliru merupakan salah satu penyebab paling umum bug yang tidak terlihat dan hasil yang tidak terduga dalam alur kerja analisis data.

Selalu periksa tipe data sebagai langkah pertama setelah memuat kumpulan data baru.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'age': ['25', '30', '35'],      # looks like int, stored as object
    'salary': [50000, 60000, 70000], # int64
    'hired': ['2022-01-01', '2023-06-15', '2024-03-10']  # looks like date
})

print(df.dtypes)
# age       object
# salary     int64
# hired     object
# dtype: object

Atribut Tipe Data

DataFrame.dtypes mengembalikan sebuah Series yang indeksnya adalah nama kolom dan nilainya adalah tipe data Pandas untuk setiap kolom. Tipe data umum yang akan Anda temui adalah int64, float64, object (string dan tipe campuran), bool, datetime64[ns], dan category. Nama tipe data memberi tahu Anda jenis data sekaligus jumlah byte yang digunakan setiap nilai.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'int_col': [1, 2, 3],
    'float_col': [1.5, 2.5, 3.5],
    'str_col': ['a', 'b', 'c'],
    'bool_col': [True, False, True]
})

print(df.dtypes)
# int_col      int64
# float_col  float64
# str_col     object
# bool_col      bool
# dtype: object

Mengidentifikasi Tipe Data object

Tipe data object adalah tipe serbaguna Pandas untuk kolom yang tidak dapat disimpan sebagai tipe numerik atau boolean. Biasanya ini berarti data string, tetapi juga dapat menunjukkan kolom dengan tipe campuran (misalnya, bilangan bulat yang bercampur dengan string). Kolom object menggunakan lebih banyak memori daripada tipe data khusus dan lebih lambat saat dioperasikan. Saat melihat object, tanyakan: seharusnya ini berupa string, angka, kategori, atau tanggal?

import pandas as pd

df = pd.DataFrame({'mixed': [1, 'two', 3.0, None]})
print(df.dtypes)
# mixed    object

# Check actual Python types inside the column
print(df['mixed'].apply(type).value_counts())
# <class 'int'>      1
# <class 'str'>      1
# <class 'float'>    2  (includes NaN which is float)

info() untuk Ikhtisar Tipe yang Lengkap

df.info() mencetak tabel ringkas yang menampilkan nama setiap kolom, jumlah nilai yang bukan null, dan tipe data, serta total penggunaan memori. Satu perintah ini memberi Anda gambaran lengkap tentang kualitas kumpulan data: Anda dapat melihat kolom mana yang memiliki data hilang dan kolom mana yang memiliki tipe data keliru secara bersamaan, sehingga perintah ini menjadi perintah standar pertama setelah memuat kumpulan data.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'id': [1, 2, 3],
    'score': [88.5, 92.0, np.nan],
    'grade': ['A', 'A', 'B']
})

df.info()
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 3 entries, 0 to 2
# Data columns (total 3 columns):
#  #   Column  Non-Null Count  Dtype
# ---  ------  --------------  -----
#  0   id      3 non-null      int64
#  1   score   2 non-null      float64
#  2   grade   3 non-null      object
# dtypes: float64(1), int64(1), object(1)
# memory usage: 200.0+ bytes

Masalah Tipe Data yang Umum Setelah read_csv

Saat Pandas membaca file CSV, Pandas menyimpulkan tipe data dengan memindai nilai. Beberapa masalah umum dapat muncul: kolom numerik terbaca sebagai object jika terdapat pemisah ribuan berupa koma atau simbol mata uang; kolom boolean terbaca sebagai object jika disimpan sebagai string 'Yes'/'No'; dan kolom tanggal terbaca sebagai object karena Pandas tidak mengurai tanggal kecuali diperintahkan. Dengan mengenali pola-pola ini, Anda dapat memperbaikinya dengan cepat melalui konversi tipe.

import pandas as pd
import io

csv = '''price,date,is_active
'1,200',2024-01-15,Yes
'800',2024-02-20,No
'''

df = pd.read_csv(io.StringIO(csv))
print(df.dtypes)
# price       object    <- should be int
# date        object    <- should be datetime64
# is_active   object    <- should be bool

Penggunaan Memori Berbagai Tipe Data

Berbagai tipe data menggunakan jumlah memori yang sangat berbeda. Kolom int64 menggunakan 8 byte per nilai, sedangkan kolom object yang menyimpan string pendek dapat menggunakan 50–200 byte per nilai. Untuk DataFrames dengan jutaan baris, memilih tipe data yang tepat dapat mengurangi penggunaan memori dari gigabita menjadi megabita. Panggil df.memory_usage(deep=True) untuk melihat biaya dalam byte pada setiap kolom.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'int64_col': np.arange(1_000_000, dtype='int64'),
    'float32_col': np.arange(1_000_000, dtype='float32'),
    'obj_col': ['a'] * 1_000_000
})

mem = df.memory_usage(deep=True) / 1024**2  # MB
print(mem.round(2))
# Index         0.00
# int64_col     7.63
# float32_col   3.81
# obj_col      55.26  <- much more for object!

Menemukan Kolom Numerik dengan Tipe yang Keliru

Masalah yang umum terjadi adalah kolom numerik yang disimpan sebagai object karena adanya karakter pemformatan yang tidak semestinya. Anda dapat mendeteksinya dengan memeriksa apakah pd.to_numeric(df['col'], errors='coerce') menghasilkan nilai yang berbeda dari kolom asli. Nilai apa pun yang tidak dapat diurai akan menjadi NaN, sehingga menunjukkan dengan tepat baris mana yang menyebabkan kegagalan penyimpulan tipe.

import pandas as pd

df = pd.DataFrame({'revenue': ['1000', '2000', '$3000', '4,000']})

# Check which values can't be parsed as numbers
parsed = pd.to_numeric(df['revenue'], errors='coerce')
print(parsed)
# 0    1000.0
# 1    2000.0
# 2       NaN   <- '$3000' failed
# 3       NaN   <- '4,000' failed

Memeriksa Ambiguitas Bilangan Bulat dan Pecahan

Saat sebuah kolom memiliki nilai NaN, Pandas menyimpan kolom bilangan bulat sebagai float64 karena tipe bilangan bulat standar NumPy tidak dapat merepresentasikan NaN. Pecahan yang dihasilkan, seperti 25.0, tampak seperti bilangan bulat tetapi disimpan sebagai pecahan. Pandas memperkenalkan tipe bilangan bulat yang dapat memuat nilai kosong (Int64 dengan I kapital) yang mendukung NaN sekaligus mempertahankan semantik bilangan bulat.

import pandas as pd
import numpy as np

df = pd.DataFrame({'count': [1, 2, np.nan, 4]})
print(df['count'].dtype)  # float64 — because NaN is float

# Nullable integer type supports NaN
df['count'] = df['count'].astype('Int64')  # capital I!
print(df)
#    count
# 0      1
# 1      2
# 2   <NA>
# 3      4
print(df['count'].dtype)  # Int64

select_dtypes() untuk Penyaringan Berdasarkan Tipe

df.select_dtypes(include=) memungkinkan Anda memilih semua kolom dari kelompok tipe tertentu. Argumen umum: 'number' (semua numerik), 'object' (string), 'bool', 'datetime', 'category'. Ini sangat berguna di awal alur kerja untuk menerapkan pembersihan numerik hanya pada kolom numerik dan pembersihan string hanya pada kolom teks.

import pandas as pd

df = pd.DataFrame({
    'name': ['Alice', 'Bob'],
    'age': [25, 30],
    'salary': [50000.0, 70000.0],
    'dept': ['Eng', 'HR']
})

numeric = df.select_dtypes(include='number')
print('Numeric columns:', numeric.columns.tolist())
# ['age', 'salary']

text = df.select_dtypes(include='object')
print('Text columns:', text.columns.tolist())
# ['name', 'dept']

Membuat Laporan Tipe Data

Kebiasaan EDA yang praktis adalah membuat laporan tipe data yang mencantumkan tipe data setiap kolom, jumlah nilai unik, dan contoh nilai. Ini membantu Anda dengan cepat mengidentifikasi kolom yang perlu dikonversi sebelum analisis dimulai. Anda dapat membuat laporan semacam itu dengan DataFrame sederhana yang dibangun dari agregasi per kolom.

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'age': [25, 30, 35],
    'salary': [50000, 60000, 70000],
    'dept': ['Eng', 'HR', 'Eng'],
    'hired': ['2022-01-01', '2023-06-15', '2024-03-10']
})

report = pd.DataFrame({
    'dtype': df.dtypes,
    'unique_count': df.nunique(),
    'sample': df.iloc[0]
})
print(report)

Konsistensi Tipe Data dalam Alur Kerja Produksi

Dalam alur kerja produksi yang memproses data baru setiap hari, tipe data dapat berubah secara tidak terduga — kolom yang selalu berupa int64 mungkin tiba sebagai float64 jika muncul satu NaN. Tambahkan asersi tipe data di awal alur kerja untuk mendeteksi perubahan skema lebih awal. Gagal secara jelas dengan pesan kesalahan yang informatif jauh lebih baik daripada diam-diam menghasilkan hasil yang keliru pada tahap berikutnya.

import pandas as pd

df = pd.DataFrame({'user_id': [1, 2, 3], 'score': [88.0, 92.0, 76.0]})

expected_dtypes = {'user_id': 'int64', 'score': 'float64'}

for col, expected in expected_dtypes.items():
    actual = str(df[col].dtype)
    assert actual == expected, (
        f'Column {col}: expected {expected}, got {actual}'
    )
print('All dtypes are correct')

Pemeriksaan Cepat

Uji pemahaman Anda tentang pemeriksaan tipe data kolom.

Rangkuman Pelajaran

Dalam pelajaran ini, Anda mempelajari bahwa df.dtypes menampilkan tipe setiap kolom, tipe data object merupakan tipe serbaguna untuk string dan tipe campuran, serta df.info() memberikan ikhtisar lengkap tentang tipe dan kemampuan memuat nilai kosong. Gunakan select_dtypes() untuk menyaring kolom berdasarkan kelompok tipe dan tambahkan asersi tipe data untuk mendeteksi perubahan skema dalam produksi. Selanjutnya, kita akan mengonversi kolom ke tipe data yang benar menggunakan astype().

Gratis untuk memulai

Belajar Python dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
30
Pelajaran
120

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Memeriksa Tipe Data Kolom” gratis?

Ya — teks lengkap “Memeriksa Tipe Data Kolom” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Memeriksa Tipe Data Kolom”?

Baca atribut dtypes, bedakan int64 dari float64 dan object, lalu temukan kolom yang perlu dikonversi. Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?

Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Memeriksa Tipe Data Kolom” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?

Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Memeriksa Tipe Data Kolom
  2. Konversi Tipe dengan astype()
  3. Tipe Data Kategorikal
  4. Mengurai Tanggal dengan Benar
← Kembali ke Pandas & NumPy Academy