Pandas nlargest dan nsmallest: Ambil Top N
Blog/Tips & Trik/Pandas nlargest dan nsmallest: Ambil Top N

Pandas nlargest dan nsmallest: Ambil Top N

BimaBima
·7 September 2026·7 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Pandas nlargest ngambil n baris dengan nilai terbesar dari sebuah kolom, dan nsmallest ngambil n baris terkecil, keduanya langsung terurut tanpa perlu sort manual. Buat data besar dengan n kecil, cara ini lebih cepat dari sort_values lalu head karena nggak ngurutin seluruh baris. Kombinasikan sama groupby buat ngambil Top N per kategori, dan atur argumen keep buat ngendaliin baris yang nilainya seri.

nlargest dan nsmallest di Pandas ngambil sejumlah baris teratas atau terbawah berdasarkan nilai satu kolom, tanpa perlu sort dulu baru dipotong. Satu baris kode, langsung dapat Top N.

Kerjaan kayak gini muncul terus. 5 produk paling laris, 10 pelanggan paling boros, 3 cabang paling sepi.

Kamu bisa aja pakai sort_values lalu head. Tapi ada cara yang lebih pendek, dan buat data gede juga lebih cepat.

Apa itu nlargest dan nsmallest di Pandas?

nlargest(n, kolom) ngembaliin n baris dengan nilai terbesar di kolom itu, udah urut dari paling gede. nsmallest(n, kolom) kebalikannya, ngambil n baris dengan nilai terkecil. Keduanya jalan di DataFrame maupun Series, dan hasilnya langsung terurut tanpa langkah tambahan.

Bedanya sama sekadar cari nilai maksimum: max cuma ngasih satu angka. nlargest ngasih barisnya utuh, lengkap sama kolom lain kayak nama produk dan tanggal.

Gimana sintaks nlargest dan nsmallest?

df.nlargest(n, columns, keep='first')
df.nsmallest(n, columns, keep='first')
  • n: berapa baris yang mau diambil.
  • columns: nama kolom acuan buat ngurutin. Bisa satu nama, bisa list.
  • keep: cara nangani nilai seri. Pilihannya 'first', 'last', atau 'all'.

Contoh ambil 5 produk dengan omzet tertinggi:

top5 = df.nlargest(5, 'omzet')
print(top5)

Buat Series, argumen kolom nggak perlu:

df['omzet'].nlargest(5)

Apa bedanya nlargest sama sort_values().head()?

Hasilnya sama, tapi cara kerjanya beda. sort_values ngurutin seluruh baris dulu, baru head motong yang atas. nlargest cuma jaga n nilai teratas selama proses, jadi nggak ngurutin semua data.

Aspeknlargest(5, 'omzet')sort_values('omzet', ascending=False).head(5)
Panjang kodePendekLebih panjang
Ngurutin semua barisNggakIya
Kontrol nilai seriLewat keepManual
Data besar + n kecilLebih cepatLebih lambat

Buat data kecil, bedanya nggak kerasa. Buat DataFrame jutaan baris yang cuma butuh Top 10, nlargest ngirit kerjaan karena nggak ngurutin sisa baris yang nggak kepakai. Kalau kamu sering pakai sort_values, cek juga cara urut DataFrame dengan sort_values biar tau kapan masing-masing lebih pas.

Gimana ambil Top N berdasarkan beberapa kolom?

Kasih list ke argumen columns. Pandas ngurutin pakai kolom pertama dulu, kalau seri baru pakai kolom kedua sebagai penentu.

df.nlargest(5, ['omzet', 'qty'])

Di sini, kalau ada dua baris dengan omzet sama, yang qty-nya lebih besar menang. Urutan nama kolom di list nentuin prioritas.

Gimana ambil Top N per grup?

Gabungin groupby sama apply. Misalnya mau 2 produk terlaris di tiap kategori:

top2_per_kategori = (
    df.groupby('kategori', group_keys=False)
      .apply(lambda g: g.nlargest(2, 'omzet'))
)

group_keys=False bikin hasilnya rapi tanpa index kategori yang dobel. Buat dasar groupby, ada panduan pandas groupby yang ngebahas agregasi ala pivot.

Nampilin nomor peringkat bareng Top N

Laporan sering butuh kolom peringkat, bukan cuma urutan baris. Setelah nlargest, tambahin kolom rank pakai index biasa:

top10 = omzet_produk.nlargest(10, 'omzet').reset_index(drop=True)
top10['peringkat'] = top10.index + 1

reset_index(drop=True) ngerapiin nomor baris jadi 0 sampai 9, lalu ditambah 1 biar mulai dari peringkat 1. Hasilnya siap ditempel ke laporan atau diekspor ke Excel.

Contoh kasus: produk terlaris Toko Berkah

Toko Berkah, UMKM kelontong di dataset latihan ngulikdata, punya 12.480 baris transaksi selama 2025. Tiap baris berisi nama produk, qty, dan omzet per struk.

Buat nemu 5 produk penyumbang omzet terbesar:

omzet_produk = df.groupby('produk')['omzet'].sum().reset_index()
top5 = omzet_produk.nlargest(5, 'omzet')

