使用 pandas 持久化資料

使用 Python 的 ETL 與 ELT

Jake Roach

Data Engineer

在 ETL 流程中持久化資料

將資料載入到檔案:

  • 確保資料使用者能穩定存取轉換後的資料
  • 發生在 ETL 的最後一步,也可能在各步驟之間
  • 擷取資料的「快照」
使用 Python 的 ETL 與 ELT

使用 pandas 輸出 CSV 檔

.to_csv() 方法

import pandas as pd

# Data extraction and transformation
raw_data = pd.read_csv("raw_stock_data.csv")
stock_data = raw_data.loc[raw_data["open"] > 100, ["timestamps", "open"]]

# Load data to a .csv file
stock_data.to_csv("stock_data.csv")
  • 對 DataFrame 呼叫 .to_csv
  • 將 DataFrame 寫入路徑 "stock_data.csv"
使用 Python 的 ETL 與 ELT

自訂 CSV 輸出

stock_data.to_csv("./stock_data.csv", header=True)
  • 可為 TrueFalse,或字串清單
stock_data.to_csv("./stock_data.csv", index=True)
  • 可為 TrueFalse
  • 決定是否將 index 欄寫入檔案
stock_data.to_csv("./stock_data.csv", sep="|")
  • 指定在檔案中分隔欄位的字元
  • 常見選項是 | 字元

也有對應方法:

  • .to_parquet()
  • .to_json()
  • .to_sql()
1 https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_csv.html
使用 Python 的 ETL 與 ELT

確保資料已持久化

DataFrame 有正確寫入 CSV 檔嗎?

import pandas
import os  # Import the os module

# Extract, transform and load data
raw_data = pd.read_csv("raw_stock_data.csv")
stock_data = raw_data.loc[raw_data["open"] > 100, ["timestamps", "open"]]
stock_data.to_csv("stock_data.csv")

# Check that the path exists
file_exists = os.path.exists("stock_data.csv")
print(file_exists)
True
使用 Python 的 ETL 與 ELT

一起來練習吧!

使用 Python 的 ETL 與 ELT

Preparing Video For Download...