Pendahuluan
Bayangkan Anda sedang mengerjakan tugas kuliah ekonomi tentang ketimpangan pendapatan. Data yang diberikan dosen berbentuk berkas CSV dengan ribuan baris. Setiap baris berisi satu responden: usia, pendidikan, pendapatan, wilayah, dan jenis pekerjaan. Jika datanya hanya sepuluh orang, Anda mungkin masih bisa menghitung rata-rata dengan kalkulator. Namun ketika datanya ribuan, ketika ada nilai kosong, ketika nama wilayah tidak konsisten, dan ketika dosen meminta grafik serta penjelasan tertulis, pekerjaan manual mulai menjadi lambat dan rawan salah.
Sekarang bayangkan contoh lain. Anda mahasiswa hukum yang ingin membandingkan ratusan putusan pengadilan untuk mencari pola penggunaan istilah tertentu. Atau Anda mahasiswa ilmu politik yang ingin menganalisis pidato kandidat dari beberapa pemilu. Atau Anda mahasiswa filsafat yang ingin menelusuri kemunculan konsep “keadilan”, “kebebasan”, dan “otoritas” dalam kumpulan teks. Atau Anda bekerja di lembaga kebijakan publik dan harus membuat laporan bulanan dari beberapa spreadsheet yang formatnya selalu mirip.
Di titik inilah Python menjadi berguna.
Buku ini ditulis untuk membantu mahasiswa dan calon profesional sains sosial mempelajari Python dari dasar, bukan sebagai tujuan akhir, melainkan sebagai alat berpikir dan bekerja. Anda tidak perlu menjadi “orang komputer” terlebih dahulu. Yang diperlukan adalah kesediaan untuk memecah masalah menjadi bagian-bagian kecil, membaca data dengan teliti, menguji hasil, dan bertanya: apakah kesimpulan ini masuk akal secara substantif?
Mengapa mahasiswa sains sosial perlu belajar pemrograman?
Pemrograman adalah kegiatan menulis instruksi yang cukup jelas sehingga dapat dijalankan oleh komputer. Instruksi itu ditulis dalam bahasa pemrograman, yaitu bahasa formal yang memiliki aturan penulisan tertentu. Python adalah salah satu bahasa pemrograman tersebut.
Contoh sangat sederhana:
pendapatan = [2500000, 3000000, 4500000, 2800000]
rata_rata = sum(pendapatan) / len(pendapatan)
print(rata_rata)
Kode ini meminta komputer menyimpan empat nilai pendapatan, menjumlahkannya, membaginya dengan jumlah data, lalu menampilkan rata-ratanya. Di sini komputer tidak “memahami” pendapatan sebagaimana seorang ekonom atau sosiolog memahaminya. Komputer hanya mengikuti instruksi. Pemahaman sosial tetap berasal dari manusia: dari teori, konteks, definisi variabel, kualitas data, dan kehati-hatian interpretasi.
Karena itu, pemrograman untuk sains sosial bukan sekadar belajar sintaks. Sintaks adalah aturan penulisan kode, seperti kapan memakai tanda kurung, titik dua, tanda kutip, atau indentasi. Sintaks penting, tetapi bukan inti seluruh pembelajaran. Inti yang lebih besar adalah belajar menerjemahkan pertanyaan sosial menjadi prosedur analitis yang jelas.
Misalnya, pertanyaan:
Apakah tingkat pendidikan berkaitan dengan pendapatan?
perlu diterjemahkan menjadi langkah-langkah yang lebih teratur:
- Apa yang dimaksud dengan “tingkat pendidikan” dalam data?
- Apa satuan pendapatan?
- Apakah pendapatan bulanan atau tahunan?
- Apakah ada nilai hilang?
- Apakah semua responden bekerja?
- Apakah cukup melihat rata-rata, atau perlu membandingkan median?
- Apakah hubungan yang terlihat boleh ditafsirkan sebagai sebab-akibat?
Python membantu menjalankan langkah-langkah teknisnya. Namun pertanyaan konseptualnya tetap harus dijawab dengan pengetahuan sains sosial.
Dalam literatur, cara berpikir seperti ini sering dihubungkan dengan berpikir komputasional, yaitu kemampuan merumuskan masalah dan penyelesaiannya dalam bentuk yang dapat dijalankan secara sistematis oleh manusia maupun mesin. Jeannette Wing menjelaskan berpikir komputasional sebagai keterampilan konseptual yang relevan luas, bukan hanya untuk ilmuwan komputer (Wing, 2006). Dalam buku ini, kita akan memakai gagasan itu secara praktis: memecah masalah, mengenali pola, membuat abstraksi, dan menyusun langkah analisis.
Python sebagai alat kerja ilmiah
Python banyak dipakai dalam komputasi ilmiah karena bahasanya relatif mudah dibaca dan memiliki ekosistem pustaka yang kuat. Pustaka adalah kumpulan kode siap pakai yang dibuat untuk tugas tertentu. Misalnya, pandas membantu mengolah tabel data, matplotlib membantu membuat grafik, dan statsmodels membantu menjalankan model statistik.
Contoh penggunaan pustaka:
import pandas as pd
data = pd.read_csv("survei_mahasiswa.csv")
print(data.head())
Kode ini memakai pustaka pandas untuk membaca berkas CSV dan menampilkan beberapa baris pertama. CSV adalah singkatan dari comma-separated values, yaitu format berkas teks yang menyimpan data tabel. Setiap baris biasanya mewakili satu observasi, dan setiap kolom mewakili satu variabel.
Pustaka seperti NumPy, SciPy, pandas, Matplotlib, dan Jupyter menjadi bagian penting dari ekosistem komputasi ilmiah Python. SciPy, misalnya, didokumentasikan sebagai ekosistem inti untuk komputasi ilmiah di Python (Virtanen et al., 2020). Pandas dikembangkan untuk menyediakan struktur data dan alat analisis data yang efisien, terutama untuk data berbentuk tabel (McKinney, 2010). Jupyter Notebook memungkinkan penulisan kode, teks penjelasan, rumus, dan visualisasi dalam satu dokumen interaktif, sehingga cocok untuk pembelajaran dan analisis yang dapat dibaca ulang (Kluyver et al., 2016).
Namun kita perlu menjaga sikap yang seimbang. Python bukan tongkat ajaib. Python tidak otomatis membuat analisis menjadi benar. Jika datanya buruk, definisi variabelnya kabur, atau desain penelitiannya lemah, hasil kode yang rapi tetap bisa menyesatkan. Dalam sains sosial komputasional, data digital dan metode komputasi membuka banyak peluang, tetapi juga menuntut perhatian serius terhadap bias, konteks sosial, dan validitas kesimpulan (Lazer et al., 2009; Salganik, 2018).
Data: bukan sekadar angka
Dalam buku ini, data berarti representasi informasi yang dapat disimpan, diproses, dan dianalisis. Data bisa berupa angka, teks, tanggal, kategori, gambar, lokasi, atau gabungan semuanya. Dalam sains sosial, data sering merepresentasikan manusia, lembaga, tindakan, keputusan, pendapat, atau dokumen.
Contoh data angka:
pendapatan = 3500000
usia = 21
jumlah_anak = 2
Contoh data kategori:
jenis_kelamin = "perempuan"
status_pekerjaan = "kontrak"
wilayah = "Jawa Barat"
Contoh data teks:
isi_putusan = "Menimbang bahwa terdakwa..."
kutipan_filsafat = "Manusia dilahirkan bebas..."
pidato = "Kita akan memperkuat layanan publik..."
Contoh data tanggal:
tanggal_putusan = "2025-03-14"
tanggal_survei = "2025-08-01"
Hal pentingnya: data sosial hampir selalu merupakan hasil keputusan manusia. Seseorang memutuskan pertanyaan survei apa yang diajukan, kategori apa yang disediakan, dokumen mana yang dikumpulkan, dan bagaimana jawaban dikodekan. Karena itu, analisis data sosial tidak boleh diperlakukan seolah-olah data jatuh dari langit dalam bentuk netral. Buku ini akan terus mengingatkan bahwa kode harus dibaca bersama konteks.
Misalnya, variabel pendidikan dapat dikodekan sebagai:
1 = SD
2 = SMP
3 = SMA
4 = Sarjana
5 = Pascasarjana
Sekilas ini angka. Tetapi angka tersebut mewakili kategori berurutan, bukan jumlah dalam arti biasa. Selisih antara SD dan SMP tidak otomatis sama maknanya dengan selisih antara Sarjana dan Pascasarjana. Jika kita langsung menghitung rata-rata kode pendidikan tanpa memahami skala pengukurannya, interpretasinya bisa keliru. Persoalan seperti ini akan dibahas lebih jauh dalam bab tentang survei, skala pengukuran, dan statistik deskriptif.
Algoritme: langkah yang dapat diikuti
Istilah penting berikutnya adalah algoritme. Algoritme adalah urutan langkah yang jelas untuk menyelesaikan suatu tugas. Resep memasak adalah contoh algoritme sehari-hari: siapkan bahan, potong, panaskan, campur, tunggu, sajikan. Dalam pemrograman, algoritme harus cukup eksplisit agar komputer dapat menjalankannya.
Misalnya, kita ingin mengelompokkan pendapatan:
- kurang dari Rp3.000.000: “rendah”
- Rp3.000.000 sampai kurang dari Rp7.000.000: “menengah”
- Rp7.000.000 atau lebih: “tinggi”
Dalam bentuk Python:
pendapatan = 4500000
if pendapatan < 3000000:
kategori = "rendah"
elif pendapatan < 7000000:
kategori = "menengah"
else:
kategori = "tinggi"
print(kategori)
Kode ini memakai percabangan, yaitu struktur yang membuat program memilih tindakan berdasarkan kondisi. Kata if berarti “jika”. Kata elif berarti “jika kondisi sebelumnya tidak terpenuhi, tetapi kondisi ini terpenuhi”. Kata else berarti “jika semua kondisi sebelumnya tidak terpenuhi”.
Contoh ini sederhana, tetapi prinsipnya sama dengan banyak tugas profesional: menentukan kelayakan penerima bantuan, memeriksa dokumen yang memenuhi syarat, mengelompokkan jenis perkara, atau menandai respons survei yang perlu diperiksa ulang. Tantangannya bukan hanya menulis kode, tetapi juga memastikan bahwa aturan klasifikasi tersebut adil, relevan, dan dapat dipertanggungjawabkan.
Dari pekerjaan manual menuju analisis yang dapat direproduksi
Salah satu alasan utama memakai Python adalah reproduksibilitas. Dalam konteks analisis data, reproduksibilitas berarti orang lain—atau diri kita sendiri di masa depan—dapat mengikuti langkah analisis yang sama dan memperoleh hasil yang sama, selama data, kode, dan lingkungan kerjanya sama. Dalam riset kuantitatif dan komputasional, reproducible research menjadi prinsip penting karena membantu pemeriksaan, koreksi, dan pengembangan temuan ilmiah (Peng, 2011).
Bandingkan dua cara kerja berikut.
Cara pertama:
“Saya membuka Excel, menghapus beberapa baris, mengganti nama kategori, membuat pivot table, lalu menyalin grafik ke laporan.”
Cara ini bisa berhasil, tetapi sering sulit dilacak. Baris mana yang dihapus? Kategori apa yang diganti? Apakah ada kesalahan klik? Jika laporan harus diperbarui bulan depan, apakah semua langkah akan diingat?
Cara kedua:
import pandas as pd
data = pd.read_csv("data_mentah.csv")
data_bersih = (
data
.dropna(subset=["pendapatan"])
.assign(
wilayah=lambda df: df["wilayah"].str.strip().str.title()
)
)
ringkasan = data_bersih.groupby("wilayah")["pendapatan"].mean()
print(ringkasan)
Kode ini belum tentu sempurna, tetapi langkah-langkahnya terlihat. Kita dapat membaca bahwa data diambil dari data_mentah.csv, baris dengan pendapatan kosong dihapus, nama wilayah dirapikan, lalu rata-rata pendapatan dihitung per wilayah. Jika ada keputusan yang perlu dikritik, kita tahu bagian mana yang harus dibahas.
Inilah salah satu kebiasaan profesional yang ingin dibangun buku ini: bukan hanya menghasilkan angka, tetapi juga meninggalkan jejak analisis yang dapat diperiksa.
Python tidak menggantikan teori, metode, dan penilaian substantif
Ada bahaya yang perlu dikenali sejak awal: karena komputer dapat menghasilkan tabel dan grafik dengan cepat, kita bisa tergoda untuk menganggap semua hasil sebagai temuan yang penting. Padahal tidak semua pola bermakna. Tidak semua korelasi menunjukkan hubungan sebab-akibat. Tidak semua kata yang sering muncul dalam teks menunjukkan konsep yang paling penting. Tidak semua model yang tampak akurat layak dipakai untuk keputusan sosial.
Misalnya, jika data menunjukkan bahwa wilayah A memiliki pendapatan rata-rata lebih tinggi daripada wilayah B, kita belum boleh langsung menyimpulkan bahwa tinggal di wilayah A menyebabkan pendapatan lebih tinggi. Bisa saja komposisi pendidikannya berbeda, jenis pekerjaannya berbeda, biaya hidupnya berbeda, atau data yang terkumpul tidak mewakili seluruh penduduk.
Dalam bahasa penelitian, faktor yang mengganggu hubungan antara dua variabel sering disebut variabel perancu. Contoh sederhana: kita melihat hubungan antara pendidikan dan pendapatan. Namun usia, pengalaman kerja, wilayah, jenis industri, dan latar belakang keluarga dapat ikut memengaruhi pendapatan. Jika faktor-faktor itu tidak dipertimbangkan, interpretasi kita bisa terlalu cepat.
Karena itu, buku ini tidak mengajarkan Python sebagai alat untuk “membuktikan apa saja”. Buku ini mengajarkan Python sebagai alat untuk bertanya lebih baik, memeriksa data lebih teliti, dan menyampaikan argumen dengan lebih transparan.
Apa yang akan Anda pelajari dalam buku ini?
Buku ini bergerak bertahap. Pada bagian awal, Anda akan membangun fondasi: lingkungan kerja, cara berpikir komputasional, nilai, variabel, tipe data, struktur data, percabangan, perulangan, fungsi, dan debugging. Bagian ini penting karena semua analisis yang lebih lanjut bertumpu pada kemampuan membaca dan menulis kode dasar.
Setelah itu, kita masuk ke pekerjaan data: membaca berkas CSV, Excel, teks, dan JSON; memakai NumPy dan pandas; membersihkan data; menghitung statistik deskriptif; serta membuat visualisasi. Di sini Anda mulai melihat bagaimana Python membantu pekerjaan kuliah dan riset sehari-hari.
Kemudian buku beralih ke topik yang lebih dekat dengan sains sosial terapan: survei, skala pengukuran, inferensi statistik, regresi, pengantar kausalitas, evaluasi kebijakan, analisis teks, web scraping, otomatisasi, reproduksibilitas, etika data, dan penyusunan laporan.
Pada bagian akhir, Anda akan diarahkan mengerjakan proyek terpadu: mulai dari pertanyaan sosial, data, pembersihan, analisis, visualisasi, interpretasi, sampai laporan. Tujuannya agar Anda tidak hanya memahami potongan-potongan teknik, tetapi juga mampu menggabungkannya menjadi kerja analitis yang utuh.
Cara belajar yang disarankan
Belajar Python berbeda dari membaca teori secara pasif. Anda perlu mengetik kode, menjalankannya, melihat kesalahan, memperbaikinya, lalu mencoba variasi. Kesalahan bukan tanda gagal. Dalam pemrograman, kesalahan adalah bagian normal dari proses berpikir.
Misalnya, Anda mungkin menulis:
print("Halo)
Python akan memberi pesan galat karena tanda kutip penutup belum ditulis. Galat adalah kesalahan yang membuat program tidak berjalan sebagaimana mestinya. Pesan galat kadang terlihat menakutkan, tetapi sebenarnya ia adalah petunjuk. Seiring latihan, Anda akan belajar membaca pesan galat seperti membaca komentar dosen pada draf tulisan: mungkin tidak selalu menyenangkan, tetapi berguna untuk perbaikan.
Saat membaca buku ini, lakukan tiga hal.
Pertama, jalankan contoh kode. Jangan hanya melihatnya. Kode yang terlihat jelas di halaman bisa terasa berbeda ketika Anda mengetiknya sendiri. Anda akan belajar dari spasi, tanda kurung, nama variabel, dan pesan galat.
Kedua, ubah contoh. Jika contoh memakai data pendapatan, ganti dengan data usia. Jika contoh memakai kategori wilayah, ganti dengan kategori partai, jenis perkara, atau aliran pemikiran. Dengan mengubah contoh, Anda menguji apakah Anda benar-benar memahami struktur idenya.
Ketiga, tulis catatan interpretasi. Setelah mendapatkan hasil, tanyakan: “Apa arti hasil ini dalam konteks sosial?” Misalnya, jika sebuah grafik menunjukkan kenaikan jumlah kasus dari tahun ke tahun, tanyakan apakah kenaikan itu mencerminkan peningkatan kejadian, perubahan pelaporan, perubahan definisi, atau peningkatan kapasitas pencatatan.
Contoh kecil: dari pertanyaan ke kode
Mari tutup pendahuluan ini dengan contoh sederhana. Misalkan kita memiliki data kecil tentang partisipasi diskusi kelas:
mahasiswa = [
{"nama": "Ayu", "jurusan": "Ilmu Politik", "jumlah_komentar": 5},
{"nama": "Bima", "jurusan": "Hukum", "jumlah_komentar": 2},
{"nama": "Citra", "jurusan": "Ekonomi", "jumlah_komentar": 7},
{"nama": "Danu", "jurusan": "Filsafat", "jumlah_komentar": 1},
]
Data ini terdiri atas daftar beberapa mahasiswa. Setiap mahasiswa direpresentasikan dengan pasangan informasi: nama, jurusan, dan jumlah komentar. Kita ingin mencari siapa yang memberi komentar paling banyak.
teraktif = mahasiswa[0]
for orang in mahasiswa:
if orang["jumlah_komentar"] > teraktif["jumlah_komentar"]:
teraktif = orang
print(teraktif["nama"])
Kode ini memperkenalkan beberapa ide yang akan dipelajari perlahan dalam bab-bab berikutnya:
mahasiswaadalah list, yaitu struktur untuk menyimpan banyak item.- Setiap item di dalamnya adalah dictionary, yaitu struktur yang menyimpan pasangan kunci dan nilai.
formembuat program mengulang proses untuk setiap mahasiswa.ifmembuat program membandingkan jumlah komentar.teraktifmenyimpan mahasiswa dengan komentar terbanyak sejauh ini.
Secara teknis, program ini menjawab pertanyaan sederhana. Namun secara substantif, kita perlu berhati-hati. Apakah “jumlah komentar” benar-benar ukuran partisipasi yang baik? Bagaimana dengan kualitas komentar? Apakah semua mahasiswa memiliki kesempatan bicara yang sama? Apakah ada perbedaan gaya komunikasi? Pertanyaan-pertanyaan seperti ini menunjukkan bahwa analisis kuantitatif tidak boleh dipisahkan dari pemahaman sosial.
Inilah semangat buku ini: memakai Python dengan teliti, tetapi juga tetap berpikir sebagai mahasiswa sains sosial.
Anda akan belajar menulis kode. Anda juga akan belajar membaca data, meragukan hasil secara sehat, menjelaskan metode, dan menyusun argumen yang dapat diperiksa. Jika keempat kemampuan itu tumbuh bersama, Python tidak hanya menjadi keterampilan teknis, tetapi menjadi bagian dari cara kerja akademik dan profesional yang lebih matang.
References
Kluyver, T., Ragan-Kelley, B., Pérez, F., Granger, B. E., Bussonnier, M., Frederic, J., Kelley, K., Hamrick, J. B., Grout, J., Corlay, S., Ivanov, P., Avila, D., Abdalla, S., & Willing, C. (2016). Jupyter Notebooks—A publishing format for reproducible computational workflows. In F. Loizides & B. Schmidt (Eds.), Positioning and Power in Academic Publishing: Players, Agents and Agendas (pp. 87–90). IOS Press.
Lazer, D., Pentland, A. S., Adamic, L., Aral, S., Barabási, A.-L., Brewer, D., Christakis, N., Contractor, N., Fowler, J., Gutmann, M., Jebara, T., King, G., Macy, M., Roy, D., & Van Alstyne, M. (2009). Computational social science. Science, 323(5915), 721–723.
McKinney, W. (2010). Data structures for statistical computing in Python. In S. van der Walt & J. Millman (Eds.), Proceedings of the 9th Python in Science Conference (pp. 56–61).
Peng, R. D. (2011). Reproducible research in computational science. Science, 334(6060), 1226–1227.
Salganik, M. J. (2018). Bit by Bit: Social Research in the Digital Age. Princeton University Press.
Virtanen, P., Gommers, R., Oliphant, T. E., Haberland, M., Reddy, T., Cournapeau, D., Burovski, E., Peterson, P., Weckesser, W., Bright, J., van der Walt, S. J., Brett, M., Wilson, J., Millman, K. J., Mayorov, N., Nelson, A. R. J., Jones, E., Kern, R., Larson, E., … SciPy 1.0 Contributors. (2020). SciPy 1.0: Fundamental algorithms for scientific computing in Python. Nature Methods, 17, 261–272.
Wing, J. M. (2006). Computational thinking. Communications of the ACM, 49(3), 33–35.