Series

Pembuatan Series, peran index, atribut values dan dtype, serta perbedaannya dengan array NumPy.

Daftar isi

Series adalah struktur data satu dimensi pandas yang menyimpan sekumpulan nilai beserta labelnya. Topik ini membahas pembuatan Series dari list, dictionary, dan array NumPy, peran index sebagai label eksplisit, atribut values, index, dtype, dan name, serta perbedaan Series dengan array NumPy. Setelah membacanya, Series dapat dibuat dari berbagai sumber data, atributnya dapat dibaca, dan perilaku labelnya pada operasi aritmetika dapat dijelaskan.

Membuat Series dari list, dictionary, dan array#

Konstruktor pd.Series() menerima list, dictionary, atau array NumPy sebagai sumber data, dan pilihan sumber menentukan index yang terbentuk. Kode berikut membangun Series yang menyimpan pengukuran suhu tiga ruangan dengan ketiga cara tersebut.

python Contoh: tiga cara membuat Series
import pandas as pd
import numpy as np

s1 = pd.Series([24.1, 23.8, 25.0])
print(s1)

s2 = pd.Series({"Lab A": 24.1, "Lab B": 23.8, "Arsip": 21.5})
print(s2)

s3 = pd.Series(
    np.array([24.1, 23.8, 25.0]),
    index=["Lab A", "Lab B", "Arsip"],
    name="suhu_c",
)
print(s3)
text Keluaran
0    24.1
1    23.8
2    25.0
dtype: float64
Lab A    24.1
Lab B    23.8
Arsip    21.5
dtype: float64
Lab A    24.1
Lab B    23.8
Arsip    25.0
Name: suhu_c, dtype: float64

Series dari list memperoleh index default berupa bilangan berurutan 0, 1, dan 2, seperti terlihat pada kolom kiri keluaran s1. Index adalah label yang menempel pada setiap nilai, dan istilah ini dipertahankan dalam bahasa Inggris oleh dokumentasi pandas. Series dari dictionary menggunakan kunci dictionary sebagai labelnya, sehingga s2 berlabel Lab A, Lab B, dan Arsip tanpa argumen tambahan. Series dari array NumPy menerima argumen index eksplisit, sedangkan argumen name memberi nama Series yang dipakai sebagai nama kolom bila Series dijadikan kolom DataFrame.

Baris terakhir setiap keluaran menyatakan dtype, yaitu tipe data elemen yang disimpan. Ketiga Series di atas memuat bilangan pecahan sehingga dtypenya float64. Tipe data ini ditentukan otomatis dari isinya dan dapat dibaca kembali lewat atribut yang dibahas pada bagian berikutnya.

Index sebagai label yang menyertai operasi#

Index membuat akses nilai dapat dilakukan lewat label dengan properti loc maupun lewat posisi dengan properti iloc, dan label itu ikut menyertai hasil setiap operasi. Dua properti ini dipisahkan secara sengaja agar maksud setiap baris akses terbaca jelas. Potongan berikut menggunakan kembali data suhu tiga ruangan dengan label yang sama.

python Contoh: akses lewat label dan posisi
import pandas as pd

s = pd.Series([24.1, 23.8, 25.0], index=["Lab A", "Lab B", "Arsip"])
print(s.loc["Lab A"])
print(s.iloc[0])
print(s + 0.5)
text Keluaran
24.1
24.1
Lab A    24.6
Lab B    24.3
Arsip    25.5
dtype: float64

s.loc["Lab A"] mengambil nilai berlabel Lab A, sedangkan s.iloc[0] mengambil nilai pada posisi pertama, dan keduanya menghasilkan 24.1 pada tabel di atas. Penjumlahan dengan 0.5 menghasilkan Series baru yang labelnya sama persis dengan Series asalnya, sehingga setiap nilai tetap tahu milik ruangan mana. Label pada hasil bukan kebetulan, melainkan konsekuensi bahwa label dibawa sepanjang operasi satu-ke-satu.

Perilaku label menjadi lebih terlihat ketika dua Series dijumlahkan. Pandas menjajarkan nilai berdasarkan labelnya, perilaku yang disebut alignment atau penjajaran label, dan label yang tidak bertemu pada kedua sisi menghasilkan NaN (Not a Number), penanda nilai data yang kosong.

