Pandas閃回咒!如何在Python中重寫SQL查詢?

2021-01-12 讀芯術

全文共1459字,預計學習時長4分鐘

圖源:unsplash

工作中,頻繁切換是件麻煩事兒。一些程式設計師只熟悉SQL中的數據操作,卻不熟悉Python中的數據操作,因此在完成項目時,我們不得不頻繁地在SQL和Python之間進行切換,導致了工作效率低下和生產能力下降。

本文就教你一種方法,使用Pandas在Python中輕鬆重現SQL結果。

入門指南

如果電腦中沒有pandas包,則需要先安裝一下:

Conda install pandas

在這個階段,我們將使用著名的Kaggle泰坦尼克數據集:https://www.kaggle.com/c/titanic/data?select=test.csv。

安裝軟體包並下載數據後,需要將其導入Python環境中:

import pandas as pd

titanic_df = pd.read_csv("titanic_test_data.csv")

我們將使用pandas數據框架來存儲數據,還將用到各種pandas函數來操作數據框架。

SELECT, DISTINCT, COUNT, LIMIT

讓我們從經常使用的簡單SQL查詢開始。

titanic_df [「 age」]。unique()將在此處返回唯一值的數組,因此需要使用len()來獲取唯一值的計數。

SELECT,WHERE,OR,AND,IN(有條件選擇)

現在你知道了如何以簡單的方式探索數據框架,接著來嘗試一些條件吧(在SQL中是WHERE子句)。

如果只想從數據框架中選擇特定的列,則可以使用另一對方括號進行選擇。注意,如果要選擇多列,則需要在方括號內放置數組[「 name」,「 age」]。

isin()與SQL中的IN完全相同。要使用NOT IN,需要在Python中使用negation()來獲得相同的結果。

GROUP BY,ORDER BY,COUNT

GROUP BY和ORDER BY也是用來探索數據的流行SQL,讓我們在Python中嘗試一下。

如果只想對COUNT進行排序,可以將布爾值傳遞給sort_values函數;如果想對多列進行排序,則必須將布爾數組傳遞給sort_values函數。sum()函數將提供數據框架中的所有聚合數值總和列,如果只需要特定列,則需要使用方括號指定列名。

MIN,MAX,MEAN,MEDIAN

最後,來嘗試一些常見的統計功能,這些功能對於數據探索非常重要。

由於SQL沒有中位數函數,因此將使用BigQuery APPROX_QUANTILES獲取年齡中位數。pandas聚合函數.agg()還支持其他函數,例如sum。

拒絕頻繁切換,輕鬆重現查詢,你值得擁有!

你可以在我的Github中查看完整的腳本:https://github.com/chingjunetao/medium-article/tree/master/rewrite-sql-with-python

留言點讚關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範

