Pandas read_excel: Baca File Excel di Python
TL;DR
pandas.read_excel() adalah fungsi buat baca file Excel (.xlsx atau .xls) jadi DataFrame di Python. Bentuk dasarnya df = pd.read_excel('data.xlsx'). Kamu bisa pilih sheet lewat sheet_name, lompatin baris judul berantakan pakai skiprows, dan ambil kolom tertentu pakai usecols.
pandas.read_excel() adalah fungsi buat baca file Excel (.xlsx atau .xls) jadi DataFrame di Python. Bentuk dasarnya df = pd.read_excel('data.xlsx').
Di banyak kantor Indonesia, data masih hidup di file Excel. Laporan penjualan, rekap stok, hasil survei, semuanya .xlsx dengan banyak sheet dan baris judul di atas. read_excel narik semua itu ke Python biar bisa diolah lebih serius. Di bawah ini ada cara pakainya, parameter penting, sampai solusi error openpyxl.
Apa itu pandas read_excel?
read_excel adalah fungsi pandas yang baca file Excel lalu ngubahnya jadi DataFrame, tabel dengan baris dan kolom yang siap diolah. Beda sama file CSV, file Excel bisa punya banyak sheet, format sel, dan tata letak yang nggak selalu rapi. read_excel nangani itu semua lewat parameter yang fleksibel.
Gimana cara pakai read_excel paling dasar?
Import pandas, lalu panggil read_excel dengan nama file:
import pandas as pd
df = pd.read_excel('laporan.xlsx')
print(df.head())
Secara default, pandas baca sheet pertama. Kalau muncul error soal engine, install dulu openpyxl lewat pip install openpyxl.
Parameter read_excel yang paling sering dipakai
| Parameter | Gunanya | Contoh |
|---|---|---|
| sheet_name | Pilih sheet mana | sheet_name='Penjualan' |
| skiprows | Lompatin baris atas | skiprows=3 |
| header | Baris nama kolom | header=2 |
| usecols | Pilih kolom | usecols='A:D' |
| dtype | Paksa tipe data | dtype={'kode':str} |
Sama kayak read_csv, dtype={'kode':str} penting buat jaga kode produk atau nomor HP yang diawali nol biar nggak ilang.
Gimana cara baca sheet tertentu?
Pakai sheet_name dengan nama atau nomor indeks:
# berdasarkan nama
df = pd.read_excel('laporan.xlsx', sheet_name='Penjualan')
# berdasarkan indeks (mulai 0)
df = pd.read_excel('laporan.xlsx', sheet_name=1)
# semua sheet sekaligus (jadi dictionary)
semua = pd.read_excel('laporan.xlsx', sheet_name=None)
Kalau pakai sheet_name=None, kamu dapet dictionary. Ambil satu sheet pakai semua['Penjualan'].
Contoh kasus: baca laporan penjualan toko_berkah
Anggap file toko_berkah.xlsx punya logo dan judul di 3 baris pertama, baru tabel asli mulai di baris ke-4. Ada juga sheet terpisah buat tiap cabang.
import pandas as pd
df = pd.read_excel(
'toko_berkah.xlsx',
sheet_name='Cabang Bandung',
skiprows=3,
dtype={'kode_produk': str}
)
print(df.shape)
Dengan skiprows=3, tiga baris hiasan di atas dilompatin, jadi pandas langsung ngambil header dari baris tabel yang bener. Misal sheet cabang ini punya 1.800 baris transaksi, df.shape ngasih (1800, 7). Dari sini kamu bisa gabungin data semua cabang atau hitung total per produk.
Kalau sumber datamu berupa CSV, bukan Excel, cara bacanya sedikit beda. Cek panduannya di pandas read_csv.
Gimana cara gabung semua sheet jadi satu DataFrame?
Kalau tiap cabang punya sheet sendiri dengan kolom yang sama, gabungin pakai concat:
semua = pd.read_excel('toko_berkah.xlsx', sheet_name=None, skiprows=3)
df_gabung = pd.concat(semua.values(), ignore_index=True)
semua.values() ngasih semua DataFrame per sheet, lalu concat nyatuin jadi satu tabel panjang.
Kesalahan umum saat pakai read_excel
- Error butuh openpyxl - install dulu pakai
pip install openpyxl. - Nama kolom aneh (Unnamed: 0) - ada baris judul di atas tabel. Pakai
skiprowsatauheader. - Nol di depan kode ilang - paksa jadi teks pakai
dtype=str. - Baca lambat buat file besar - Excel emang lebih berat dari CSV. Kalau data gede dan sering dibaca, ekspor ke CSV dulu.
FAQ
Pertanyaan yang sering muncul soal read_excel ada di bagian bawah ini.
Apa bedanya read_excel sama read_csv di pandas?
read_excel baca file Excel (.xlsx atau .xls) yang bisa punya banyak sheet, format sel, dan rumus. read_csv baca file teks polos yang cuma berisi data dipisah koma. read_excel lebih lambat dan butuh library tambahan kayak openpyxl. Kalau datamu ada di CSV, read_csv lebih cepat. Kalau di Excel dengan banyak sheet, pakai read_excel.
Gimana cara baca sheet tertentu di file Excel?
Pakai parameter sheet_name. Kamu bisa kasih nama sheet, misalnya sheet_name='Penjualan', atau nomor indeksnya mulai dari 0, misalnya sheet_name=1 buat sheet kedua. Kalau mau baca semua sheet sekaligus, pakai sheet_name=None, hasilnya berupa dictionary berisi DataFrame per sheet. Ini kepake buat file laporan yang datanya tersebar di banyak tab.
Kenapa read_excel error butuh openpyxl?
pandas nggak baca Excel sendiri, dia butuh engine tambahan. Buat file .xlsx, install openpyxl pakai pip install openpyxl. Buat file .xls lama, pakai xlrd. Setelah keinstall, read_excel jalan normal. Kalau kamu pakai versi pandas baru, openpyxl biasanya jadi default buat .xlsx, jadi tinggal pastiin dia udah keinstall di environment kamu.
Gimana cara lompatin baris judul atau logo di atas tabel?
File Excel dari kantor sering ada logo atau judul di beberapa baris atas sebelum tabel asli. Pakai skiprows buat lompatin baris itu, misalnya skiprows=3 buat lewatin 3 baris pertama. Kalau baris header ada di posisi tertentu, kamu juga bisa atur header, misalnya header=2 biar pandas ngambil nama kolom dari baris ketiga.
Penutup
read_excel narik data dari file Excel yang berantakan sekalipun jadi DataFrame yang rapi. Inget parameter kuncinya: sheet_name buat pilih tab, skiprows buat buang baris judul, dan dtype buat jaga kode angka.
Mau lanjut olah DataFrame setelah datanya kebaca? Kulik latihan Python data di NgulikData, atau baca dokumentasi resmi di pandas.pydata.org. Buat kelompokkin data hasil bacaan per rentang waktu, lihat juga SQL date bucketing.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel terkait
NumPy random: Membuat Data Acak untuk Simulasi
NumPy random bikin angka acak buat simulasi dan data dummy. Ini cara pakai default_rng, atur seed, dan generate sampel yang bisa diulang.
NumPy where: Operasi Bersyarat pada Array
np.where milih nilai berdasarkan kondisi ke seluruh array sekaligus, tanpa loop. Ini cara pakainya buat kolom bersyarat dan cari posisi elemen.
NumPy Broadcasting: Operasi Array Beda Ukuran (2026)
Broadcasting bikin NumPy bisa ngoperasiin array beda ukuran tanpa loop. Ini aturan bentuknya dan contoh pakai data nyata.