Pandas cumsum: Running Total di Python
Blog/Tips & Trik/Pandas cumsum: Running Total di Python

Pandas cumsum: Running Total di Python

BimaBima
·10 September 2026·8 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Pandas cumsum ngitung running total, yaitu jumlah berjalan yang nambah nilai tiap baris ke total baris sebelumnya. Selain cumsum, ada cummax, cummin, dan cumprod buat maksimum, minimum, dan hasil kali berjalan. Buat data yang punya beberapa grup, pakai df.groupby(kolom)[nilai].cumsum() biar running total-nya reset di tiap grup dan nggak nyampur antar kategori.

cumsum di Pandas ngitung running total, jumlah berjalan yang nambah nilai tiap baris ke total baris sebelumnya. Satu baris kode, langsung dapat kolom saldo berjalan.

Kepakai di banyak laporan. Saldo kas harian, omzet kumulatif dari awal bulan, atau total pengeluaran yang nambah terus.

Aku bakal tunjukin cara pakainya, saudara-saudaranya kayak cummax dan cumprod, dan cara ngitung running total per grup biar nggak nyampur antar kategori.

Apa itu cumsum di Pandas?

cumsum, singkatan cumulative sum, ngitung jumlah berjalan sepanjang kolom. Baris pertama sama dengan nilainya sendiri. Baris kedua nilai pertama plus kedua. Baris ketiga tiga nilai pertama dijumlah, begitu seterusnya sampai baris terakhir yang totalnya sama dengan jumlah keseluruhan.

Hasilnya kolom sepanjang data asli, bukan satu angka. Ini beda dari sum yang cuma ngasih total akhir.

Gimana cara pakai cumsum?

df['saldo_berjalan'] = df['nilai'].cumsum()

Kolom baru berisi total yang nambah tiap baris. Contoh dengan angka:

HariPemasukancumsum
1100100
2150250
380330
4120450

Kolom cumsum nunjukin total sampai hari itu. Pastiin datanya udah terurut per tanggal dulu, karena cumsum ngikutin urutan baris apa adanya.

Apa beda cumsum, cummax, cummin, dan cumprod?

Semua berjalan baris demi baris, tapi operasinya beda.

  • cumsum: jumlah berjalan.
  • cummax: nilai tertinggi yang pernah muncul sampai baris itu.
  • cummin: nilai terendah sampai baris itu.
  • cumprod: hasil kali berjalan, buat pertumbuhan majemuk.

cummax berguna buat nyari rekor tertinggi berjalan, misalnya omzet harian terbaik sampai saat ini. cumprod dipakai waktu ngitung efek bunga berbunga dari deret pertumbuhan.

Gimana cara hitung running total per grup?

Kalau datamu punya beberapa grup, pakai groupby sebelum cumsum biar totalnya reset di tiap grup.

df['omzet_kumulatif'] = (
    df.groupby('cabang')['omzet'].cumsum()
)

Tanpa groupby, running total terus nambah nyeberang antar cabang dan angkanya salah. Dengan groupby, tiap cabang punya jumlah berjalannya sendiri. Pola per grup ini mirip pandas transform buat hitung per grup yang tetap jaga jumlah barisnya.

Contoh kasus: saldo kas harian Toko Berkah

Toko Berkah, UMKM kelontong di dataset latihan ngulikdata, nyatat arus kas harian sepanjang 2025. Tiap baris berisi tanggal dan kas bersih hari itu, positif kalau surplus, negatif kalau tekor. Pemilik mau tau saldo kas berjalan biar tau kapan kas mepet.

df = df.sort_values('tanggal')
df['saldo'] = df['kas_bersih'].cumsum()

titik_terendah = df.nsmallest(1, 'saldo')

Hasilnya, saldo terendah jatuh di 18 Januari di angka Rp3.200.000, tepat sebelum belanja stok besar cair dari penjualan. Setelah dicek, tiap awal tahun kas selalu paling tipis karena stok Natal udah kepakai tapi pemasukan belum pulih. Pola ini yang bikin pemilik nyimpen dana cadangan minimal Rp5 juta buat lewatin dua minggu pertama Januari tanpa panik.

Buat lihat rekor pemasukan harian berjalan, tinggal ganti ke cummax.

df['rekor_omzet'] = df['omzet'].cummax()

Kesalahan umum saat pakai cumsum

1. Lupa ngurutin data dulu

cumsum ngikutin urutan baris apa adanya. Kalau tanggalnya acak, saldo berjalannya nggak bermakna. Selalu sort_values per tanggal sebelum cumsum.

