成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為數據科學項目開發穩健的ETL管道

譯文 精選
數據庫
高質量的數據在數據科學中非常重要,但這類數據常常來自許多地方,格式混亂。一些數據來自數據庫,另一些數據來自文件或網站。這些原始數據很難立即使用,因此我們需要先對其進行清理和組織。

譯者 | 布加迪

審校 | 重樓

高質量的數據在數據科學中非常重要,但這類數據常常來自許多地方,格式混亂。一些數據來自數據庫,另一些數據來自文件或網站。這些原始數據很難立即使用,因此我們需要先對其進行清理和組織。

ETL是幫助完成這項任務的過程。ETL代表提取、轉換和加載。提取意味著從不同的來源收集數據。轉換意味著清理和格式化數據。加載意味著將數據存儲在數據庫中以便訪問。構建ETL管道使這個過程實現了自動化。穩健ETL管道可以節省時間確保數據可靠。

我們在本文中將了解如何為數據科學項目構建ETL管道。

什么是ETL管道

ETL管道將數據從源移動到目標。它分為三個階段:

1. 提取:從多個來源(比如數據庫或文件)收集數據。

2. 轉換:清理和轉換數據以分析。

3. 加載:將清理后的數據存儲在數據庫或其他系統中。

為什么ETL管道很重要

ETL管道重要,有這幾個原因:

  • 數據質量:轉換通過處理缺失值和修復錯誤來幫助清理數據。
  • 數據可訪問性:ETL管道將來自許多源的數據放到一個地方,以便訪問。
  • 自動化:管道自動執行重復性任務,讓數據科學家可以專注于分析。

現在,讓我們用Python構建一個簡單的ETL管道。

數據攝取

首先我們需要得到數據。我們將從一個CSV文件中提取數據

import pandas as pd

# Function to extract data from a CSV file
def extract_data(file_path):
 try:
 data = pd.read_csv(file_path)
 print(f"Data extracted from {file_path}")
 return data
 except Exception as e:
 print(f"Error in extraction: {e}")
 return None

# Extract employee data
employee_data = extract_data('/content/employees_data.csv')

# Print the first few rows of the data
if employee_data is not None:
 print(employee_data.head())

數據轉換

收集數據后,我們需要對其進行轉換。這意味著要清理數據確保其正確。我們還將數據更改為可用于分析的格式。下面是一些常見的轉換:

  • 處理缺失的數據:刪除或填寫缺失的值。
  • 創建衍生的特征:創建新列,比如工資區間或年齡組。
  • 編碼類別:將部門名稱等數據更改為計算機可以使用的格式。
# Function to transform employee data 
def transform_data(data):
 try:

 # Ensure salary and age are numeric and handle any errors
 data['Salary'] = pd.to_numeric(data['Salary'], errors='coerce')
 data['Age'] = pd.to_numeric(data['Age'], errors='coerce')

 # Remove rows with missing values
 data = data.dropna(subset=['Salary', 'Age', 'Department'])

 # Create salary bands
 data['Salary_band'] = pd.cut(data['Salary'], bins=[0, 60000, 90000, 120000, 1500000], labels=['Low', 'Medium', 'High', 'Very High'])

 # Create age groups
 data['Age_group'] = pd.cut(data['Age'], bins=[0, 30, 40, 50, 60], labels=['Young', 'Middle-aged', 'Senior', 'Older'])

 # Convert department to categorical
 data['Department'] = data['Department'].astype('category')

 print("Data transformation complete")
 return data
 except Exception as e:
 print(f"Error in transformation: {e}")
 return None

employee_data = extract_employee_data('/content/employees_data.csv')

# Transform the employee data
if employee_data is not None:
 transformed_employee_data = transform_data(employee_data)

 # Print the first few rows of the transformed data
 print(transformed_employee_data.head())

數據存儲

最后一步是將數據加載到數據庫中使得用戶易于搜索和分析。

在本文中,我們使用SQLite。它是一存儲數據的輕量級數據庫。我們將在SQLite數據庫中創建一個名為employees(員工)的表。然后,我們將轉換后的數據插入該表

import sqlite3

# Function to load transformed data into SQLite database
def load_data_to_db(data, db_name='employee_data.db'):
 try:
 # Connect to SQLite database (or create it if it doesn't exist)
 conn = sqlite3.connect(db_name)
 cursor = conn.cursor()

 # Create table if it doesn't exist
 cursor.execute('''
 CREATE TABLE IF NOT EXISTS employees (
 employee_id INTEGER PRIMARY KEY,
 first_name TEXT,
 last_name TEXT,
 salary REAL,
 age INTEGER,
 department TEXT,
 salary_band TEXT,
 age_group TEXT
 )
 ''')

 # Insert data into the employees table
 data.to_sql('employees', conn, if_exists='replace', index=False)

 # Commit and close the connection
 conn.commit()
 print(f"Data loaded into {db_name} successfully")

 # Query the data to verify it was loaded
 query = "SELECT * FROM employees"
 result = pd.read_sql(query, conn)
 print("\nData loaded into the database:")
 print(result.head()) # Print the first few rows of the data from the database

 conn.close()
 except Exception as e:
 print(f"Error in loading data: {e}")

