Transformasi data dengan pandas

ETL dan ELT di Python

Jake Roach

Data Engineer

Transformasi data dalam pipeline

Data harus ditransformasi dengan benar agar memberi nilai bagi pengguna hilir

Alur kerja transformasi data.

pandas menyediakan alat kuat untuk mentransformasi data tabel

  • .loc[]
  • .to_datetime()
ETL dan ELT di Python

Memfilter record dengan .loc[]

.loc[] memungkinkan transformasi pada kedua dimensi DataFrame

# Simpan hanya entri non-nol
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, :]
# Hapus kolom berlebih
cleaned = raw_stock_data.loc[:, ["timestamps", "open", "close"]]
# Gabungkan dalam satu langkah
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, ["timestamps", "open", "close"]]

.iloc[] menggunakan pengindeksan integer untuk memfilter DataFrame

cleaned = raw_stock_data.iloc[[0:50], [0, 1, 2]]
ETL dan ELT di Python

Mengubah tipe data

Tipe data sering perlu diubah untuk kasus penggunaan hilir

  • .to_datetime()
# Kolom "timestamps" saat ini terlihat seperti: "20230101085731"
# Ubah kolom "timestamps" ke tipe datetime
cleaned["timestamps"] = pd.to_datetime(cleaned["timestamps"], format="%Y%m%d%H%M%S")
Timestamp('2023-01-01 08:57:31')
# Kolom "timestamps" saat ini terlihat seperti: 1681596000011
# Ubah kolom "timestamps" ke tipe datetime
cleaned["timestamps"] = pd.to_datetime(cleaned["timestamps"], unit="ms")
Timestamp('2023-04-15 22:00:00.011000')
ETL dan ELT di Python

Memvalidasi transformasi

Transformasi data memiliki risiko:

  • Kehilangan informasi
  • Membuat data yang salah
# Beberapa cara menyelidiki DataFrame
cleaned = raw_stock_data.loc[raw_stock_data["open"] > 0, ["timestamps", "open", "close"]]
print(cleaned.head())
# Kembalikan record terkecil dan terbesar
print(cleaned.nsmallest(10, ["timestamps"]))
print(cleaned.nlargest(10, ["timestamps"]))
ETL dan ELT di Python

Ayo berlatih!

ETL dan ELT di Python

Preparing Video For Download...