自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用Python做數(shù)據(jù)分析:Pandas常用數(shù)據(jù)查詢(xún)語(yǔ)法

開(kāi)發(fā) 開(kāi)發(fā)工具 后端
在使用Pandas之前,大多數(shù)數(shù)據(jù)分析師已經(jīng)掌握了Excel和SQL,并且在剛上手Pandas時(shí)會(huì)經(jīng)常習(xí)慣性想到“老辦法”。本文就是一些基礎(chǔ)的Pandas數(shù)據(jù)查詢(xún)操作。

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

用Python做數(shù)據(jù)分析:Pandas常用數(shù)據(jù)查詢(xún)語(yǔ)法

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

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

六列的dataframe

1. 新增列-基于原有列的全年銷(xiāo)售額

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

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

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

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

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

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

3. 排序 - 誰(shuí)是銷(xiāo)售冠軍

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

排序 - 誰(shuí)是銷(xiāo)售冠軍

排序 - 誰(shuí)是銷(xiāo)售冠軍

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

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

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

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

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

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

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

5. 切片 - 多條件篩選

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

切片 - 多條件篩選

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

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

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

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

二、連接

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

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

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

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

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

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

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

三、合并操作

***以最簡(jiǎn)單的一個(gè)合并操作收尾。

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

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

四、尾聲

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

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

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2021-04-09 23:00:12

SQL數(shù)據(jù)庫(kù)Pandas

2020-05-15 15:09:51

R語(yǔ)言數(shù)據(jù)分析

2017-07-06 15:44:33

2019-06-26 11:10:47

Python數(shù)據(jù)分析Excel

2020-08-30 14:29:01

Pandas數(shù)據(jù)分析函數(shù)

2024-01-09 13:58:22

PandasPython數(shù)據(jù)分析

2020-06-05 14:29:07

PythonPandas數(shù)據(jù)分析

2023-11-21 09:11:31

2023-01-28 10:09:00

Pandas數(shù)據(jù)分析Python

2015-06-15 12:58:39

大數(shù)據(jù)大數(shù)據(jù)查詢(xún)

2019-07-11 10:52:02

Python統(tǒng)計(jì)數(shù)據(jù)

2025-04-16 08:10:00

PandasPython數(shù)據(jù)分析

2023-12-29 10:04:47

數(shù)據(jù)分析

2019-09-02 15:12:46

Python 開(kāi)發(fā)數(shù)據(jù)分析

2022-11-11 11:35:14

2021-06-30 20:49:15

SQL子查詢(xún)數(shù)據(jù)

2017-05-19 08:45:34

R用戶(hù)Python數(shù)據(jù)分析

2017-08-03 15:20:19

大數(shù)據(jù)數(shù)據(jù)分析

2022-08-26 09:38:39

Pandas數(shù)據(jù)查詢(xún)

2022-09-07 15:47:21

數(shù)據(jù)分析對(duì)比分析大數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)