python Contoh: penjajaran otomatis berdasarkan label
import pandas as pd

a = pd.Series({"Lab A": 24.1, "Lab B": 23.8})
b = pd.Series({"Lab B": 58.7, "Lab A": 60.2, "Arsip": 62.0})
print(a + b)
text Keluaran
Arsip     NaN
Lab A    84.3
Lab B    82.5
dtype: float64

Label Arsip hanya ada pada b, sehingga hasil penjumlahannya NaN, sedangkan Lab A dan Lab B bertemu di kedua sisi dan menghasilkan 84.3 serta 82.5. Keluaran juga disusun menurut label yang terurut, bukan urutan penyisipan a. Penjajaran semacam ini menjaga penggabungan data dari dua sumber yang berlabel sama tetap tepat pasangannya.

Atribut values, index, dtype, dan name#

Atribut values, index, dtype, dan name membuka isi serta metadata Series tanpa perlu mencetak seluruhnya. Atribut diakses lewat tanda titik setelah nama Series dan sering dipakai dalam kode yang memeriksa struktur data secara programatik. Contoh berikut membaca keempat atribut pada Series yang sama.

python Contoh: membaca atribut Series
import pandas as pd
import numpy as np

s = pd.Series(
    np.array([24.1, 23.8, 25.0]),
    index=["Lab A", "Lab B", "Arsip"],
    name="suhu_c",
)
print(s.values)
print(type(s.values).__name__)
print(s.index)
print(s.dtype)
print(s.name)
text Keluaran
[24.1 23.8 25. ]
ndarray
Index(['Lab A', 'Lab B', 'Arsip'], dtype='str')
float64
suhu_c

Atribut values mengembalikan isi Series sebagai array NumPy satu dimensi, dan fungsi type mengonfirmasi bahwa objeknya adalah ndarray. Atribut index mengembalikan objek Index yang memuat label, pada contoh ini teks Lab A, Lab B, dan Arsip. Atribut dtype menyatakan float64, sedangkan name mengembalikan suhu_c yang diberikan saat pembuatan. Kombinasi keempatnya memberi gambaran lengkap tentang apa yang disimpan dan bagaimana penyimpanannya.

Perbedaan dengan array NumPy#

Perbedaan utama Series dengan array NumPy terletak pada label yang menyertai operasi dan pada perhitungan statistik yang mengabaikan NaN. Array NumPy bekerja murni dengan posisi, sedangkan Series membawa label pada setiap nilai. Perbedaan kedua ini paling mudah diamati pada data pengukuran yang tidak lengkap.

python Contoh: statistik pada data yang memuat NaN
import numpy as np
import pandas as pd

s = pd.Series([24.1, np.nan, 25.0])
print(np.mean(s.values))
print(s.mean())
print(s.count())
text Keluaran
nan
24.55
2

Pemanggilan np.mean atas ndarray hasil s.values menghasilkan nan karena NaN ikut masuk ke perhitungan. Metode mean() pada Series mengabaikan NaN dan menghitung rata-rata dari dua nilai yang tersisa, yaitu 24.55, sedangkan count() menghitung jumlah nilai yang terisi, yaitu 2. Perilaku ini menjadikan Series pilihan yang tepat untuk data pengukuran yang tidak lengkap, karena statistik deskriptifnya tetap bermakna tanpa pembersihan manual. Di samping perbedaan perilaku tersebut, keduanya berbagi fondasi yang sama, karena values Series memang array NumPy dan operasi per elemennya mewarisi mesin perhitungan yang sama.

Ringkasan#

  • pd.Series() menerima list dengan index default berurutan, dictionary dengan kunci sebagai label, dan array NumPy dengan argumen index eksplisit, sedangkan name memberi nama Series.
  • loc mengakses lewat label dan iloc lewat posisi, sedangkan operasi antar Series menjajarkan nilai berdasarkan label sehingga label yang tidak bertemu menghasilkan NaN.
  • Atribut values mengembalikan ndarray tanpa label, sedangkan index, dtype, dan name memaparkan label, tipe data, dan nama Series.
  • Metode statistik Series seperti mean() dan count() mengabaikan NaN secara default, berbeda dari fungsi NumPy pada ndarray yang memuat NaN.

Referensi#