Tidak semua data datang dalam bentuk yang sudah berlabel. Hasil parse file teks biasanya berupa list of lists, sedangkan hasil perhitungan numerik biasanya berupa array NumPy dua dimensi; keduanya tidak membawa nama kolom sedikit pun. pd.DataFrame() tetap menerima sumber-sumber tanpa label ini, tetapi konsekuensinya jelas: kita yang harus menyediakan nama kolom lewat parameter columns. Chapter ini membahas kedua sumber tersebut, termasuk perilaku tipe data yang mengikutinya.
List of Lists Tanpa Nama Kolom #
Pada list of lists, setiap list bagian dalam adalah satu baris, dan urutan posisi menentukan kolomnya. Tanpa parameter columns, pandas hanya bisa menomori kolom secara polos: 0, 1, 2, dan seterusnya. Tabel tetap sah, tetapi namanya tidak bermakna sehingga sulit diolah.
import numpy as np
import pandas as pd
data_kasir = [
["Budi", "Bandung", 12],
["Siti", "Jakarta", 8],
["Dewi", "Surabaya", 15],
]
tanpa_label = pd.DataFrame(data_kasir)
print(tanpa_label)
print()
penjualan = pd.DataFrame(data_kasir, columns=["kasir", "kota", "qty"])
print(penjualan)
print()
matriks = np.array([
[32000, 45],
[18000, 120],
[28000, 30],
])
harga_stok = pd.DataFrame(matriks, columns=["harga", "stok"])
print(harga_stok)
print(harga_stok.dtypes)Output yang Dihasilkan:
0 1 2
0 Budi Bandung 12
1 Siti Jakarta 8
2 Dewi Surabaya 15
kasir kota qty
0 Budi Bandung 12
1 Siti Jakarta 8
2 Dewi Surabaya 15
harga stok
0 32000 45
1 18000 120
2 28000 30
harga int64
stok int64
dtype: objectMari kita telaah kode di atas:
- Baris 4-8 (data kasir Toko Buah Segar): tiga list bagian dalam menjadi tiga baris; posisi pertama adalah nama kasir, posisi kedua kota, posisi ketiga jumlah transaksi.
- Baris 9-10 (
tanpa_label = pd.DataFrame(data_kasir)): output pertama menunjukkan header0, 1, 2. Header ini hanyalah nomor posisi, bukan makna data. - Baris 13-14 (
columns=["kasir", "kota", "qty"]): parametercolumnsmemberi label bermakna dan sekaligus menetapkan urutannya. Output kedua kini terbaca layaknya tabel sungguhan. - Baris 17-24 (array NumPy):
np.arraydua dimensi diperlakukan persis seperti list of lists, satu baris per baris array, dengan nama kolom yang kembali kita sediakan lewatcolumns.
DataFrame dari Array NumPy #
Array NumPy adalah wadah data numerik yang homogen: seluruh elemennya bertipe sama, sehingga operasi aritmetika berjalan efisien. Ketika data analisis sudah berupa array, misalnya hasil dari perhitungan atau konversi dari sumber lain, kita tidak perlu mengubahnya ke Python terlebih dahulu; pd.DataFrame() langsung menerima array dua dimensi. DataFrame hasilnya memakai memori array itu secara efisien, dan nilai-nilainya siap dianalisis lewat kolom. Pengetahuan dasar NumPy yang relevan dirangkum di dokumentasi NumPy
bila ingin membaca lebih jauh.
Pada output ketiga di atas, tabel harga_stok memuat angka harga dan stok Toko Buah Segar yang berasal dari np.array. Perhatikan baris terakhir output: harga_stok.dtypes melaporkan int64 untuk kedua kolom, karena seluruh elemen array adalah bilangan bulat.
Tipe Data Hasil Konversi #
Tipe kolom pada DataFrame dari array mengikuti tipe array sumbernya. Array int64 menghasilkan kolom int64; array berisi satu saja float akan menghasilkan seluruh kolom float64, karena array NumPy menuntut homogenitas. Perilaku ini berbeda dengan pembuatan dari dictionary, di mana setiap kolom ditentukan isinya sendiri-sendiri dan kolom teks menjadi str. Aturan praktisnya: tipe mengikuti sumber, dan label mengikuti columns.
Rangkaian chapter pembuatan hampir lengkap; parameter columns yang kita pakai di sini hanyalah salah satu dari banyak parameter yang dirinci di halaman pandas.DataFrame
. Kita sudah bisa membangun tabel dari berbagai sumber, tetapi tabel itu sendiri masih berupa kotak hitam: siapa label barisnya, apa nama kolomnya, dan bagaimana keduanya bekerja. Chapter berikutnya membongkar dua sumbu berlabel tersebut, index dan columns, yang menjadi kerangka seluruh DataFrame.