使用 DataFrame API 進行資料分析
使用 DataFrame API 進行資料分析是有效率地探索、操作和分析各種應用程式中結構化資料的必要條件。
DataFrame API 由多個資料處理庫提供,例如 Python 中的 Pandas 、 Apache Spark 和 R 的 dplyr,每個庫都提供了輕鬆處理大型資料集的工具。 在各個程式庫中使用 DataFrame 似乎很類似,但每個程式庫的功能都有些微差異。
Spark DataFrame
Spark DataFrame 是組織成具名資料行的分散式資料集合,就像資料庫中的資料表一樣。 它可讓您使用類似 SQL 的操作或 API 查詢和轉換大型資料集,同時在 叢集中自動擴展。 DataFrames 提供了一組豐富的函數(選擇列、篩選、聯結、聚合),可讓您有效率地解決常見的資料分析問題。
以下是在 Python 中使用 Spark DataFrame API 的範例。 程式碼會建立具有名稱和年齡的 Spark DataFrame,然後示範選取資料行、依年齡篩選資料列,以及依年齡分組以計算出現次數。
# Create a sample DataFrame
data = [("Alice", 34), ("Bob", 45), ("Cathy", 29)]
columns = ["Name", "Age"]
df = spark.createDataFrame(data, columns)
# Select columns
df.select("Name").show()
# Filter rows
df.filter(df["Age"] > 30).show()
# Group by and aggregate
df.groupBy("Age").count().show()
Spark DataFrame 是一種分散式、以叢集為基礎的資料結構,旨在透過在多部機器上分割和處理非常大的資料集來處理這些資料集。
Pandas DataFrame
Pandas DataFrame 是一種記憶體內的單機器資料結構,最適合適合一台電腦的中小型資料集。
以下是在 Python 中使用 Pandas DataFrame API 執行相同工作的範例:
import pandas as pd
# Create a sample DataFrame
data = {'Name': ['Alice', 'Bob', 'Cathy', 'David'],
'Age': [34, 45, 29, 23]}
df = pd.DataFrame(data)
# Select columns
print(df[['Name']])
# Filter rows
print(df[df['Age'] > 30])
# Group by and aggregate
print(df.groupby('Age').size())
比較 Spark DataFrame 與 Pandas DataFrame
| 特徵 / 功能 | Spark 資料框 | pandas 資料框架 |
|---|---|---|
| 執行 | 分散在叢集中 | 在單一電腦上執行 (記憶體內) |
| 延展性 | 處理非常大的資料集(TB 或更多) | 最適合小型至中型資料集(可容納於 RAM) |
| API | 類似 SQL 的操作,Python/Scala/Java/R 中的 Spark API | 基於 Python 的 API |
| 效能 | 採用 Catalyst 和 Tungsten 引擎進行優化 | 針對單節點操作進行了優化 |
| 延遲與急切 | 延遲評估 (規劃執行前的查詢) | 急切執行(立即運行) |
| 應用案例 | 大數據處理、ETL、串流、機器學習 | 資料分析、原型設計、輕量級 ML |
| 整合 | 適用於 Spark 生態系統和分散式儲存 | 適用於 Python 生態系統(NumPy、SciPy 等) |
提示
如需使用 Spark 載入和轉換資料的詳細資訊,請參閱 Apache Spark Python (PySpark) DataFrame API、 Apache Scala DataFrame API 或 SparkR SparkDataFrame API。