load_data_to_db(transformed_employee_data)

運行完整的ETL管道

現在我們已完成了提取、轉換和加載步驟,就可以將它們組合起來了。這將創建一個完整的ETL管道。管道將獲取員工數據,并清理和更改數據。最后,它將把數據保存在數據庫中。

def run_etl_pipeline(file_path, db_name='employee_data.db'):
 # Extract
 data = extract_employee_data(file_path)
 if data is not None:
 # Transform
 transformed_data = transform_employee_data(data)
 if transformed_data is not None:
 # Load
 load_data_to_db(transformed_data, db_name)

# Run the ETL pipeline
run_etl_pipeline('/content/employees_data.csv', 'employee_data.db')

現在大功告成了:我們的ETL管道已實現完畢,現在可以執行了。

ETL管道的幾個最佳實踐

下面是需要遵循的幾個最佳實踐,以便構建高效可靠的ETL管道:

1. 利用模塊化:將管道分解為更小的、可重用的函數。

2. 錯誤處理:在提取、轉換或加載期間日志問題添加錯誤處理機制

3. 優化性能:為大型數據集優化查詢和管理內存。

4. 自動化測試:自動測試轉換和數據格式以確保準確性。

結語

ETL管道是任何數據科學項目的關鍵。它們有助于處理和存儲數據,以進行準確的分析。我們演示了如何從CSV文件中獲取數據然后我們清理和更改數據最后我們將其保存在SQLite數據庫中。

一個好的ETL管道可以確保數據井然有序這種管道可加以改進,以處理更復雜的數據和存儲需求。它有助于創建可擴展且可靠的數據解決方案。

原文標題:Developing Robust ETL Pipelines for Data Science Projects,作者:Jayita Gulati

責任編輯:華軒 來源: 51CTO
相關推薦

2018-04-16 11:11:56

2020-12-09 06:25:19

ETL數據分析數據科學家

2017-05-31 14:35:17

大數據運行環境數據管道

2018-06-29 16:00:56

數據科學家數據清理數據分析

2018-10-28 18:30:51

數據科學數據項目管理

2025-04-14 10:20:00

PythonETL流程開發

2019-10-22 08:00:22

數據科學AWSDC

2024-09-06 10:25:32

人工智能ETL微服務

2021-06-29 10:03:45

數據科學機器學習算法

2019-12-19 14:42:40

開源數據科學項目

2013-03-27 15:10:14

ETL

2016-10-27 14:48:36

工程師ETL算法

2018-04-09 11:20:40

數據科學項目數據

2019-11-14 15:56:18

開源技術 軟件

2020-08-12 14:56:48

數據科學Python函數

2016-12-07 17:12:57

大數據Hadoop

2020-06-08 12:47:08

ETLHadoopSpark

2022-07-11 09:00:00

數據集成云計算ELT

2015-06-11 10:27:29

數據科學家

2021-02-09 10:53:21

數據科學數據分析IT
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品亚洲精品 | 国户精品久久久久久久久久久不卡 | 深夜爽视频| av资源网站 | 中文字幕丁香5月 | 91视频在线观看 | 亚洲国产网址 | 午夜精品一区二区三区在线视频 | 久久精品亚洲成在人线av网址 | 久久精品99| 欧美黑人一级爽快片淫片高清 | 91av在线看 | 精品一区二区免费视频 | 欧美激情精品久久久久久 | 国产日韩欧美精品 | 国产综合精品一区二区三区 | 久久精品免费 | 国产成人精品一区二区三区四区 | 91成人在线 | 天天在线操| 日韩久久综合 | 一区二区视频在线 | 不卡一区 | 日韩高清电影 | 一区二区三区四区在线 | 精品国产一区三区 | 国产91在线播放 | 99re国产视频 | 国产亚洲成av人片在线观看桃 | 九九综合九九 | 99久久久久久 | 亚洲精品区 | 欧美精品一区二区三区蜜桃视频 | 免费a网 | 日本黄色一级视频 | 天天拍天天插 | 男人的天堂亚洲 | 国产欧美精品一区 | 国产精品视频一区二区三区不卡 | 久久成人精品 | 在线观看成人免费视频 |