相關焦點

  • PandaSQL:一個讓你能夠通過SQL語句進行pandas的操作的python包
    或者您只是想在dataframe上運行一個特殊的SQL查詢。或者,也許你來自R,想要一個sqldf的替代品。這篇文章將介紹一種在pandas的dataframe中使用SQL的python包,並且使用一個不等連結的查詢操作來介紹PandasSQL的使用方法。不等連接(Non-equi join)假設你必須連接兩個dataframe。
  • Python數據分析:pandas讀取和寫入數據
    平時工作中,我們會接觸到不同的數據文件,比如很常見的excel文件(後綴名為xls和xlsx),csv、txt等文本文件,json文件以及sql文件等等。02讀取寫入Excel文件python處理excel文件用到的模塊包含openpyxl、xlsxwriter、xlutils、xlrd、xlwt。想要了解更多關於這幾個處理excel文件的python包的詳情,可以訪問python-excel官網。
  • 如何用Pandas庫實現MySQL資料庫的讀寫?
    本次分享將介紹如何在Python中使用Pandas庫實現MySQL資料庫的讀寫。首先我們需要了解點ORM方面的知識。pymysql  其中,pandas模塊提供了read_sql_query()函數實現了對資料庫的查詢,to_sql()函數實現了對資料庫的寫入,並不需要實現新建MySQL數據表。
  • 如何用python在工作中「偷懶」?
    於是,我去了解了一下身邊不同崗位(HR、產品、運營、市場、數據分析師等)每天需要面對的重複性勞動(肯定會有不全,歡迎補充~),總結了一些在工作中非常常見的例子,並且將源碼整理好供參考。希望這些程序可以讓你的工作更高效!(升職加薪了別忘了回來發紅包哦~)那麼如何將這些統統實現呢?
  • PySpark源碼解析,用Python調用高效Scala接口,搞定大規模數據分析
    .*")java_import(gateway.jvm,"org.apache.spark.ml.python.*")java_import(gateway.jvm,"org.apache.spark.mllib.api.python.*")#TODO(davies):moveintosqljava_import(gateway.jvm,"org.apache.spark.sql.*")java_import
  • python數據分析——pandas導入數據合集
    導入pandas庫import pandas as pd1.導入csv\txt文件數據pd.read_csv()常用參數:filepath_or_buffer:文件路徑(必填,其他參數按需求填寫)sep:指定分隔符,默認逗號','。header:指定第幾行作為表頭。
  • Python學習120課 pandas簡介kaggle下載數據及pandas讀取外部數據
    【每天幾分鐘,從零入門python編程的世界!】numpy的基本的東西我們學習差不多了,後面具體應用中遇到問題具體分析,然後去深入了解遇到的新的知識點就行。現在我們開始學習pandas,pandas一般用的更多,pandas是基於numpy去寫的。pandas是一個專門做數據結構和數據分析的庫。
  • 懂Excel也能輕鬆入門Python數據分析包pandas(二):高級篩選(上)
    上一篇文章從 Excel 篩選為核心,介紹 pandas 中的實現,但是,Excel 中還有一個高級篩選的功能,普通的篩選與其對比,就只能算是"低級篩選"功能了。接下來,通過簡單到複雜的需求,看看這是怎麼樣的一個功能。
  • python數據分析——pandas導出數據合集
    導入pandas庫:import pandas as pd導入基礎數據:df=pd.read_excel('數據.xlsx')1.將DataFrame寫入csv\txt文件DataFrame.to_csv()常用參數:path_or_buf=None:輸出文件路徑,默認None
  • 用Python做數據分析:Pandas常用數據查詢語法
    如果誰能把常用的數據查詢語法做個對比就好了 ",我也曾不止一次地想享受前人的成果,無奈發現網上的文章側重不同且深淺不一,還涉及到一些Pandas新老版本的問題,於是決定自己動手。 切片 - 多條件篩選 在Pandas中多條件切片的寫法會有些繁瑣,df.loc[ (df['Team']== 'A' ) & (df['Total'] > 15000 ) ],添加括號與條件符。
  • 不會Pandas怎麼行
    pandas 相當於 python 中 excel:它使用表(也就是 dataframe),能在數據上做各種變換,但還有其他很多功能。如果你早已熟知 python 的使用,可以直接跳到第三段。讓我們開始吧:import pandas as pd別問為什麼是「pd」而不是「p」,就是這樣。
  • Python連接MySQL資料庫方法介紹(超詳細!手把手項目案例操作)
    >cur.close() # 關閉遊標conn.close() # 關閉連接上述代碼中,實現了通過Python連接MySQL查詢所有的數據,並輸出前2條數據的功能。>cur.close() # 關閉遊標conn.close() # 關閉連接上述代碼中,實現了通過Python連接MySQL查詢所有的數據,並輸出前2條數據的功能。
  • python3.8操作(插入,刪除)mysql/MariaDB資料庫
    01主題大家好,我是義縣遊學電子科技.今天來跟大家說一個工作中常用到的操作,python3.8操作MariaDB資料庫.因為MariaDB屬於mysql分支因此資料庫命令語句都是通用的非常方便.02環境python-3.8 ,64位mairadb-10.4.7,64位python包:mysql-connector-2.2.9
  • Python模塊NumPy,Pandas,matplotlib的中文文檔
    今天比較忙所以不能寫長文了作為一名數據工程師需要熟練掌握python中的這些numpy,matplotlib,pandas,sklearn,seaborn,statsmodel.模塊但是由於這些模塊的文檔都是英文的可能一些英文不好的同學學起來會比較的困難,所以我從網上給大家找到一些中文的文檔
  • 快速介紹Python數據分析庫pandas的基礎知識和代碼示例
    「軟體工程師閱讀教科書作為參考時不會記住所有的東西,但是要知道如何快速查找重要的知識點。」為了能夠快速查找和使用功能,使我們在進行機器學習模型時能夠達到一定流程化。我創建了這個pandas函數的備忘單。這不是一個全面的列表,但包含了我在構建機器學習模型中最常用的函數。讓我們開始吧!
  • Python神器:找不到模塊怎麼辦?pip安裝器一鍵全搞定
    一個錯誤從上圖中可以看到運行編寫的python程序時,出現了ModuleNotFoundError的提示,意思python解釋器找不到名為pandas的模塊/庫 !因此該錯誤的本質原因是:系統中沒有安裝pandas模塊!那麼本文將針對於找不到模塊的這一類ModuleNotFoundError,為大家介紹一種簡單有效的解決方法——pip萬能安裝器!
  • 詳解Python在資料庫測試中的應用
    對於我們的測試工作而言,Python最吸引我們的特性有如下幾個方面:  1 具備語言粘合劑的能力  2 解釋執行的機制  3 語法簡單易學  4 相對較高的性能  語言粘合劑是比較形象的說法,具體的說,Python支持通過引入自帶的cytpes庫,達到在python腳本中執行已有的動態庫中的代碼的目標。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    (6套課程) 注:零基礎全能篇中,針對windows和liunx系統均有兩套課程可供選擇學習,單純學python,哪個系統都一樣,初學者只需選擇自己熟悉的系統學習相應課程即可。Mov 1-2在線編譯工具weblde使用之指南.mov 2-1如何在列表,字典,集合中根據條件.MOV 2-2 3 4命名 統計 字典.mov 2-5公共鍵.mov 2-6 如何讓字典保持有序.mov 2-7歷史記錄.mov 3-1 2迭代器.mov 3-3如何使用生成器函數實現迭代對象
  • 教你如何使用Python的27萬代碼庫
    在這篇文章中,將討論如何通過PIP命令訪問和利用PyPI。怎麼用?下面乾貨PyPI是Python開發人員的默認軟體存儲庫,用於存儲創建的Python程式語言軟體開發人員和程式設計師,以用於公開和共享其軟體。與PyPI一起,通過PyPi-Install庫,您只需使用一個函數調用就可以將Python代碼上傳到PyPI。