2. Cumsum antar grup tanpa groupby

Data multi-cabang butuh groupby sebelum cumsum. Tanpa itu, total satu cabang kebawa ke cabang berikutnya dan angkanya salah diam-diam.

3. Nggak nyadar NaN bikin lubang

Default cumsum ngelewatin NaN, tapi baris itu tetap NaN di hasil. Kalau kamu mau NaN dianggap nol, isi dulu pakai fillna(0). Cek juga shift dan diff yang punya perilaku NaN mirip di baris pertama.

FAQ

Apa itu running total dan gimana cumsum ngitungnya?

Running total adalah jumlah berjalan yang nambah nilai tiap baris ke total baris-baris sebelumnya. Baris pertama sama dengan nilainya sendiri, baris kedua nilai pertama plus kedua, dan seterusnya. cumsum ngerjain ini otomatis: df['nilai'].cumsum() ngasih kolom baru berisi total berjalan. Ini dasar buat ngitung saldo kas atau omzet kumulatif dari awal periode.

Gimana cara hitung cumsum per grup di Pandas?

Pakai groupby sebelum cumsum. Contohnya df.groupby('cabang')['omzet'].cumsum() ngitung running total omzet yang reset di tiap cabang. Tanpa groupby, totalnya bakal terus nambah nyeberang antar cabang dan hasilnya salah. Cara ini menjaga tiap grup punya jumlah berjalannya sendiri tanpa nyampur data grup lain.

Apa beda cumsum, cummax, dan cumprod?

Ketiganya sama-sama berjalan baris demi baris, tapi operasinya beda. cumsum nambahin nilai jadi jumlah berjalan. cummax nyimpen nilai tertinggi yang pernah muncul sampai baris itu. cumprod ngaliin nilai jadi hasil kali berjalan, berguna buat menghitung pertumbuhan majemuk. Semua ngeluarin kolom sepanjang data asli, bukan satu angka ringkasan.

Gimana cumsum nangani nilai NaN?

Secara default, cumsum ngelewatin NaN dan nggak nghitungnya, tapi baris NaN itu sendiri tetap NaN di hasil. Total berjalan lanjut seolah baris kosong itu nol. Kalau kamu mau NaN dianggap nol beneran, isi dulu pakai fillna(0) sebelum cumsum. Kalau mau totalnya berhenti begitu ketemu NaN, atur argumen skipna=False.

Penutup

  • cumsum ngitung running total, jumlah berjalan yang nambah tiap baris sampai total akhir.
  • Ada cummax, cummin, dan cumprod buat maksimum, minimum, dan hasil kali berjalan.
  • Selalu sort dulu, dan pakai groupby kalau datanya punya beberapa grup.

Coba sekarang: ambil arus kas harianmu, urutin per tanggal, lalu bikin kolom saldo pakai cumsum. Cari hari saldo paling tipis pakai nsmallest.

Konsep ini setara running total pakai SUM window function di SQL. Lihat referensi fungsi SUM dan istilah Aggregate Function di glosarium. Detail parameter ada di dokumentasi resmi pandas cumsum.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel terkait

NumPy reshape: Ubah Bentuk Array (2026)
Tips & Trik
8 Oktober 2026•9 menit baca

NumPy reshape: Ubah Bentuk Array (2026)

Fungsi reshape di NumPy ngatur ulang bentuk array tanpa ngubah datanya. Ini cara pakainya, arti angka -1, dan cara ngeflat array.

BimaBima
NumPy Array: Dasar-Dasar untuk Analis Data (2026)
Tips & Trik
6 Oktober 2026•10 menit baca

NumPy Array: Dasar-Dasar untuk Analis Data (2026)

NumPy array bikin hitungan data di Python jauh lebih cepat dari list biasa. Ini dasar bikin, slicing, dan operasi array buat analis.

BimaBima
Alternatif iterrows yang Lebih Cepat di Pandas
Tips & Trik
3 Oktober 2026•8 menit baca

Alternatif iterrows yang Lebih Cepat di Pandas

iterrows nyaman ditulis tapi lambat. Ini urutan alternatif iterrows di pandas dari yang tercepat, plus benchmark biar kamu tau kapan pakai yang mana.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

© 2026 Ngulik Data. Semua hak dilindungi.

TAUTAN
BantuanHargaDatasetBlogAfiliasi
LEGAL
Syarat & KetentuanKebijakan Privasi
Ngulik Data
DatasetLeaderboardBlogStore