【Python】14种方式,34个案例:对比SQL,学习Pandas操作
公眾號(hào):尤而小屋
作者:Peter
編輯:Peter
本文主題:對(duì)比SQL,學(xué)習(xí)Pandas操作!
在SQL中查詢數(shù)據(jù)的時(shí)候我們所有各種操作,主要是通過(guò)select、where、group by等多個(gè)關(guān)鍵詞的組合查詢來(lái)實(shí)現(xiàn)的。本文中介紹的如何在相同的需求下,通過(guò)pandas來(lái)實(shí)現(xiàn)取數(shù)操作。
比較方向
查詢?nèi)繑?shù)據(jù)
前N條
后N條
中間段數(shù)據(jù)
部分字段
指定等式條件
指定不等式條件
取反操作
指定多個(gè)條件
指定計(jì)算等式
模糊查詢
排序
分組統(tǒng)計(jì)
取別名
參考資料
因?yàn)楸疚闹饕榻B的是如何通過(guò)pandas來(lái)獲取我們想要的數(shù)據(jù),也是pandas的各種取數(shù)技巧,參考之前介紹的3篇文章:
各種騷氣的Pandas取數(shù)操作
贊!五花八門的Pandas篩選數(shù)據(jù)
最后一篇:玩轉(zhuǎn)Pandas取數(shù)
模擬數(shù)據(jù)
在數(shù)據(jù)庫(kù)中,我們先模擬了3份數(shù)據(jù):
1、學(xué)生信息表
--?學(xué)生信息mysql>?select?*??from?Student; +------+--------+------------+-------+ |?s_id?|?s_name?|?s_birth????|?s_sex?| +------+--------+------------+-------+ |?01???|?趙雷???|?1990-01-01?|?男????| |?02???|?錢電???|?1990-12-21?|?男????| |?03???|?孫風(fēng)???|?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、一份水果商品價(jià)格表
下面開(kāi)始介紹不同需求下基于pandas和SQL的取數(shù)實(shí)現(xiàn)
取出全部數(shù)據(jù)
SQL實(shí)現(xiàn)
select?*??from?Student;Pandas實(shí)現(xiàn)
前N條數(shù)據(jù)
SQL實(shí)現(xiàn)
查看前5條數(shù)據(jù):
Pandas實(shí)現(xiàn)
head方法默認(rèn)是前5條:
指定查看前7條數(shù)據(jù):
后N條數(shù)據(jù)
select?*? from?(select?*?from?Student?order?by?s_id?desc?limit?5)t???--?臨時(shí)結(jié)果表:倒序輸出的最后5條 order?by?s_id;??--?再使用一次排序,將順序還原Pandas實(shí)現(xiàn)
tail方法默認(rèn)是后5條:
指定查看4條
切片數(shù)據(jù)
SQL實(shí)現(xiàn)
Pandas實(shí)現(xiàn)
使用pandas中的切片來(lái)查看某個(gè)連續(xù)區(qū)間內(nèi)的數(shù)據(jù):
取出部分字段
SQL實(shí)現(xiàn)
Pandas實(shí)現(xiàn)
df1[["id","name","sex"]]??#?方式1df2.filter(items=["id","age","createtime"])???#?方式2指定等式條件
SQL實(shí)現(xiàn)
Pandas實(shí)現(xiàn)
df1[df1["sex"]?==?"男"]??#?方式1 df1.query('sex=="男"')???#?方式2指定id號(hào)或者年齡age:
指定不等式條件
SQL實(shí)現(xiàn)
select?*?from?Student?where?s_sex!=?"男"; select?*?from?user?where?age?>?18; select?*?from?user?where?id?<=?3;?Pandas實(shí)現(xiàn)
取反操作
SQL實(shí)現(xiàn)
mysql>?select?*?from?Student?where?s_sex?!=?"男";Pandas實(shí)現(xiàn)
指定多個(gè)條件
SQL實(shí)現(xiàn)
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實(shí)現(xiàn)
指定計(jì)算等式
SQL實(shí)現(xiàn)
select?*?from?user?where?age?%?3?=?0;??--?年齡分別是3或者2的倍數(shù) select?*?from?user?where?age?%?2?=?0;??Pandas實(shí)現(xiàn)
模糊查詢
SQL實(shí)現(xiàn)
SQL的關(guān)鍵詞是like:
左匹配
右匹配
全匹配
Pandas實(shí)現(xiàn)
排序
默認(rèn)是升序,可以指定為降序
SQL實(shí)現(xiàn)
1、單個(gè)字段
select?*?from?Student?order?by?s_birth?desc;???--?改成升序2、多個(gè)字段的排序
Pandas實(shí)現(xiàn)
1、單個(gè)字段
2、多個(gè)字段
分組統(tǒng)計(jì)
SQL實(shí)現(xiàn)
通過(guò)group by 來(lái)進(jìn)行分組統(tǒng)計(jì):
Pandas實(shí)現(xiàn)
先看看df3的數(shù)據(jù),一個(gè)水果會(huì)對(duì)應(yīng)多個(gè)價(jià)格,我們水果的名稱對(duì)價(jià)格匯總:
df3.groupby("name").agg({"price":"sum"}).reset_index()??#?方式1df3.groupby("name")["price"].sum().reset_index()???#?方式2取別名
SQL實(shí)現(xiàn)
通過(guò)使用as 關(guān)鍵詞:
select?name?as??水果,?sum(price)?as??價(jià)格?from?products?group?by?name;Pandas實(shí)現(xiàn)
Pandas是通過(guò)rename函數(shù)來(lái)實(shí)現(xiàn)的:
df3.groupby("name").agg({"price":"sum"}).reset_index().rename(columns={"name":"水果","price":"價(jià)格"}) 往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯黃海廣老師《機(jī)器學(xué)習(xí)課程》課件合集 本站qq群851320808,加入微信群請(qǐng)掃碼:總結(jié)
以上是生活随笔為你收集整理的【Python】14种方式,34个案例:对比SQL,学习Pandas操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 亲爱的稻草人
- 下一篇: websocket python爬虫_p