標籤:

pandasql:讓 python 運行 SQL

pandasql:讓 python 運行 SQL

pandasql:讓 python 運行 SQL 由 Yhat | 2016 年 10 月 11 日 本文鏈接:blog.yhat.com/posts/pan

介紹

關於 Python 的最喜歡的一件事是使用者獲得觀察 R 社區的好處,然後模擬其最好的部分。我相信一種語言和它的庫和工具一樣有用。

這篇文章是關於pandasql,Yhat 寫的一個模擬 R 包 sqldf 的Python 庫。這是一個小而強大的庫,只有358行代碼。pandasql 的想法是讓 Python 運行 SQL。對於那些來自 SQL 背景或仍然「使用 SQL 思考」的人來說,pandasql是一種利用兩種語言優勢的好方式。

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

下載 Rodeo

首先從 Yhat 網站上的 Rodeo 頁面下載 Rodeo for Mac,Windows 或 Linux。

ps:如果你下載 Rodeo 並遇到問題或只是有疑問,我們會全天候監控我們的討論論壇24/7。

如果你好奇,一點背景

在背後,pandasql 使用該 pandas.io.sql 模塊在DataFrame 和 SQLite 資料庫之間傳輸數據。操作用 SQL 執行,返回結果,然後將資料庫拆除。此庫大量使用 pandas writeframe 和 framequery 兩個功能,可以讓你讀取和寫入 pandas 任何 SQL 資料庫。

安裝 pandasql

pandasql 使用 Rodeo 中的軟體包管理器進行安裝。只需搜索 pandasql 並單擊安裝包。

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

查看數據集

pandasql 有兩個內置的數據集,將用於下面的例子。

meat:數據集來自美國農業部,包含有關牲畜,乳製品和家禽前景和生產的指標 births:數據集來自聯合國統計司,包含按月計算的活產嬰兒人口統計 運行以下代碼查看數據集。

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

奇數圖

請注意,繪圖將顯示在控制台和繪圖選項卡(右下角的選項卡)中。

提示:可以通過單擊窗格頂部的箭頭「彈出」你的繪圖。如果你正在使用多個顯示器,並希望對於數據可視化,專註於其中一個屏幕,那麼這是非常方便的。

用法

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

如果你在 Rodeo 中跟隨著,開始時候有會一些提示:

  • Run Script 確實會運行在文本編輯器中編寫的所有內容
  • 你可以高亮顯示代碼塊,並通過單擊 Run Line 或按 Command + Enter 運行它
  • 你可以調整窗格大小(當我沒有繪製圖時,我縮小了右下角的窗格)

基礎

寫一些 SQL,通過代替 DataFrames 錶針對 pandas DataFrame,並執行它。

pandasql 創建資料庫、架構、載入數據、並運行你的 SQL。

聚合

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

locals() 與 globals()

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

聯結

你可以使用正常的 SQL 語法聯結 dataframes。

WHERE 條件

這是一個 WHERE 字句。

這只是SQL

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

最後的想法

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

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

推薦閱讀:

大數據「佔領」餐飲業,哪一種店鋪能發家致富?
你知道「假的OD線」究竟長啥樣嗎?
數據產品經理的工作類型和能力要求
大數據價值尚未全面呈現 爭奪戰已悄然打響
善意還是齷齪?Facebook如何利用大數據

TAG:大数据 |