您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Pandas常用的索引方式有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
結合場景詳細介紹兩種常用的索引方式:
第一種是基于位置(整數)的索引,案例短平快,有個粗略的了解即可,實際中偶有用到,但它的應用范圍不如第二種廣泛。
第二種是基于名稱(標簽)的索引,這是要敲黑板練的重點,因為它將是我們后面進行數據清洗和分析的重要基石。
首先,簡單介紹一下練習的案例數據:
流量來源 | 來源明細 | 訪客數 | 支付轉化率 | 客單價 |
---|---|---|---|---|
一級 | -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% |
和第一篇數據集一樣,記錄著不同流量來源下,各渠道來源明細所對應的訪客數、支付轉化率和客單價。數據集雖然簡短(復雜的案例數據集在基礎篇完結后會如約而至),但是有足夠的代表性,下面開始我們索引的表演。
先看一下索引的操作方式:
df.iloc[行索引,列索引]
第一個位置是行索引,輸入我們要取哪幾行位置的參數
第二個位置是列索引,輸入我們要取哪幾列的位置參數
我們需要根據實際情況,填入對應的行參數和列參數。
目標
:選擇流量來源
等于一級
的所有行。
思路
:手指戳屏幕數一數,一級的渠道,是從第1行到第13行,對應行索引是0-12,但Python切片默認是含首不含尾的,要想選取0-12的索引行,我們得輸入0:13
,列想要全部選取,則輸入冒號:
即可。
目標
:我們想要把所有渠道的流量來源和客單價單拎出來看一看。
思路
:所有流量渠道,也就是所有行,在第一個行參數的位置我們輸入:
;再看列,流量來源是第1列,客單價是第5列,對應的列索引分別是0和4:
值得注意的是,如果我們要跨列選取,得先把位置參數構造成列表形式,這里就是[0,4],如果是連續選取
,則無需構造成列表,直接輸入0:5
(選取索引為0的列到索引為4的列)就好。
目標:我們想要看一看二級、三級流量來源、來源明細對應的訪客和支付轉化率
思路:先看行,二級三級渠道對應行索引是13:17,再次強調索引含首不含尾
的原則,我們傳入的行參數是13:18;列的話我們需要流量來源、來源明細、訪客和轉化,也就是前4列,傳入參數0:4。
為了建立起橫向對比的體感,我們依然沿用上面三個場景。
思路:這次我們不用一個個數位置了,要篩選流量渠道為一級
的所有行,只需做一個判斷,判斷流量來源這一列,哪些值等于一級
。
返回的結果由True和False(布爾型)構成,在這個例子中分別代表結果等于一級和非一級。在loc方法中,我們可以把這一列判斷得到的值傳入行參數位置,Pandas會默認返回結果為True的行(這里是索引從0到12的行),而丟掉結果為False的行,直接上例子:
思路
:所有渠道等于所有行,我們在行參數位置直接輸入:
,要提取流量來源和客單價列,直接輸入名稱到列參數位置,由于這里涉及到兩列,所以得用列表包起來:
思路
:行提取用判斷,列提取輸入具體名稱參數。
df2.loc[df2['流量來源'].isin(['二級','三級']),['流量來源','來源明細','訪客數','支付轉化率']]
此處插播一條isin
函數的廣告,這個函數能夠幫助我們快速判斷源數據中某一列(Series)的值是否等于列表中的值。拿案例來說,df[‘流量來源’].isin([‘二級’,‘三級’]),判斷的是流量來源這一列的值,是否等于“二級”或者“三級”,如果等于(等于任意一個)就返回True,否則返回False。我們再把這個布爾型判斷結果傳入行參數,就能夠很容易的得到流量來源等于二級或者三級的渠道。
既然loc的應用場景更加廣泛,應該給他加個雞腿,再來個接地氣的場景練練手。
插入場景之前,我們先花30秒的時間捋一捋Pandas中列(Series)向求值的用法,具體操作如下:
df2['訪客數'].mean()df2['訪客數'].std()df2['訪客數'].median()df2['訪客數'].max()df2['訪客數'].min()
只需要加個尾巴,均值、標準差等統計數值就出來了,了解完這個,下面正式進入場景四。
場景四:對于流量渠道數據,我們真正應該關注的是優質渠道,假如這里我們定義訪客數、轉化率、客單價都高于平均值渠道是優質渠道,那怎么找到這些渠道呢?
思路:優質渠道,得同時滿足訪客、轉化、客單高于平均值這三個條件,這是解題的關鍵。先看看均值各是多少:
再判斷各指標列是否大于均值:
df2['訪客數'] > df2['訪客數'].mean()df2['支付轉化率']> df2['支付轉化率'].mean()df2['客單價'] > df2['客單價'].mean()
要三個條件同時滿足,他們之間是一個“且”的關系(同時滿足),在pandas中,要表示同時滿足,各條件之間要用&
符號連接,條件內部最好用括號區分;如果是或
的關系(滿足一個即可),則用|
符號連接:
(df2['訪客數'] > df2['訪客數'].mean())&(df2['支付轉化率']> df2['支付轉化率'].mean())&(df2['客單價'] > df2['客單價'].mean())
這樣連接之后,返回True則表示該渠道同時滿足訪客、轉化率、客單價都高于均值的條件,接下來我們只需要把這些值傳入到行參數的位置。
df2.loc[(df2['訪客數'] > df2['訪客數'].mean())&(df2['支付轉化率']> df2['支付轉化率'].mean())&(df2['客單價'] > df2['客單價'].mean()),:]
到這一步,我們直接篩選出了4條關鍵指標都高于均值的優質渠道。
用的是pandas.ix[行,列],不過新版pandas已經不建議使用改方法了,還是建議使用要不1要不2。
關于“Pandas常用的索引方式有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。