Hasilnya, minyak goreng 2 liter jadi juara dengan total Rp48.700.000, disusul beras 5 kg di Rp41.200.000. Lima produk teratas ini nyumbang 34% dari total omzet setahun, padahal jenisnya cuma 5 dari 214 produk yang dijual.

Angka 34% ini yang bikin keputusan stok jadi jelas. Lima barang ini nggak boleh kosong di rak, soalnya telat restok sehari aja langsung kepotong dari sepertiga pemasukan toko. Buat lihat produk paling sepi, tinggal ganti ke nsmallest.

top5_sepi = omzet_produk.nsmallest(5, 'omzet')

Kesalahan umum saat pakai nlargest dan nsmallest

1. Lupa kolomnya harus numerik

nlargest cuma jalan di kolom angka. Kalau kolomnya masih teks (misalnya '48.700.000' dengan titik ribuan), hasilnya ngaco atau malah error. Ubah dulu tipenya pakai astype atau pd.to_numeric.

2. Nyangka hasilnya acak saat ada nilai seri

Kalau beberapa baris punya nilai sama persis, keep yang nentuin mana yang diambil. Default 'first' ambil yang muncul duluan. Kalau mau semua baris seri ikut walau jumlahnya lewat dari n, pakai keep='all'.

3. Pakai sort lalu head buat data raksasa

Buat DataFrame gede yang cuma butuh sedikit baris teratas, sort_values ngurutin semuanya sia-sia. nlargest lebih hemat. Kebalikannya, kalau kamu butuh seluruh data terurut, ya sort_values yang bener.

FAQ

Apa beda nlargest dan max di Pandas?

max cuma ngembaliin satu nilai tertinggi dari sebuah kolom, tanpa info baris lain. nlargest ngembaliin barisnya utuh, jumlahnya sesuai n yang kamu minta, dan udah terurut dari paling besar. Kalau kamu butuh tau produk apa yang paling laris beserta detailnya, pakai nlargest. Kalau cuma butuh angka tertingginya, max cukup.

Apakah nlargest lebih cepat dari sort_values?

Buat data besar dengan n kecil, iya. nlargest nggak ngurutin seluruh baris, cukup jaga n nilai teratas selama proses. sort_values ngurutin semua baris dulu baru dipotong, jadi kerjaannya lebih berat. Buat data kecil, bedanya nggak kerasa dan keduanya sama aja cepatnya.

Gimana cara ambil Top N per grup pakai nlargest?

Gabungin groupby dengan apply, lalu panggil nlargest di dalam fungsinya. Contohnya df.groupby('kategori', group_keys=False).apply(lambda g: g.nlargest(2, 'omzet')). Ini ngambil 2 baris teratas di tiap kategori. Set group_keys=False biar hasilnya nggak punya index grup yang dobel.

Apa fungsi argumen keep di nlargest?

keep ngatur cara nangani baris yang nilainya seri di batas n. 'first' ambil yang muncul duluan, 'last' ambil yang terakhir, dan 'all' ikutin semua baris seri walau totalnya jadi lebih dari n. Default-nya 'first'. Pakai 'all' kalau kamu nggak mau ada baris seri yang kebuang diam-diam.

Penutup

  • nlargest dan nsmallest ngambil Top N atau Bottom N dari satu kolom, langsung terurut, tanpa sort manual.
  • Buat data besar dengan n kecil, keduanya lebih cepat dari sort_values lalu head.
  • Kombinasikan sama groupby buat Top N per kategori, dan atur keep buat ngendaliin nilai seri.

Coba sekarang: ambil satu dataset penjualan yang kamu punya, cari 5 baris omzet tertinggi pakai nlargest. Bandingkan sama nsmallest buat lihat yang paling sepi.

Fungsi ini setara LARGE dan SMALL di spreadsheet. Cek referensi fungsi LARGE Excel dan fungsi SMALL Excel buat lihat versi rumusnya. Detail parameter lengkap ada di dokumentasi resmi pandas nlargest.

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

Seaborn Pairplot: Cara Eksplorasi Data Cepat dengan Python (2026)
Tips & Trik
18 November 2026•9 menit baca

Seaborn Pairplot: Cara Eksplorasi Data Cepat dengan Python (2026)

Satu baris kode buat lihat hubungan semua kolom numerik sekaligus. Ini cara pakai seaborn pairplot buat eksplorasi data, lengkap dengan contoh dan cara bacanya.

BimaBima
Seaborn Heatmap: Visualisasi Matriks Korelasi (2026)
Tips & Trik
15 November 2026•10 menit baca

Seaborn Heatmap: Visualisasi Matriks Korelasi (2026)

Seaborn heatmap ngubah matriks korelasi jadi grid warna, jadi kamu bisa langsung lihat variabel mana yang saling terkait. Ini cara bikinnya dari df.corr() sampai atur warna dan angka.

BimaBima
Seaborn untuk Pemula: Visualisasi Statistik di Python (2026)
Tips & Trik
12 November 2026•11 menit baca

Seaborn untuk Pemula: Visualisasi Statistik di Python (2026)

Seaborn bikin chart statistik yang rapi cuma dengan satu baris kode. Ini dasar-dasarnya buat pemula, dari histogram sampai heatmap.

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