Sumber data: Badan Pusat Statistik (BPS).
Judul data: Jumlah Pendidik dan Tenaga Pendidik Menurut Jenjang Pendidikan dan Jenis Kelamin, 2025.
Data yang digunakan berisi jumlah pendidik dan tenaga pendidik di Indonesia berdasarkan provinsi, jenjang pendidikan, dan jenis kelamin.
Link Data:
- Web Resmi BPS: https://www.bps.go.id/id/statistics-table/1/MjMxOCMx/jumlah-pendidik-dan-tenaga-pendidik-menurut-jenjang-pendidikan-dan-jenis-kelamin--2025.html
- File Data Excel: Data Pendidik 2025
Data terdiri dari 38 provinsi di Indonesia serta satu baris Indonesia yang merupakan total nasional. Jenjang pendidikan yang tersedia meliputi TK, KB, TPA, SPS, SD, SMP, SMA, SMK, dan SLB.
Data ini menunjukkan jumlah pendidik dan tenaga pendidik berdasarkan jenjang pendidikan dan jenis kelamin pada tahun 2025.
Terdapat tiga variabel kategorik utama: - Provinsi - Kelompok Pulau / Wilayah (8 wilayah kepulauan/geografis besar) - Jenjang Pendidikan - Jenis Kelamin
Sedangkan variabel numeriknya berupa jumlah pendidik dan tenaga pendidik.
Secara nasional, terdapat 4.633.944 pendidik dan tenaga pendidik, yang terdiri dari 1.466.704 laki-laki dan 3.167.240 perempuan.
Data ini dipilih karena memiliki kombinasi variabel kategorik dan numerik yang cukup jelas sehingga dapat digunakan untuk berbagai jenis visualisasi.
Selain itu, data ini menarik untuk melihat: 1. Perbedaan jumlah pendidik antarprovinsi dan antarpulau. 2. Perbedaan jumlah pendidik berdasarkan jenjang pendidikan. 3. Komposisi laki-laki dan perempuan pada setiap jenjang pendidikan. 4. Pola hubungan serta perbandingan tenaga pendidik laki-laki dan perempuan di setiap daerah.
Data asli memiliki beberapa baris header sebelum data provinsi dimulai. Oleh karena itu, bagian tersebut perlu dilewati ketika membaca file.
raw <- read.csv(
"Jumlah Pendidik Dan Tenaga Pendidik Menurut Jenjang Pendidikan Dan Jenis Kelamin, 2025.csv.xls",
skip = 5,
header = FALSE,
fileEncoding = "UTF-8-BOM"
)
# Nama kolom berdasarkan struktur data asli
jenjang <- c(
"TK", "KB", "TPA", "SPS",
"SD", "SMP", "SMA", "SMK", "SLB",
"Total"
)
colnames(raw) <- c(
"Provinsi",
unlist(
lapply(
jenjang,
function(j) paste0(j, c("_L", "_P"))
)
),
"Kosong"
)
# Hapus kolom kosong terakhir
raw$Kosong <- NULL
Nilai pada file menggunakan tanda koma sebagai pemisah ribuan. Tanda tersebut dibersihkan agar dapat dihitung secara numerik. Selain itu, dilakukan pengelompokan 38 provinsi ke dalam 8 wilayah kepulauan/geografis besar (Pulau).
for (col in names(raw)[-1]) {
raw[[col]] <- as.numeric(
gsub(",", "", raw[[col]])
)
}
# Hanya mengambil baris data provinsi dan Indonesia
raw <- raw[
!is.na(raw$Total_L) &
!is.na(raw$Provinsi) &
raw$Provinsi != "",
]
# Pemisahan data nasional dan provinsi
total_nasional <- raw[raw$Provinsi == "Indonesia", ]
df_provinsi <- raw[raw$Provinsi != "Indonesia", ]
# Bersihkan spasi tambahan di awal/akhir nama provinsi
df_provinsi$Provinsi <- trimws(df_provinsi$Provinsi)
# Menghitung total pendidik per provinsi
df_provinsi$Total_Pendidik <- df_provinsi$Total_L + df_provinsi$Total_P
# Menambahkan variabel kategorik Kelompok Pulau dengan memisahkan Bali dan Nusa Tenggara
df_provinsi <- df_provinsi %>%
mutate(Pulau = case_when(
grepl("Aceh|Sumat|Riau|Jambi|Bengkulu|Lampung|Bangka", Provinsi, ignore.case = TRUE) ~ "Sumatra",
grepl("Jakarta|Jawa|Yogyakarta|Banten", Provinsi, ignore.case = TRUE) ~ "Jawa",
grepl("Bali", Provinsi, ignore.case = TRUE) ~ "Bali",
grepl("Nusa Tenggara", Provinsi, ignore.case = TRUE) ~ "Nusa Tenggara",
grepl("Kalimantan", Provinsi, ignore.case = TRUE) ~ "Kalimantan",
grepl("Sulawesi|Gorontalo", Provinsi, ignore.case = TRUE) ~ "Sulawesi",
grepl("Maluku", Provinsi, ignore.case = TRUE) ~ "Maluku",
grepl("Papua", Provinsi, ignore.case = TRUE) ~ "Papua",
TRUE ~ "Lainnya"
))
# Pengaturan urutan provinsi
df_provinsi <- df_provinsi[order(-df_provinsi$Total_Pendidik), ]
df_provinsi$Provinsi <- factor(df_provinsi$Provinsi, levels = rev(df_provinsi$Provinsi))
Berikut adalah ringkasan jumlah pendidik dan tenaga pendidik pada setiap provinsi beserta pengelompokan wilayah kepulauannya.
tabel_provinsi <- df_provinsi %>%
select(
Provinsi,
Pulau,
Total_L,
Total_P,
Total_Pendidik
)
colnames(tabel_provinsi) <- c(
"Provinsi",
"Wilayah Pulau",
"Laki-laki",
"Perempuan",
"Total"
)
kable(
tabel_provinsi,
row.names = FALSE,
format.args = list(big.mark = ",")
)
| Provinsi | Wilayah Pulau | Laki-laki | Perempuan | Total |
|---|---|---|---|---|
| JAWA BARAT | Jawa | 234,790 | 423,828 | 658,618 |
| JAWA TIMUR | Jawa | 189,292 | 373,894 | 563,186 |
| JAWA TENGAH | Jawa | 163,998 | 321,156 | 485,154 |
| SUMATERA UTARA | Sumatra | 74,145 | 198,449 | 272,594 |
| SULAWESI SELATAN | Sulawesi | 51,341 | 134,236 | 185,577 |
| BANTEN | Jawa | 61,649 | 113,085 | 174,734 |
| SUMATERA SELATAN | Sumatra | 46,390 | 120,865 | 167,255 |
| NUSA TENGGARA TIMUR | Nusa Tenggara | 56,996 | 105,782 | 162,778 |
| LAMPUNG | Sumatra | 45,277 | 106,947 | 152,224 |
| ACEH | Sumatra | 35,286 | 110,981 | 146,267 |
| RIAU | Sumatra | 37,427 | 103,103 | 140,530 |
| NUSA TENGGARA BARAT | Nusa Tenggara | 48,448 | 82,700 | 131,148 |
| D.K.I. JAKARTA | Jawa | 44,645 | 81,038 | 125,683 |
| SUMATERA BARAT | Sumatra | 28,495 | 95,783 | 124,278 |
| KALIMANTAN BARAT | Kalimantan | 33,416 | 64,397 | 97,813 |
| SULAWESI TENGAH | Sulawesi | 24,002 | 59,603 | 83,605 |
| JAMBI | Sumatra | 22,838 | 58,024 | 80,862 |
| SULAWESI TENGGARA | Sulawesi | 23,655 | 57,011 | 80,666 |
| KALIMANTAN TIMUR | Kalimantan | 24,313 | 54,891 | 79,204 |
| KALIMANTAN SELATAN | Kalimantan | 23,362 | 55,385 | 78,747 |
| D.I. YOGYAKARTA | Jawa | 20,677 | 50,265 | 70,942 |
| BALI | Bali | 25,844 | 45,054 | 70,898 |
| KALIMANTAN TENGAH | Kalimantan | 19,221 | 46,351 | 65,572 |
| MALUKU | Maluku | 15,815 | 40,855 | 56,670 |
| SULAWESI UTARA | Sulawesi | 12,754 | 39,607 | 52,361 |
| BENGKULU | Sumatra | 14,153 | 36,814 | 50,967 |
| SULAWESI BARAT | Sulawesi | 13,709 | 28,004 | 41,713 |
| KEPULAUAN RIAU | Sumatra | 12,603 | 27,690 | 40,293 |
| MALUKU UTARA | Maluku | 10,830 | 28,062 | 38,892 |
| KEPULAUAN BANGKA BELITUNG | Sumatra | 8,650 | 18,970 | 27,620 |
| GORONTALO | Sulawesi | 5,845 | 20,254 | 26,099 |
| PAPUA | Papua | 7,039 | 14,516 | 21,555 |
| KALIMANTAN UTARA | Kalimantan | 6,237 | 11,884 | 18,121 |
| PAPUA BARAT | Papua | 4,454 | 9,354 | 13,808 |
| PAPUA TENGAH | Papua | 5,382 | 8,357 | 13,739 |
| PAPUA BARAT DAYA | Papua | 3,854 | 8,787 | 12,641 |
| PAPUA SELATAN | Papua | 4,314 | 6,919 | 11,233 |
| PAPUA PEGUNUNGAN | Papua | 5,558 | 4,339 | 9,897 |
Variabel kategorik yang digunakan pada bagian ini adalah kelompok Pulau, hasil pengelompokan dari 38 provinsi ke dalam 8 wilayah kepulauan/geografis di Indonesia, serta jenjang pendidikan dan jenis kelamin.
df_pulau <- df_provinsi %>%
group_by(Pulau) %>%
summarise(Total_Pendidik = sum(Total_Pendidik)) %>%
arrange(desc(Total_Pendidik))
df_pulau$Pulau <- factor(df_pulau$Pulau, levels = df_pulau$Pulau)
ggplot(
df_pulau,
aes(
x = Pulau,
y = Total_Pendidik,
fill = Pulau
)
) +
geom_col(show.legend = FALSE) +
geom_text(
aes(label = comma(Total_Pendidik)),
vjust = -0.5,
size = 3.5
) +
labs(
title = "Total Pendidik dan Tenaga Pendidik Berdasarkan Kelompok Pulau, 2025",
x = "Kelompok Pulau / Wilayah",
y = "Jumlah Pendidik dan Tenaga Pendidik"
) +
scale_y_continuous(
labels = scales::comma,
expand = expansion(mult = c(0, 0.15))
) +
theme_minimal(base_size = 11) +
scale_fill_brewer(palette = "Set2")
Diagram batang di atas mengelompokkan data ke dalam 8 wilayah kepulauan/geografis di Indonesia.
Pulau Jawa mendominasi jumlah pendidik dan tenaga pendidik secara signifikan dengan total melebihi 2,3 juta orang, disusul oleh Pulau Sumatra. Sementara itu, wilayah Bali dan Nusa Tenggara kini dipisahkan secara tersendiri, di mana Nusa Tenggara menampung jumlah pendidik yang lebih besar dibanding Bali karena mencakup provinsi Nusa Tenggara Barat dan Nusa Tenggara Timur. Sebaliknya, wilayah Maluku dan Papua memiliki akumulasi jumlah pendidik yang relatif lebih kecil, sejalan dengan proporsi sebaran penduduk dan jumlah sekolah di daerah tersebut.
jenjang_gender <- data.frame(
Jenjang = rep(jenjang[1:9], each = 2),
Gender = rep(c("Laki-laki", "Perempuan"), times = 9),
Jumlah = as.vector(
rbind(
as.numeric(total_nasional[1, paste0(jenjang[1:9], "_L")]),
as.numeric(total_nasional[1, paste0(jenjang[1:9], "_P")])
)
)
)
jenjang_gender$Jenjang <- factor(
jenjang_gender$Jenjang,
levels = jenjang[1:9]
)
ggplot(
jenjang_gender,
aes(
x = Jenjang,
y = Jumlah,
fill = Gender
)
) +
geom_col(position = "dodge") +
labs(
title = "Jumlah Pendidik Menurut Jenjang dan Jenis Kelamin, 2025",
x = "Jenjang Pendidikan",
y = "Jumlah Pendidik",
fill = "Jenis Kelamin"
) +
scale_y_continuous(labels = scales::comma) +
scale_fill_manual(
values = c(
"Laki-laki" = "steelblue",
"Perempuan" = "darkorange"
)
) +
theme_minimal(base_size = 11)
Grafik ini menggunakan jenjang pendidikan dan jenis kelamin sebagai variabel kategorik, sedangkan jumlah pendidik merupakan variabel numerik.
Jumlah pendidik perempuan lebih tinggi dibandingkan laki-laki pada seluruh jenjang pendidikan. Ketimpangan paling besar terlihat pada jenjang Pendidikan Anak Usia Dini (TK, KB, TPA, SPS) di mana proporsi perempuan mencapai lebih dari 90%. Pada jenjang pendidikan menengah seperti SMA dan SMK, perbandingannya relatif lebih mendekati seimbang.
ggplot(
df_provinsi,
aes(x = Total_Pendidik)
) +
geom_histogram(
bins = 10,
fill = "steelblue",
color = "white"
) +
labs(
title = "Distribusi Jumlah Pendidik dan Tenaga Pendidik Antarprovinsi",
x = "Jumlah Pendidik dan Tenaga Pendidik",
y = "Jumlah Provinsi"
) +
scale_x_continuous(labels = scales::comma) +
theme_minimal(base_size = 11)
Histogram menunjukkan pola sebaran jumlah pendidik dan tenaga pendidik di 38 provinsi.
Distribusi data tidak simetris (menceng ke kanan / right-skewed). Sebagian besar provinsi memiliki jumlah pendidik pada rentang di bawah 150.000 orang, sementara sebagian kecil provinsi di Pulau Jawa berada di batas kanan frekuensi karena memiliki jumlah pendidik yang sangat tinggi.
ggplot(
df_provinsi,
aes(
x = Total_L,
y = Total_P,
color = Pulau
)
) +
geom_abline(
intercept = 0,
slope = 1,
linetype = "dashed",
color = "gray50",
linewidth = 0.8
) +
geom_point(size = 3.5, alpha = 0.85) +
geom_smooth(
method = "lm",
se = FALSE,
color = "darkred",
linetype = "dotted",
inherit.aes = FALSE,
aes(x = Total_L, y = Total_P)
) +
labs(
title = "Hubungan Jumlah Pendidik Laki-Laki dan Perempuan per Provinsi",
subtitle = "Garis putus-putus abu-abu menunjukkan rasio seimbang (1:1)",
x = "Jumlah Pendidik Laki-Laki",
y = "Jumlah Pendidik Perempuan",
color = "Kelompok Wilayah"
) +
scale_x_continuous(labels = scales::comma) +
scale_y_continuous(labels = scales::comma) +
theme_minimal(base_size = 11) +
scale_color_brewer(palette = "Set1")
Diagram tebar (scatter plot) di atas digunakan untuk melihat hubungan linier antara jumlah pendidik laki-laki (sumbu X) dan perempuan (sumbu Y) pada 38 provinsi yang dikelompokkan berdasarkan 8 wilayah kepulauan/geografis (Pulau).
Berdasarkan analisis data tahun 2025: