讓Python運行SQL?Pandasql來搞定!
來源:數(shù)據(jù)分析網(wǎng)
關(guān)于 Python 的最喜歡的一件事是使用者獲得觀察 R 社區(qū)的好處,然后模擬其最好的部分。我相信一種語言和它的庫和工具一樣有用。
這篇文章是關(guān)于pandasql,Yhat 寫的一個模擬 R 包 sqldf 的Python 庫。這是一個小而強大的庫,只有358行代碼。pandasql 的想法是讓 Python 運行 SQL。對于那些來自 SQL 背景或仍然「使用 SQL 思考」的人來說,pandasql是一種利用兩種語言優(yōu)勢的好方式。
在本介紹中,將在為數(shù)據(jù)探索和分析構(gòu)建的集成開發(fā)環(huán)境(IDE) Rodeo 中用 pandasql 開始運行。Rodeo 是一個開源、完全免費的工具。如果你是 R 使用者,那么它與 RStudio 具有類似感覺的工具。到目前為止,Rodeo 只能運行 Python 代碼,但上周我們添加一些其他語言的語法高亮到編輯器(markdown,JSON,julia,SQL,markdown)。
你可能已經(jīng)閱讀或猜到了,我們對 Rodeo 有很大的計劃,包括添加 SQL 支持,以便你可以在 Rodeo 內(nèi)運行 SQL 查詢,即使沒有我們的方便pandasql。
01. 下載 Rodeo
首先從 Yhat 網(wǎng)站上的 Rodeo 頁面下載 Rodeo for Mac,Windows 或 Linux。
如果你好奇,一點背景
在背后,pandasql 使用該 pandas.io.sql 模塊在DataFrame 和 SQLite 數(shù)據(jù)庫之間傳輸數(shù)據(jù)。操作用 SQL 執(zhí)行,返回結(jié)果,然后將數(shù)據(jù)庫拆除。此庫大量使用 pandas write_frame 和 frame_query 兩個功能,可以讓你讀取和寫入 pandas 任何 SQL 數(shù)據(jù)庫。
02. 安裝 pandasql
pandasql 使用 Rodeo 中的軟件包管理器進行安裝。只需搜索 pandasql 并單擊安裝包。

如果你喜歡安裝這種方式,也可以從文本編輯器運行 ! pip install pandasql。
03. 查看數(shù)據(jù)集
pandasql 有兩個內(nèi)置的數(shù)據(jù)集,將用于下面的例子。
meat:數(shù)據(jù)集來自美國農(nóng)業(yè)部,包含有關(guān)牲畜,乳制品和家禽前景和生產(chǎn)的指標
births:數(shù)據(jù)集來自聯(lián)合國統(tǒng)計司,包含按月計算的活產(chǎn)嬰兒人口統(tǒng)計
運行以下代碼查看數(shù)據(jù)集。

在 Rodeo 里面,你真的不需要 print.variable.head() 語句,因為實際上你可以直接檢查 dataframe。

04. 奇數(shù)圖


請注意,繪圖將顯示在控制臺和繪圖選項卡(右下角的選項卡)中。
提示:可以通過單擊窗格頂部的箭頭「彈出」你的繪圖。如果你正在使用多個顯示器,并希望對于數(shù)據(jù)可視化,專注于其中一個屏幕,那么這是非常方便的。

05. 用法
為了使這篇文章簡潔易讀,我們剛剛給出了代碼片段和下面大部分查詢的幾行結(jié)果。
如果你在 Rodeo 中跟隨著,開始時候有會一些提示:
Run Script 確實會運行在文本編輯器中編寫的所有內(nèi)容
你可以高亮顯示代碼塊,并通過單擊 Run Line 或按 Command + Enter 運行它
你可以調(diào)整窗格大小(當我沒有繪制圖時,我縮小了右下角的窗格)
06. 基礎(chǔ)
寫一些 SQL,通過代替 DataFrames 表針對 pandas DataFrame,并執(zhí)行它。

pandasql 創(chuàng)建數(shù)據(jù)庫、架構(gòu)、加載數(shù)據(jù)、并運行你的 SQL。
07. 聚合
pandasql 支持聚合??梢栽?group by 子句中使用別名列名或列號。

locals() 與 globals()
pandasql 需要在會話/環(huán)境中訪問其他變量。雖然當執(zhí)行 SQL 語句時,可以傳遞 locals() 給 pandasql,但是如果你運行了大量可能麻煩的查詢。為了避免一直傳遞給 locals,你可以將這個幫助函數(shù)添加到腳本中,來其設(shè)置 globals() 如下:

08. 聯(lián)結(jié)
你可以使用正常的 SQL 語法聯(lián)結(jié) dataframes。

09. WHERE 條件
這是一個 WHERE 字句。

10. 這只是SQL
由于 pandasql 由 SQLite3 提供支持,你可以用 SQL 中執(zhí)行大部分任務。以下是使用常見 SQL 功能(例如子查詢,排序分組,函數(shù)和聯(lián)合)的一些示例。



最后的想法

pandas 是一個難以置信的數(shù)據(jù)分析工具,因為它非常易于理解、簡潔明了、易表達。最終,有足夠充分的理由來學習的 merge,join,concatenate,melt 的細微差別和其他 pandas 特色的切片和切塊數(shù)據(jù)。查看文檔的一些例子。
我們希望這 pandasql 對于 Python 和 pandas 新手將是一個有用的學習工具。在我自己學習 R 的個人經(jīng)驗中,sqldf 是一個熟悉的界面,可以幫助我盡快使用新工具來提高生產(chǎn)力。

加入知識星球【我們談論數(shù)據(jù)科學】
SQL必知必會打卡進行中,限時優(yōu)惠20元
500+小伙伴一起學習!
· 推薦閱讀 ·
在windows和linux上高效快捷地發(fā)布Dash應用
