日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
用Python做數(shù)據(jù)分析:Pandas常用數(shù)據(jù)查詢語法

在使用Pandas之前,大多數(shù)數(shù)據(jù)分析師已經(jīng)掌握了Excel和SQL,并且在剛上手Pandas時(shí)會經(jīng)常習(xí)慣性想到“老辦法”。"如果誰能把常用的數(shù)據(jù)查詢語法做個對比就好了 ",我也曾不止一次地想享受前人的成果,無奈發(fā)現(xiàn)網(wǎng)上的文章側(cè)重不同且深淺不一,還涉及到一些Pandas新老版本的問題,于是決定自己動手。

目前創(chuàng)新互聯(lián)建站已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站運(yùn)營、企業(yè)網(wǎng)站設(shè)計(jì)、魯山網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

一、舉例的數(shù)據(jù)

假設(shè)我有個六列的dataframe:一列是銷售員,一列是所屬團(tuán)隊(duì),其它四列分別是四個季度的銷售額。

1. 新增列-基于原有列的全年銷售額

首先df['Total ']確保了你在該df內(nèi)新增了一個column,然后累加便可。

 
 
 
 
  1. df['Total']  = df['Q1']+df['Q2']+df['Q3']+df['Q4']

你可能想使用諸如sum()的函數(shù)進(jìn)行這步,很可惜,sum()方法只能對列進(jìn)行求和,幸好它可以幫我們求出某季度的總銷售額。df['Q1'].sum(),你就能得到一個Q1的總銷售額,除此之外,其他的聚合函數(shù),max,min,mean都是可行的。

2. 分組統(tǒng)計(jì) - 團(tuán)隊(duì)競賽

那么按團(tuán)隊(duì)進(jìn)行統(tǒng)計(jì)呢?在mysql里是group by,Pandas里也不例外,你只需要df.groupby('Team').sum()就能看到期望的答案了。

3. 排序 - 誰是銷售冠軍

如果你關(guān)心誰的全年銷售額最多,那么就要求助于sort_values方法了,在excel內(nèi)是右鍵篩選,SQL內(nèi)是一個orderby。默認(rèn)是順序排列的,所以要人為設(shè)定為False,如果你只想看***名,只需要在該語句末尾添加.head(1) 。

4. 切片-只給我看我關(guān)心的行

接下來就是涉及一些條件值的問題,例如我只關(guān)心Team為A的數(shù)據(jù),在Excel里是篩選框操作,在SQL里寫個where就能搞定,在Pandas里需要做切片。

查看Pandas文檔時(shí),你可能已經(jīng)見過各種切片的函數(shù)了,有l(wèi)oc,iloc,ix,iy,這里不會像教科書一樣所有都講一通讓讀者搞混。這種根據(jù)列值選取行數(shù)據(jù)的查詢操作,推薦使用loc方法。

df.loc[df['Team']== 'A',['Salesman', 'Team','Year']],這里用SQL語法理解更方便,loc內(nèi)部逗號前面可以理解為where,逗號后可以理解為select的字段。

如果想全選出,那么只需將逗號連帶后面的東西刪除作為缺省,即可達(dá)到select *的效果。

5. 切片 - 多條件篩選

在Pandas中多條件切片的寫法會有些繁瑣,df.loc[ (df['Team']== 'A' ) & (df['Total'] > 15000 ) ],添加括號與條件符。

這里有一個有意思的小應(yīng)用,如果你想給符合某些條件的員工打上優(yōu)秀的標(biāo)簽,你就可以結(jié)合上述新增列和切片兩點(diǎn),進(jìn)行條件賦值操作。

 
 
 
 
  1. df.loc[ (df['Team']== 'A' ) & (df['Total'] > 15000 ) , 'Tag']  = 'Good'

6. 刪除列 - 和查詢無關(guān),但是很有用

當(dāng)然這里只是個舉例,這時(shí)候我想刪除Tag列,可以del df['Tag'],又回到了之前。

二、連接

接下來要講join了,現(xiàn)在有每小時(shí)銷售員的職位對應(yīng)表pos,分為Junior和Senior,要將他們按對應(yīng)關(guān)系查到df中。

這里需要認(rèn)識一下新朋友,merge方法,將兩張表作為前兩個輸入,再定義連接方式和對應(yīng)鍵。對應(yīng)到Excel中是Vlookup,SQL中就是join。在pandas里的連接十分簡單。

 
 
 
 
  1. df =  pd.merge(df, pos, how='inner', on='Salesman')

注意,這個時(shí)候其實(shí)我們是得到了新的df,如果不想覆蓋掉原有的df,你可以在等號左邊對結(jié)果重新命名。

這時(shí)候有了兩組標(biāo)簽列(對應(yīng)數(shù)值列),就可以進(jìn)行多重groupby了。

當(dāng)然這樣的結(jié)果并不能公平地反應(yīng)出哪一組更好,因?yàn)槊拷M的組員人數(shù)不同,可能有平均數(shù)的參與會顯得更合理,并且我們只想依據(jù)全年綜合來評價(jià)。

這里的數(shù)據(jù)是捏造的,不過也一目了然了。

三、合并操作

***以最簡單的一個合并操作收尾。

如果我又有一批數(shù)據(jù)df2,需要將兩部分?jǐn)?shù)據(jù)合并。只需要使用concat方法,然后傳一個列表作為參數(shù)即可。不過前提是必須要保證他們具有相同類型的列,即使他們結(jié)構(gòu)可能不同(df2的Team列在末尾,也不會影響concat結(jié)果,因?yàn)閜andas具有自動對齊的功能)。

 
 
 
 
  1. pd.concat([df,df2])

四、尾聲

以上就是一些基礎(chǔ)的Pandas數(shù)據(jù)查詢操作了。作為Pandas初學(xué)者,如果能善用類比遷移的方法進(jìn)行學(xué)習(xí)并進(jìn)行總結(jié)是大有裨益的。如果看完本文還沒有能了解到你關(guān)心的查詢方法,可以留言聯(lián)系,或許還可以有續(xù)集。

【本文是專欄機(jī)構(gòu)“豈安科技”的原創(chuàng)文章,轉(zhuǎn)載請通過微信公眾號(bigsec)聯(lián)系原作者】


本文題目:用Python做數(shù)據(jù)分析:Pandas常用數(shù)據(jù)查詢語法
當(dāng)前路徑:http://www.dlmjj.cn/article/djoidcg.html