返回目錄
A
數據科學的藝術與科學:從基礎到實踐 - 第 2 章
第二章:Python 與 R 的數據處理工具
發布於 2026-02-25 14:16
# 第二章:Python 與 R 的數據處理工具
## 2.1 前言
在數據科學的實務中,Python 與 R 是兩大最受歡迎的程式語言。它們各自擁有龐大的社群、豐富的函式庫以及易於上手的語法。這一章將帶你從環境安裝、資料載入、清洗、轉換到可視化的完整流程,並以「線上零售銷售」為例子,說明兩者如何互補,最終達成相同的分析目標。
> **實務提示**:雖然 Python 在機器學習框架(如 TensorFlow、PyTorch)上更具優勢,但在統計分析與報告生成方面,R 的語法更為簡潔。若你既有統計背景,又想進一步進行深度學習,雙語環境往往是最合適的選擇。
## 2.2 環境搭建
### 2.2.1 Python
1. 下載並安裝 <https://www.python.org/downloads/>。建議使用 3.10 或以上版本。
2. 建立虛擬環境:
bash
python -m venv ds_env
source ds_env/bin/activate # Linux/Mac
ds_env\Scripts\activate # Windows
3. 安裝核心套件:
bash
pip install pandas numpy matplotlib seaborn scikit-learn jupyterlab
### 2.2.2 R
1. 下載並安裝 <https://cran.r-project.org/>。
2. 在 R 內安裝套件:
R
install.packages(c("tidyverse", "data.table", "ggplot2", "caret", "shiny"))
3. 建立工作環境:
R
library(tidyverse)
## 2.3 資料載入與檢視
以下以 Kaggle 的「Online Retail」資料集為例,示範如何在兩個語言中載入 CSV 檔案。
### 2.3.1 Python
python
import pandas as pd
df = pd.read_csv('Online_Retail.csv', encoding='ISO-8859-1')
print(df.head())
### 2.3.2 R
R
df <- read_csv('Online_Retail.csv', locale = locale(encoding = 'ISO-8859-1'))
glimpse(df)
## 2.4 資料清洗
### 2.4.1 缺失值處理
#### Python
python
# 判斷缺失值比例
missing_ratio = df.isnull().mean()
print(missing_ratio)
# 以中位數填補
df['UnitPrice'] = df['UnitPrice'].fillna(df['UnitPrice'].median())
#### R
R
# 判斷缺失值比例
missing_ratio <- colMeans(is.na(df))
print(missing_ratio)
# 以中位數填補
df$UnitPrice[is.na(df$UnitPrice)] <- median(df$UnitPrice, na.rm = TRUE)
### 2.4.2 日期型別轉換
#### Python
python
df['InvoiceDate'] = pd.to_datetime(df['InvoiceDate'])
#### R
R
df$InvoiceDate <- as.POSIXct(df$InvoiceDate, format = '%m/%d/%Y %H:%M')
## 2.5 特徵工程
以「客戶總消費金額」為新特徵,示範在兩語言中加總 `Quantity` 與 `UnitPrice`。
### 2.5.1 Python
python
df['TotalPrice'] = df['Quantity'] * df['UnitPrice']
### 2.5.2 R
R
df <- df %>% mutate(TotalPrice = Quantity * UnitPrice)
## 2.6 資料可視化
### 2.6.1 Python
python
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(10,6))
sns.histplot(df['TotalPrice'], bins=50, kde=True)
plt.title('總消費金額分布')
plt.xlabel('金額')
plt.ylabel('頻率')
plt.show()
### 2.6.2 R
R
ggplot(df, aes(x = TotalPrice)) +
geom_histogram(bins = 50, fill = 'steelblue', color = 'black') +
geom_density(color = 'red') +
labs(title = '總消費金額分布', x = '金額', y = '頻率')
## 2.7 總結
- **Python**:以 `pandas` 為核心,結合 `matplotlib`、`seaborn` 的視覺化,適合快速迭代與深度學習整合。
- **R**:以 `tidyverse` 為基礎,語法流暢且統計函式庫豐富,適合統計推論與報告生成。
- 兩者皆能完成資料載入、清洗、特徵工程與可視化;關鍵在於團隊熟悉度與專案需求。
> **實務提示**:在跨語言專案中,建議使用 `datarobot` 或 `MLflow` 進行模型追蹤與版本管理,避免資料處理流程因語言差異而產生衝突。
---
> **實務案例**:下一章將以剛剛整理好的資料為基礎,進一步構建迴歸模型與分類模型,並探討模型評估、超參數調整與部署流程。