Penjelasan sederhana
Tanggal dari file CSV sering terbaca sebagai teks biasa. to_datetime() mengubahnya menjadi tanggal sungguhan supaya bisa diambil bulannya, dihitung selisihnya, atau dikelompokkan per minggu.
Sintaks
pd.to_datetime(df['kolom'], format=None)
df['tgl'].dt.month / .dt.day_name()
| Bagian | Keterangan |
|---|---|
format | Pola tanggal, misalnya '%d/%m/%Y' untuk 31/12/2026. |
.dt.year / .dt.month / .dt.day | Ambil tahun, bulan, atau tanggal. |
.dt.day_name() | Nama hari (bahasa Inggris). |
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 to_datetime()
Data contoh: penjualan (sudah tersedia sebagai DataFrame)
DataFrame penjualan
| id | tanggal | karyawan_id | produk | kategori | qty | harga |
|---|---|---|---|---|---|---|
| 1 | 2026-01-05 | 4 | Laptop | Elektronik | 2 | 8500000 |
| 2 | 2026-01-12 | 6 | Printer | Elektronik | 1 | 2300000 |
| 3 | 2026-01-20 | 4 | Kursi Kantor | Furnitur | 5 | 1200000 |
| 4 | 2026-02-03 | 6 | Laptop | Elektronik | 1 | 8500000 |
| 5 | 2026-02-14 | 4 | Meja Kerja | Furnitur | 3 | 1750000 |
| 6 | 2026-02-25 | 5 | Kertas A4 | ATK | 20 | 55000 |
| 7 | 2026-03-02 | 6 | Kursi Kantor | Furnitur | 4 | 1200000 |
| 8 | 2026-03-10 | 4 | Printer | Elektronik | 2 | 2300000 |
| 9 | 2026-03-18 | 5 | Kertas A4 | ATK | 30 | 55000 |
| 10 | 2026-03-27 | 6 | Monitor | Elektronik | 3 | 1900000 |
penjualan['tanggal'] = pd.to_datetime(penjualan['tanggal'])
penjualan['bulan'] = penjualan['tanggal'].dt.month
penjualan['hari'] = penjualan['tanggal'].dt.day_name()
penjualan[['tanggal', 'produk', 'bulan', 'hari']].head(5)
Hasil 5 baris × 4 kolom
| tanggal | produk | bulan | hari |
|---|---|---|---|
| 2026-01-05 | Laptop | 1 | Monday |
| 2026-01-12 | Printer | 1 | Monday |
| 2026-01-20 | Kursi Kantor | 1 | Tuesday |
| 2026-02-03 | Laptop | 2 | Tuesday |
| 2026-02-14 | Meja Kerja | 2 | Saturday |
Setelah jadi tipe tanggal, bulan dan nama hari bisa diambil langsung dari kolom tanggal.
Cara kerjanya, langkah demi langkah
pd.to_datetime()mengubah teks "2026-01-05" menjadi tanggal..dt.monthmengambil angka bulan..dt.day_name()mengambil nama hari.
Dipakai untuk apa di kantor?
- Rekap penjualan per bulan atau per hari dalam seminggu.
- Menghitung lama kerja, umur piutang, atau keterlambatan.
Kesalahan yang sering terjadi
- Format tanggal Indonesia (31/12/2026) terbaca terbalik. Tulis
format='%d/%m/%Y'ataudayfirst=True. - Memakai
.dtpada kolom yang masih teks. Pandas menolak dengan error yang intinya "kolom ini belum berupa tanggal"; ubah dulu denganpd.to_datetime().
np.where()