
Python Pandas 和 SQL 構成了資料分析、機器學習和 ETL 流程的基礎。處理大型 DataFrame 和運行複雜的資料庫查詢需要高效且不犧牲程式碼清晰度。
在 Pandas 中嵌入 SQL 查詢 工作流程加速了過濾、聚合和連接,同時保持了 Python 的靈活性和結果一致性。
本指南涵蓋了 pandasql 設定和 Pandas 的原生 SQL 方法,介紹了真實的 DataFrame 查詢範例,概述了最佳化的最佳實踐 分析工作流程 和報告。
為什麼要結合 Python Pandas 和 SQL?
大熊貓 是一個用於資料操作和分析的 Python 函式庫。它是對表格資料進行切片、切塊和轉換的首選工具。 的SQL 另一方面,結構化查詢語言 (Structured Query Language) 是查詢關聯式資料庫的黃金標準 - 例如 MySQL、PostgreSQL、SQLite 等。

這就是為什麼將這兩者融合會改變遊戲規則的原因:
橋樑:pandasql 和原生 Pandas SQL 集成
pandasql 可以直接在 Pandas DataFrames 上執行 SQL 查詢,無需 匯出資料,提供單獨的資料庫,或採用額外的 API;使用者只需編寫 SQL 語句,接收結果 DataFrame,然後不間斷地繼續進行。
安裝 pandasql
蟒蛇
pip install pandasql
現在您已準備好像專業人士一樣混合使用 SQL 和 Pandas。
入門:基本用法
我們來看一個簡單的例子。假設你有一個 DataFrame:
蟒蛇
import pandas as pd
import pandasql as psql
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
query = "SELECT * FROM df"
result = psql.sqldf(query, locals())
print(result)
這將傳回完整的 DataFrame,就像 df.head() 但使用 SQL 語法。現在您可以像在資料庫中一樣進行篩選、分組和連接。
使用 Pandas 和 SQL 進行真實世界數據分析
讓我們用一個實際的資料集來提升一下。假設你正在分析一個汽車銷售資料集,其中包含如下列: brand, model, year, price, mileage,等等。
載入和探索數據
蟒蛇
import pandas as pd
import pandasql as ps
car_data = pd.read_csv("cars_datasets.csv")
print(car_data.head())
print(car_data.info())
print(car_data.isnull().sum())
您會看到列名稱, 數據類型以及任何缺失值——對於品質數據分析至關重要。
在 DataFrame 上執行 SQL 查詢
十大最貴的汽車
蟒蛇
def q(query):
return ps.sqldf(query, {'car_data': car_data})
q("""
SELECT brand, model, year, price
FROM car_data
ORDER BY price DESC
LIMIT 10
""")
各品牌平均價格
蟒蛇
q("""
SELECT brand, ROUND(AVG(price), 2) AS avg_price
FROM car_data
GROUP BY brand
ORDER BY avg_price DESC
""")
2015年後生產的汽車
蟒蛇
q("""
SELECT *
FROM car_data
WHERE year > 2015
ORDER BY year DESC
""")
各品牌汽車總數
蟒蛇
q("""
SELECT brand, COUNT(*) as total_listed
FROM car_data
GROUP BY brand
ORDER BY total_listed DESC
LIMIT 5
""")
按條件分組
蟒蛇
q("""
SELECT condition, ROUND(AVG(price), 2) AS avg_price, COUNT(*) as listings
FROM car_data
GROUP BY condition
ORDER BY avg_price DESC
""")
各品牌平均里程及價格
蟒蛇
q("""
SELECT brand,
ROUND(AVG(mileage), 2) AS avg_mileage,
ROUND(AVG(price), 2) AS avg_price,
COUNT(*) AS total_listings
FROM car_data
GROUP BY brand
ORDER BY avg_price DESC
LIMIT 10
""")
每英里價格
蟒蛇
q("""
SELECT brand,
ROUND(AVG(price/mileage), 4) AS price_per_mile,
COUNT(*) AS total
FROM car_data
WHERE mileage > 0
GROUP BY brand
ORDER BY price_per_mile DESC
LIMIT 10
""")
按州可視化數據
您甚至可以使用小部件和 Plotly 來製作互動式儀表板:
蟒蛇
import plotly.express as px
import ipywidgets as widgets
state_dropdown = widgets.Dropdown(
options=car_data['state'].unique().tolist(),
value=car_data['state'].unique()[0],
description='Select State:',
layout=widgets.Layout(width='50%')
)
def plot_avg_price_state(state_selected):
query = f"""
SELECT brand, AVG(price) AS avg_price
FROM car_data
WHERE state = '{state_selected}'
GROUP BY brand
ORDER BY avg_price DESC
"""
result = q(query)
fig = px.bar(result, x='brand', y='avg_price', color='brand',
title=f"Average Car Price in {state_selected}")
fig.show()
widgets.interact(plot_avg_price_state, state_selected=state_dropdown)
這使得您的分析具有互動性和視覺吸引力——非常適合儀表板或 簡報.
超越 pandasql:原生 Pandas SQL 運算
雖然 pandasql 非常適合快速 SQL 風格的查詢,但 Pandas 也支援直接 SQL 整合以使用實際資料庫(如 SQLite、PostgreSQL、MySQL):
範例:讀取和寫入 SQL
蟒蛇
import pandas as pd
import sqlite3
# Connect to SQLite database
conn = sqlite3.connect(":memory:")
# Create a table and insert data
conn.execute("CREATE TABLE Students (id INTEGER, Name TEXT, Marks REAL, Age INTEGER)")
conn.execute("INSERT INTO Students VALUES (1, 'Kiran', 80, 16), (2, 'Priya', 60, 14), (3, 'Naveen', 82, 15)")
# Read from SQL
df = pd.read_sql("SELECT * FROM Students", conn)
print(df)
# Write to SQL
df.to_sql("Students_Copy", conn, if_exists="replace", index=False)
這種方法非常適合 ETL 管道、報告和生產資料工作流程。
進階用例:ETL、機器學習和儀表板

結合 SQL 和 Pandas 不僅僅是為了查詢,而是為了建立更聰明的工作流程:
Pandasql 與 Pure Pandas:何時使用什麼?
| 獨特之處 | pandasql(SQL) | 純種熊貓 |
|---|---|---|
| 句法 | SQL(許多人都熟悉) | Python(靈活、強大) |
| 可讀性 | 對於複雜查詢來說較高 | 可能會變得冗長 |
| 性能 | 處理非常大的資料集時速度較慢 | 更快,針對 Python 進行了最佳化 |
| 連接/分組 | 非常直觀 | 更多程式碼,但更多選項 |
| 整合 | 非常適合快速分析 | 最適合生產工作流程 |
限制和最佳實踐
最後的思考
Python Pandas 和 SQL 的整合使用代表了資料分析師的必備能力, AI 工程師和研究專業人員。此方法將關聯式資料庫查詢與 Pandas 強大的 DataFrame 操作,從而提高效率和程式碼清晰度。透過利用 pandasql 等工具以及 Pandas 的原生 SQL 集成,團隊可以在一個統一的環境中執行探索性資料分析 (EDA)、強大的 ETL 工作流程和機器學習管道。
要記住的統計數據:
採用這種雙重方法可確保可擴展、可維護的分析流程,並為團隊的長期成功做好準備。
想要保留你的 AI 和數據技能敏銳嗎?
探索更多關於法學碩士 (LLM)、快速工程、RAG 和 AI 代理工作流程。請關注更多指南和實踐範例 AI MOJO

