Dari Excel ke Pandas: read_excel
Baca file Excel langsung jadi DataFrame: pilih sheet tertentu, tangani banyak sheet, dan atasi format berantakan.
Jembatan dari Dunia Spreadsheet ke Dunia Data
Sebagian besar data bisnis lahir di Excel. Sebagai analyst, kamu tidak bisa menghindari file .xlsx dari tim sales, finance, atau operasional. Kabar baiknya, pandas bisa membaca Excel langsung, jadi kamu tidak perlu copy-paste manual yang rawan salah.
Kenapa penting untuk data analyst? Karena Excel adalah bahasa ibu dunia bisnis. Mampu membaca, menggabungkan, dan membersihkan data Excel secara programatik adalah skill yang langsung terlihat gunanya di kerjaan nyata, dan menghemat jam kerja yang tadinya habis untuk kerja manual.
read_excel Paling Dasar
Satu baris, dan file Excel berubah jadi DataFrame.
import pandas as pd
df = pd.read_excel("penjualan.xlsx")
print(df.head())
print(df.shape) # (baris, kolom)Catatan teknis:
read_excelbutuh libraryopenpyxlterinstall untuk file.xlsx. Kalau belum ada, install dulu denganpip install openpyxl, kalau tidak pandas akan protes dengan ImportError.
Memilih Sheet Tertentu
File Excel nyata sering punya banyak sheet. Parameter sheet_name memilih yang mana yang dibaca.
# Baca sheet berdasarkan nama
df_jan = pd.read_excel("laporan.xlsx", sheet_name="Januari")
# Atau berdasarkan urutan (0 = sheet pertama)
df_pertama = pd.read_excel("laporan.xlsx", sheet_name=0)
# Baca SEMUA sheet sekaligus, hasilnya dict {nama_sheet: DataFrame}
semua = pd.read_excel("laporan.xlsx", sheet_name=None)
print(semua.keys()) # dict_keys(['Januari', 'Februari', 'Maret'])Pola realistis, menggabungkan 12 sheet bulanan jadi satu DataFrame tahunan:
semua_sheet = pd.read_excel("laporan_2024.xlsx", sheet_name=None)
gabungan = []
for nama_sheet, df_sheet in semua_sheet.items():
df_sheet["bulan"] = nama_sheet # tandai asal sheet
gabungan.append(df_sheet)
df_tahunan = pd.concat(gabungan, ignore_index=True)
print(df_tahunan.shape)
print(df_tahunan["bulan"].unique())Mengatasi Excel yang Berantakan
File Excel dari manusia jarang rapi. Header tidak di baris pertama, ada baris judul di atasnya, atau kolom tidak penting ikut terbaca.
# Header ada di baris ke-3 (index 2), 2 baris di atasnya adalah judul
df = pd.read_excel("laporan.xlsx", header=2)
# Lewati 3 baris pertama sepenuhnya
df = pd.read_excel("laporan.xlsx", skiprows=3)
# Hanya baca kolom A sampai D
df = pd.read_excel("laporan.xlsx", usecols="A:D")
# Hanya baca kolom tertentu berdasarkan nama
df = pd.read_excel("laporan.xlsx", usecols=["Tanggal", "Produk", "Total"])Contoh gabungan untuk file laporan yang tipikal:
df = pd.read_excel(
"laporan_toko.xlsx",
sheet_name="Data",
skiprows=2, # lewati judul dan baris kosong
usecols=["Tanggal", "Produk", "Qty", "Total"],
)
df = df.dropna(how="all") # buang baris yang sepenuhnya kosong
print(df.head())Jebakan Umum
SALAH, mengira angka di Excel selalu terbaca sebagai angka:
# Jangan: kolom "Kode" berisi 001, 002 bisa terbaca sebagai 1, 2 (nol hilang!)
df = pd.read_excel("produk.xlsx")
print(df["Kode"].tolist()) # [1, 2, 3] <- nol depannya hilangBENAR, paksa tipe kolom dengan dtype:
# Lakukan: kode produk dibaca sebagai teks supaya nol depan aman
df = pd.read_excel("produk.xlsx", dtype={"Kode": str})
print(df["Kode"].tolist()) # ['001', '002', '003']SALAH, membaca file besar tanpa sadar memakan RAM:
# Jangan: file 500 ribu baris langsung dibaca mentah-mentah
df = pd.read_excel("data_gede.xlsx") # bisa lemot atau kehabisan memoriBENAR, batasi kolom dan baris yang benar-benar dibutuhkan:
# Lakukan: baca seperlunya saja
df = pd.read_excel(
"data_gede.xlsx",
usecols=["Tanggal", "Total"],
nrows=10000, # baca 10 ribu baris pertama untuk eksplorasi
)Tantangan
Gabungkan sheet bulanan jadi laporan tahunan
Tulis skrip yang membaca SEMUA sheet dari "omzet_2024.xlsx" (sheet_name=None), menambahkan kolom "bulan" berisi nama sheet ke tiap DataFrame, lalu menggabungkannya dengan pd.concat menjadi satu DataFrame dan mencetak total barisnya.
Kuis Bab
Uji pemahamanmu: Bab 4: OOP dan Peralatan Kerja
Jawab 5 soal berikut, lalu tekan "Periksa Jawaban".
1.Apa peran method __init__ dalam sebuah class?
2.Kenapa method di dalam class selalu punya parameter self?
3.Apa manfaat utama memakai virtual environment?
4.Perintah apa yang dipakai untuk memasang library pandas?
5.Fungsi pandas apa yang membaca file Excel menjadi DataFrame?