這篇文章將為大家詳細(xì)講解有關(guān)Pandas常用的索引方式有哪些,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的積石山保安族東鄉(xiāng)族網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
結(jié)合場景詳細(xì)介紹兩種常用的索引方式:
第一種是基于位置(整數(shù))的索引,案例短平快,有個(gè)粗略的了解即可,實(shí)際中偶有用到,但它的應(yīng)用范圍不如第二種廣泛。
第二種是基于名稱(標(biāo)簽)的索引,這是要敲黑板練的重點(diǎn),因?yàn)樗鼘⑹俏覀兒竺孢M(jìn)行數(shù)據(jù)清洗和分析的重要基石。
首先,簡單介紹一下練習(xí)的案例數(shù)據(jù):
流量來源 | 來源明細(xì) | 訪客數(shù) | 支付轉(zhuǎn)化率 | 客單價(jià) |
---|---|---|---|---|
一級 | -A | 35188 | 9.98% | 54.3 |
一級 | -B | 28467 | 11.27% | 99.93 |
一級 | -C | 13747 | 2.54% | 0.08 |
一級 | -D | 5183 | 2.47% | 37.15 |
一級 | -E | 4361 | 4.31% | 91.73 |
一級 | -F | 4063 | 11.57% | 65.09 |
一級 | -G | 2122 | 10.27% | 86.45 |
一級 | -H | 2041 | 7.06% | 44.07 |
一級 | -I | 1991 | 16.52% | 104.57 |
一級 | -J | 1981 | 5.75% | 75.93 |
一級 | -K | 1958 | 14.71% | 85.03 |
一級 | -L | 1780 | 13.15% | 98.87 |
一級 | -M | 1447 | 1.04% | 80.07 |
二級 | -A | 39048 | 11.60% | 91.91 |
二級 | -B | 3316 | 7.09% | 66.28 |
二級 | -C | 2043 | 5.04% | 41.91 |
三級 | -A | 23140 | 9.69% | 83.75 |
三級 | -B | 14813 | 20.14% | 82.97 |
四級 | -A | 216 | 1.85% | 94.25 |
四級 | -B | 31 | 0.00% | |
四級 | -C | 17 | 0.00% | |
四級 | -D | 3 | 0.00% |
和第一篇數(shù)據(jù)集一樣,記錄著不同流量來源下,各渠道來源明細(xì)所對應(yīng)的訪客數(shù)、支付轉(zhuǎn)化率和客單價(jià)。數(shù)據(jù)集雖然簡短(復(fù)雜的案例數(shù)據(jù)集在基礎(chǔ)篇完結(jié)后會(huì)如約而至),但是有足夠的代表性,下面開始我們索引的表演。
先看一下索引的操作方式:
df.iloc[行索引,列索引]
第一個(gè)位置是行索引,輸入我們要取哪幾行位置的參數(shù)
第二個(gè)位置是列索引,輸入我們要取哪幾列的位置參數(shù)
我們需要根據(jù)實(shí)際情況,填入對應(yīng)的行參數(shù)和列參數(shù)。
目標(biāo)
:選擇流量來源
等于一級
的所有行。
思路
:手指戳屏幕數(shù)一數(shù),一級的渠道,是從第1行到第13行,對應(yīng)行索引是0-12,但Python切片默認(rèn)是含首不含尾的,要想選取0-12的索引行,我們得輸入0:13
,列想要全部選取,則輸入冒號:
即可。
目標(biāo)
:我們想要把所有渠道的流量來源和客單價(jià)單拎出來看一看。思路
:所有流量渠道,也就是所有行,在第一個(gè)行參數(shù)的位置我們輸入:
;再看列,流量來源是第1列,客單價(jià)是第5列,對應(yīng)的列索引分別是0和4:
值得注意的是,如果我們要跨列選取,得先把位置參數(shù)構(gòu)造成列表形式,這里就是[0,4],如果是連續(xù)選取
,則無需構(gòu)造成列表,直接輸入0:5
(選取索引為0的列到索引為4的列)就好。
目標(biāo):我們想要看一看二級、三級流量來源、來源明細(xì)對應(yīng)的訪客和支付轉(zhuǎn)化率
思路:先看行,二級三級渠道對應(yīng)行索引是13:17,再次強(qiáng)調(diào)索引含首不含尾
的原則,我們傳入的行參數(shù)是13:18;列的話我們需要流量來源、來源明細(xì)、訪客和轉(zhuǎn)化,也就是前4列,傳入?yún)?shù)0:4。
為了建立起橫向?qū)Ρ鹊捏w感,我們依然沿用上面三個(gè)場景。
思路:這次我們不用一個(gè)個(gè)數(shù)位置了,要篩選流量渠道為一級
的所有行,只需做一個(gè)判斷,判斷流量來源這一列,哪些值等于一級
。
返回的結(jié)果由True和False(布爾型)構(gòu)成,在這個(gè)例子中分別代表結(jié)果等于一級和非一級。在loc方法中,我們可以把這一列判斷得到的值傳入行參數(shù)位置,Pandas會(huì)默認(rèn)返回結(jié)果為True的行(這里是索引從0到12的行),而丟掉結(jié)果為False的行,直接上例子:
思路
:所有渠道等于所有行,我們在行參數(shù)位置直接輸入:
,要提取流量來源和客單價(jià)列,直接輸入名稱到列參數(shù)位置,由于這里涉及到兩列,所以得用列表包起來:
思路
:行提取用判斷,列提取輸入具體名稱參數(shù)。
df2.loc[df2['流量來源'].isin(['二級','三級']),['流量來源','來源明細(xì)','訪客數(shù)','支付轉(zhuǎn)化率']]
此處插播一條isin
函數(shù)的廣告,這個(gè)函數(shù)能夠幫助我們快速判斷源數(shù)據(jù)中某一列(Series)的值是否等于列表中的值。拿案例來說,df[‘流量來源’].isin([‘二級’,‘三級’]),判斷的是流量來源這一列的值,是否等于“二級”或者“三級”,如果等于(等于任意一個(gè))就返回True,否則返回False。我們再把這個(gè)布爾型判斷結(jié)果傳入行參數(shù),就能夠很容易的得到流量來源等于二級或者三級的渠道。
既然loc的應(yīng)用場景更加廣泛,應(yīng)該給他加個(gè)雞腿,再來個(gè)接地氣的場景練練手。
插入場景之前,我們先花30秒的時(shí)間捋一捋Pandas中列(Series)向求值的用法,具體操作如下:
df2['訪客數(shù)'].mean()df2['訪客數(shù)'].std()df2['訪客數(shù)'].median()df2['訪客數(shù)'].max()df2['訪客數(shù)'].min()
只需要加個(gè)尾巴,均值、標(biāo)準(zhǔn)差等統(tǒng)計(jì)數(shù)值就出來了,了解完這個(gè),下面正式進(jìn)入場景四。
場景四:對于流量渠道數(shù)據(jù),我們真正應(yīng)該關(guān)注的是優(yōu)質(zhì)渠道,假如這里我們定義訪客數(shù)、轉(zhuǎn)化率、客單價(jià)都高于平均值渠道是優(yōu)質(zhì)渠道,那怎么找到這些渠道呢?
思路:優(yōu)質(zhì)渠道,得同時(shí)滿足訪客、轉(zhuǎn)化、客單高于平均值這三個(gè)條件,這是解題的關(guān)鍵。先看看均值各是多少:
再判斷各指標(biāo)列是否大于均值:
df2['訪客數(shù)'] > df2['訪客數(shù)'].mean()df2['支付轉(zhuǎn)化率']> df2['支付轉(zhuǎn)化率'].mean()df2['客單價(jià)'] > df2['客單價(jià)'].mean()
要三個(gè)條件同時(shí)滿足,他們之間是一個(gè)“且”的關(guān)系(同時(shí)滿足),在pandas中,要表示同時(shí)滿足,各條件之間要用&
符號連接,條件內(nèi)部最好用括號區(qū)分;如果是或
的關(guān)系(滿足一個(gè)即可),則用|
符號連接:
(df2['訪客數(shù)'] > df2['訪客數(shù)'].mean())&(df2['支付轉(zhuǎn)化率']> df2['支付轉(zhuǎn)化率'].mean())&(df2['客單價(jià)'] > df2['客單價(jià)'].mean())
這樣連接之后,返回True則表示該渠道同時(shí)滿足訪客、轉(zhuǎn)化率、客單價(jià)都高于均值的條件,接下來我們只需要把這些值傳入到行參數(shù)的位置。
df2.loc[(df2['訪客數(shù)'] > df2['訪客數(shù)'].mean())&(df2['支付轉(zhuǎn)化率']> df2['支付轉(zhuǎn)化率'].mean())&(df2['客單價(jià)'] > df2['客單價(jià)'].mean()),:]
到這一步,我們直接篩選出了4條關(guān)鍵指標(biāo)都高于均值的優(yōu)質(zhì)渠道。
用的是pandas.ix[行,列],不過新版pandas已經(jīng)不建議使用改方法了,還是建議使用要不1要不2。
關(guān)于“Pandas常用的索引方式有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。