pandasql:讓 python 運(yùn)行 SQL

pandasql:讓 python 運(yùn)行 SQL

pandasql:讓 python 運(yùn)行 SQL
由 Yhat | 2016 年 10 月 11 日
本文鏈接:http://blog.yhat.com/posts/pandasql-intro.html

介紹

關(guān)于 Python 的最喜歡的一件事是使用者獲得觀察 R 社區(qū)的好處,然后模擬其最好的部分。我相信一種語(yǔ)言和它的庫(kù)和工具一樣有用。

這篇文章是關(guān)于pandasql,Yhat 寫的一個(gè)模擬 R 包 sqldf 的Python 庫(kù)。這是一個(gè)小而強(qiáng)大的庫(kù),只有358行代碼。pandasql 的想法是讓 Python 運(yùn)行 SQL。對(duì)于那些來(lái)自 SQL 背景或仍然「使用 SQL 思考」的人來(lái)說(shuō),pandasql是一種利用兩種語(yǔ)言優(yōu)勢(shì)的好方式。

在本介紹中,將在為數(shù)據(jù)探索和分析構(gòu)建的集成開發(fā)環(huán)境(IDE) Rodeo 中用 pandasql 開始運(yùn)行。Rodeo 是一個(gè)開源、完全免費(fèi)的工具。如果你是 R 使用者,那么它與 RStudio 具有類似感覺的工具。到目前為止,Rodeo 只能運(yùn)行 Python 代碼,但上周我們添加一些其他語(yǔ)言的語(yǔ)法高亮到編輯器(markdown,JSON,julia,SQL,markdown)。你可能已經(jīng)閱讀或猜到了,我們對(duì) Rodeo 有很大的計(jì)劃,包括添加 SQL 支持,以便你可以在 Rodeo 內(nèi)運(yùn)行 SQL 查詢,即使沒有我們的方便pandasql。更多的是在下一兩周內(nèi)!

下載 Rodeo

首先從 Yhat 網(wǎng)站上的 Rodeo 頁(yè)面下載 Rodeo for Mac,Windows 或 Linux。

ps:如果你下載 Rodeo 并遇到問題或只是有疑問,我們會(huì)全天候監(jiān)控我們的討論論壇24/7。

如果你好奇,一點(diǎn)背景

在背后,pandasql 使用該 pandas.io.sql 模塊在DataFrame 和 SQLite 數(shù)據(jù)庫(kù)之間傳輸數(shù)據(jù)。操作用 SQL 執(zhí)行,返回結(jié)果,然后將數(shù)據(jù)庫(kù)拆除。此庫(kù)大量使用 pandas write_frame 和 frame_query 兩個(gè)功能,可以讓你讀取和寫入 pandas 任何 SQL 數(shù)據(jù)庫(kù)。

安裝 pandasql

pandasql 使用 Rodeo 中的軟件包管理器進(jìn)行安裝。只需搜索 pandasql 并單擊安裝包。

1

如果你喜歡安裝這種方式,也可以從文本編輯器運(yùn)行 ! pip install pandasql。

查看數(shù)據(jù)集

pandasql 有兩個(gè)內(nèi)置的數(shù)據(jù)集,將用于下面的例子。

meat:數(shù)據(jù)集來(lái)自美國(guó)農(nóng)業(yè)部,包含有關(guān)牲畜,乳制品和家禽前景和生產(chǎn)的指標(biāo)
births:數(shù)據(jù)集來(lái)自聯(lián)合國(guó)統(tǒng)計(jì)司,包含按月計(jì)算的活產(chǎn)嬰兒人口統(tǒng)計(jì)
運(yùn)行以下代碼查看數(shù)據(jù)集。

2

在 Rodeo 里面,你真的不需要 print.variable.head() 語(yǔ)句,因?yàn)閷?shí)際上你可以直接檢查 dataframe。

3

奇數(shù)圖

4-1

4-2

請(qǐng)注意,繪圖將顯示在控制臺(tái)和繪圖選項(xiàng)卡(右下角的選項(xiàng)卡)中。

提示:可以通過(guò)單擊窗格頂部的箭頭「彈出」你的繪圖。如果你正在使用多個(gè)顯示器,并希望對(duì)于數(shù)據(jù)可視化,專注于其中一個(gè)屏幕,那么這是非常方便的。

5

用法

為了使這篇文章簡(jiǎn)潔易讀,我們剛剛給出了代碼片段和下面大部分查詢的幾行結(jié)果。

如果你在 Rodeo 中跟隨著,開始時(shí)候有會(huì)一些提示:

  • Run Script 確實(shí)會(huì)運(yùn)行在文本編輯器中編寫的所有內(nèi)容
  • 你可以高亮顯示代碼塊,并通過(guò)單擊 Run Line 或按 Command + Enter 運(yùn)行它
  • 你可以調(diào)整窗格大?。ó?dāng)我沒有繪制圖時(shí),我縮小了右下角的窗格)

基礎(chǔ)

寫一些 SQL,通過(guò)代替 DataFrames 表針對(duì) pandas DataFrame,并執(zhí)行它。

6

pandasql 創(chuàng)建數(shù)據(jù)庫(kù)、架構(gòu)、加載數(shù)據(jù)、并運(yùn)行你的 SQL。

聚合

pandasql 支持聚合。可以在 group by 子句中使用別名列名或列號(hào)。


7

locals() 與 globals()

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

8

聯(lián)結(jié)

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

9

WHERE 條件

這是一個(gè) WHERE 字句。


10

這只是SQL

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

11-1

11-2

11-3

11-4

最后的想法

12

pandas 是一個(gè)難以置信的數(shù)據(jù)分析工具,因?yàn)樗浅R子诶斫?、?jiǎn)潔明了、易表達(dá)。最終,有足夠充分的理由來(lái)學(xué)習(xí)的 merge,join,concatenate,melt 的細(xì)微差別和其他 pandas 特色的切片和切塊數(shù)據(jù)。查看文檔的一些例子。
我們希望這 pandasql 對(duì)于 Python 和 pandas 新手將是一個(gè)有用的學(xué)習(xí)工具。在我自己學(xué)習(xí) R 的個(gè)人經(jīng)驗(yàn)中,sqldf 是一個(gè)熟悉的界面,可以幫助我盡快使用新工具來(lái)提高生產(chǎn)力。

我們希望你能檢查 pandasql 和 Rodeo;如果你這樣做,請(qǐng)告訴我們你的想法!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容