【Python】14种方式,34个案例:对比SQL,学习Pandas操作
公眾號:尤而小屋
作者:Peter
編輯:Peter
本文主題:對比SQL,學習Pandas操作!
在SQL中查詢數據的時候我們所有各種操作,主要是通過select、where、group by等多個關鍵詞的組合查詢來實現的。本文中介紹的如何在相同的需求下,通過pandas來實現取數操作。
比較方向
查詢全部數據
前N條
后N條
中間段數據
部分字段
指定等式條件
指定不等式條件
取反操作
指定多個條件
指定計算等式
模糊查詢
排序
分組統計
取別名
參考資料
因為本文主要介紹的是如何通過pandas來獲取我們想要的數據,也是pandas的各種取數技巧,參考之前介紹的3篇文章:
各種騷氣的Pandas取數操作
贊!五花八門的Pandas篩選數據
最后一篇:玩轉Pandas取數
模擬數據
在數據庫中,我們先模擬了3份數據:
1、學生信息表
--?學生信息mysql>?select?*??from?Student; +------+--------+------------+-------+ |?s_id?|?s_name?|?s_birth????|?s_sex?| +------+--------+------------+-------+ |?01???|?趙雷???|?1990-01-01?|?男????| |?02???|?錢電???|?1990-12-21?|?男????| |?03???|?孫風???|?1990-05-20?|?男????| |?04???|?李云???|?1990-08-06?|?男????| |?05???|?周梅???|?1991-12-01?|?女????| |?06???|?吳蘭???|?1992-03-01?|?女????| |?07???|?鄭竹???|?1989-07-02?|?女????| |?08???|?王菊???|?1990-01-20?|?女????| +------+--------+------------+-------+ 8?rows?in?set?(0.00?sec)2、一份用戶表
3、一份水果商品價格表
下面開始介紹不同需求下基于pandas和SQL的取數實現
取出全部數據
SQL實現
select?*??from?Student;Pandas實現
前N條數據
SQL實現
查看前5條數據:
Pandas實現
head方法默認是前5條:
指定查看前7條數據:
后N條數據
select?*? from?(select?*?from?Student?order?by?s_id?desc?limit?5)t???--?臨時結果表:倒序輸出的最后5條 order?by?s_id;??--?再使用一次排序,將順序還原Pandas實現
tail方法默認是后5條:
指定查看4條
切片數據
SQL實現
Pandas實現
使用pandas中的切片來查看某個連續區間內的數據:
取出部分字段
SQL實現
Pandas實現
df1[["id","name","sex"]]??#?方式1df2.filter(items=["id","age","createtime"])???#?方式2指定等式條件
SQL實現
Pandas實現
df1[df1["sex"]?==?"男"]??#?方式1 df1.query('sex=="男"')???#?方式2指定id號或者年齡age:
指定不等式條件
SQL實現
select?*?from?Student?where?s_sex!=?"男"; select?*?from?user?where?age?>?18; select?*?from?user?where?id?<=?3;?Pandas實現
取反操作
SQL實現
mysql>?select?*?from?Student?where?s_sex?!=?"男";Pandas實現
指定多個條件
SQL實現
select?*?from?Student?where?s_birth?<="1991-01-01"?and??s_sex=?"男"; select?*?from?user?where?age?<?20?and?fee?>?60; select?*?from?user?where?age?<?20?and?fee?>?60;Pandas實現
指定計算等式
SQL實現
select?*?from?user?where?age?%?3?=?0;??--?年齡分別是3或者2的倍數 select?*?from?user?where?age?%?2?=?0;??Pandas實現
模糊查詢
SQL實現
SQL的關鍵詞是like:
左匹配
右匹配
全匹配
Pandas實現
排序
默認是升序,可以指定為降序
SQL實現
1、單個字段
select?*?from?Student?order?by?s_birth?desc;???--?改成升序2、多個字段的排序
Pandas實現
1、單個字段
2、多個字段
分組統計
SQL實現
通過group by 來進行分組統計:
Pandas實現
先看看df3的數據,一個水果會對應多個價格,我們水果的名稱對價格匯總:
df3.groupby("name").agg({"price":"sum"}).reset_index()??#?方式1df3.groupby("name")["price"].sum().reset_index()???#?方式2取別名
SQL實現
通過使用as 關鍵詞:
select?name?as??水果,?sum(price)?as??價格?from?products?group?by?name;Pandas實現
Pandas是通過rename函數來實現的:
df3.groupby("name").agg({"price":"sum"}).reset_index().rename(columns={"name":"水果","price":"價格"}) 往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯黃海廣老師《機器學習課程》課件合集 本站qq群851320808,加入微信群請掃碼:總結
以上是生活随笔為你收集整理的【Python】14种方式,34个案例:对比SQL,学习Pandas操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 亲爱的稻草人
- 下一篇: 电脑重装系统按哪个键