Materi
Kolom tanggal dari CSV dibaca sebagai teks. pd.to_datetime(kolom) mengubahnya menjadi tipe tanggal, sehingga bisa diurutkan, dibandingkan, dan dikelompokkan sebagai waktu. Selama masih teks, urutannya dihitung huruf per huruf, sehingga tanggal berformat 05/10/2026 dan 30/09/2026 berurutan salah.
df["tanggal"] = pd.to_datetime(df["tanggal"])Setelah bertipe tanggal, bagian-bagiannya diambil lewat .dt: .dt.year untuk tahun, .dt.month untuk nomor bulan, .dt.day untuk tanggal, dan .dt.day_name() untuk nama hari. Rekap bulanan dibuat dengan mengelompokkan salah satu bagian itu.
df["bulan"] = df["tanggal"].dt.month
per_bulan = df.groupby("bulan")["total"].sum()Contoh di luar latihan: berkas tiket layanan dengan kolom dibuka bertanggal gaya Indonesia, 05/10/2026. Dengan argumen dayfirst=True, pandas membacanya sebagai 5 Oktober; tanpa argumen itu, pandas membacanya sebagai 10 Mei.
Kesalahan umum: satu sel berisi teks yang bukan tanggal, misalnya tanda hubung. pd.to_datetime berhenti dengan ValueError; argumen errors="coerce" mengubah sel semacam itu menjadi NaT sehingga sisa kolomnya tetap terbaca. Kesalahan kedua: memakai .dt pada kolom yang masih teks, yang dijawab AttributeError: Can only use .dt accessor with datetimelike values.