Gunakan dataset cars.csv
yang telah digunakan dalam tutorial untuk menyelesaikan latihan-latihan berikut ini.
# Jalankan kode ini terlebih dahulu
!pip install pyspark findspark
import findspark
findspark.init()
from pyspark.sql import SparkSession
from pyspark.sql.functions import *
from pyspark.sql.types import *
spark = SparkSession.builder.master("local[*]").getOrCreate()
spark.conf.set("spark.sql.repl.eagerEval.enabled", True)
# Load dataset
df = spark.read.csv('cars.csv', header=True, sep=";", inferSchema=True)
a) Tampilkan 10 baris pertama dari dataset
b) Tampilkan schema dari dataframe
c) Hitung total jumlah record dalam dataset
d) Tampilkan nama-nama kolom yang ada
a) Pilih hanya kolom Car
, MPG
, dan Origin
b) Tampilkan semua mobil yang berasal dari Japan
c) Tampilkan mobil dengan MPG lebih dari 30
d) Tampilkan mobil dengan Cylinders = 4 dan Origin = 'Europe'
a) Hitung rata-rata MPG dari semua mobil
b) Temukan nilai Weight minimum dan maksimum
c) Hitung jumlah mobil berdasarkan Origin
d) Temukan mobil dengan Horsepower tertinggi
a) Buat kolom baru Car_Upper
yang berisi nama mobil dalam huruf kapital
b) Buat kolom Car_Length
yang berisi panjang karakter nama mobil
c) Ambil 10 karakter pertama dari nama mobil dan buat kolom Car_Short
d) Gabungkan kolom Car
dan Model
dengan pemisah " - " menjadi kolom Car_Model
a) Buat kolom Efficiency_Category
dengan kriteria:
- MPG > 30: "High"
- MPG 20-30: "Medium"
- MPG < 20: "Low"
b) Konversi Weight dari pound ke kilogram (1 pound = 0.453592 kg)
c) Buat kolomPower_to_Weight
(Horsepower/Weight ratio)
d) Kategorikan Cylinders menjadi "Small" (β€4), "Medium" (5-6), "Large" (β₯7)
a) Hitung rata-rata MPG, Horsepower, dan Weight berdasarkan Origin
b) Temukan mobil dengan MPG tertinggi di setiap kategori Origin
c) Hitung jumlah mobil dan rata-rata MPG berdasarkan Cylinders
d) Tampilkan 5 model tahun dengan jumlah mobil terbanyak
a) Tampilkan mobil Eropa dengan MPG > 25 dan Cylinders = 4, urutkan berdasarkan MPG descending
b) Temukan 10 mobil paling efisien (MPG tertinggi) dari masing-masing Origin
c) Tampilkan mobil dengan Weight di atas rata-rata tapi MPG di atas median
d) Cari mobil yang memiliki Acceleration tercepat di setiap kategori Cylinders
a) Konversi kolom Model menjadi tahun lengkap (70 β 1970, 80 β 1980)
b) Buat kolom Age
yang menghitung umur mobil dari tahun 2024
c) Hitung persentase setiap Origin dari total dataset
d) Buat kategori dekade dan hitung rata-rata MPG per dekade
# Buat dataframe harga mobil
price_data = [
("US", 15000, "USD"),
("Europe", 18000, "EUR"),
("Japan", 16000, "USD")
]
price_df = spark.createDataFrame(price_data, ["Origin", "Base_Price", "Currency"])
a) Join dataframe cars dengan price_data berdasarkan Origin
b) Hitung estimasi harga setiap mobil berdasarkan Origin
c) Tampilkan mobil dengan harga estimasi tertinggi
d) Buat left join dan tampilkan mobil yang tidak memiliki data harga
Tulis query SQL untuk:
a) Menampilkan rata-rata MPG per Origin menggunakan Spark SQL
b) Menemukan mobil dengan rasio Horsepower/Weight tertinggi
c) Membuat ranking mobil berdasarkan efisiensi dalam setiap Origin
d) Menghitung moving average MPG untuk setiap 5 model tahun berurutan
a) Convert DataFrame ke RDD dan hitung jumlah mobil menggunakan RDD
b) Gunakan RDD untuk menghitung rata-rata MPG mobil dari Japan
c) Dengan RDD, temukan mobil dengan nama terpanjang
d) Implementasikan word count pada kolom Car menggunakan RDD
a) Buat function UDF untuk mengkategorikan mobil berdasarkan multiple criteria:
- Sport: MPG < 20 AND Horsepower > 150
- Economy: MPG > 30 AND Cylinders β€ 4
- Luxury: Weight > 3500 AND Origin = 'Europe'
- Standard: sisanya
b) Hitung distribusi kategori mobil tersebut
c) Temukan korelasi antara MPG dan Weight menggunakan built-in functions
d) Buat analisis trend MPG dari tahun ke tahun
a) Identifikasi dan handle missing values (MPG = 0)
b) Deteksi outliers dalam data Weight menggunakan IQR method
c) Buat analisis komparasi performa mobil antar Origin dengan multiple metrics
d) Implementasikan window functions untuk ranking dalam grup
a) Bandingkan performa antara DataFrame API vs Spark SQL untuk query complex
b) Implementasikan caching untuk dataframe yang sering digunakan
c) Optimize join operation untuk dataset besar
d) Gunakan repartitioning untuk meningkatkan performance
- Gunakan
.show()
dengan parameter yang tepat untuk melihat hasil - Kombinasikan multiple operations dengan chaining (method chaining)
- Gunakan alias untuk kolom hasil yang mudah dibaca
- Perhatikan data types saat melakukan operasi matematika
- Test dengan data kecil sebelum apply ke seluruh dataset
- Dokumentasikan code dengan comment yang jelas
- Correctness: Apakah hasil sesuai dengan yang diminta?
- Efficiency: Apakah menggunakan PySpark functions yang optimal?
- Code Quality: Apakah code readable dan well-structured?
- Understanding: Apakah menunjukkan pemahaman konsep PySpark?
Selamat mengerjakan! π
Ingat: Jika menemui error, baca error message dengan teliti dan coba debug step by step.