99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas
Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas
2019-10-11
收藏
Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

作者 | 吹牛Z

來源 | 數(shù)據(jù)不吹牛

據(jù)某數(shù)據(jù)來源統(tǒng)計,學習了Pandas的同學,有超過60%仍然投向了Excel的懷抱,之所以做此下策,多半是因為剛開始用Python處理數(shù)據(jù)時,選擇想要的行和列實在太痛苦,完全沒有Excel想要哪里點哪里的快感。

初識Pandas最基礎的列向索引在這里就不多加介紹了,今天我們給大家介紹的是,結合場景詳細介紹兩種常用的索引方式:

  • 第一種是基于位置(整數(shù))的索引,案例短平快,有個粗略的了解即可,實際中偶有用到,但它的應用范圍不如第二種廣泛。
  • 第二種是基于名稱(標簽)的索引,這是要敲黑板練的重點,因為它將是我們后面進行數(shù)據(jù)清洗和分析的重要基石。

首先,簡單介紹一下練習的案例數(shù)據(jù):

Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

和第一篇數(shù)據(jù)集一樣,記錄著不同流量來源下,各渠道來源明細所對應的訪客數(shù)、支付轉化率和客單價。數(shù)據(jù)集雖然簡短(復雜的案例數(shù)據(jù)集在基礎篇完結后會如約而至),但是有足夠的代表性,下面開始我們索引的表演。

Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

01 基于位置(數(shù)字)的索引

先看一下索引的操作方式:

Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

我們需要根據(jù)實際情況,填入對應的行參數(shù)和列參數(shù)。

場景一(行選?。?/span>

目標:選擇“流量來源”等于“一級”的所有行。

思路:手指戳屏幕數(shù)一數(shù),一級的渠道,是從第1行到第13行,對應行索引是0-12,但Python切片默認是含首不含尾的,要想選取0-12的索引行,我們得輸入“0:13”,列想要全部選取,則輸入冒號“:”即可。

Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

場景二(列選?。?/span>

目標:我們想要把所有渠道的流量來源和客單價單拎出來看一看。

思路:所有流量渠道,也就是所有行,在第一個行參數(shù)的位置我們輸入“:”;再看列,流量來源是第1列,客單價是第5列,對應的列索引分別是0和4:

Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

值得注意的是,如果我們要跨列選取,得先把位置參數(shù)構造成列表形式,這里就是[0,4],如果是連續(xù)選取,則無需構造成列表,直接輸入0:5(選取索引為0的列到索引為4的列)就好。

場景三(行列交叉選取)

目標:我們想要看一看二級、三級流量來源、來源明細對應的訪客和支付轉化率

思路:先看行,二級三級渠道對應行索引是13:17,再次強調索引含首不含尾的原則,我們傳入的行參數(shù)是13:18;列的話我們需要流量來源、來源明細、訪客和轉化,也就是前4列,傳入?yún)?shù)0:4。

Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

02 基于名稱(標簽)的索引

為了建立起橫向對比的體感,我們依然沿用上面三個場景。

場景一:選擇一級渠道的所有行。

思路:這次我們不用一個個數(shù)位置了,要篩選流量渠道為"一級"的所有行,只需做一個判斷,判斷流量來源這一列,哪些值等于"一級"。

Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

返回的結果由True和False(布爾型)構成,在這個例子中分別代表結果等于一級和非一級。在loc方法中,我們可以把這一列判斷得到的值傳入行參數(shù)位置,Pandas會默認返回結果為True的行(這里是索引從0到12的行),而丟掉結果為False的行,直接上例子:

Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

場景二:我們想要把所有渠道的流量來源和客單價單拎出來看一看。

思路:所有渠道等于所有行,我們在行參數(shù)位置直接輸入“:”,要提取流量來源和客單價列,直接輸入名稱到列參數(shù)位置,由于這里涉及到兩列,所以得用列表包起來:

Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

場景三:我們想要提取二級、三級流量來源、來源明細對應的訪客和支付轉化率。

思路:行提取用判斷,列提取輸入具體名稱參數(shù)。

Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

此處插播一條isin函數(shù)的廣告,這個函數(shù)能夠幫助我們快速判斷源數(shù)據(jù)中某一列(Series)的值是否等于列表中的值。拿案例來說,df['流量來源'].isin(['二級','三級']),判斷的是流量來源這一列的值,是否等于“二級”或者“三級”,如果等于(等于任意一個)就返回True,否則返回False。我們再把這個布爾型判斷結果傳入行參數(shù),就能夠很容易的得到流量來源等于二級或者三級的渠道。

既然loc的應用場景更加廣泛,應該給他加個雞腿,再來個接地氣的場景練練手。

插入場景之前,我們先花30秒的時間捋一捋Pandas中列(Series)向求值的用法,具體操作如下:

Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

只需要加個尾巴,均值、標準差等統(tǒng)計數(shù)值就出來了,了解完這個,下面正式進入場景四。

場景四:對于流量渠道數(shù)據(jù),我們真正應該關注的是優(yōu)質渠道,假如這里我們定義訪客數(shù)、轉化率、客單價都高于平均值渠道是優(yōu)質渠道,那怎么找到這些渠道呢?

思路:優(yōu)質渠道,得同時滿足訪客、轉化、客單高于平均值這三個條件,這是解題的關鍵。

先看看均值各是多少:

Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

再判斷各指標列是否大于均值:

Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

要三個條件同時滿足,他們之間是一個“且”的關系(同時滿足),在pandas中,要表示同時滿足,各條件之間要用"&"符號連接,條件內部最好用括號區(qū)分;如果是“或”的關系(滿足一個即可),則用“|”符號連接:

Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

這樣連接之后,返回True則表示該渠道同時滿足訪客、轉化率、客單價都高于均值的條件,接下來我們只需要把這些值傳入到行參數(shù)的位置。

Python數(shù)據(jù)分析實戰(zhàn)基礎(一):初識Pandas

到這一步,我們直接篩選出了4條關鍵指標都高于均值的優(yōu)質渠道。

這兩種索引方式,分別是基于位置(數(shù)字)的索引和基于名稱(標簽)的索引,關鍵在于把腦海中想要選取的行和列,映射到對應的行參數(shù)與列參數(shù)中去。

只要稍加練習,我們就能夠隨心所欲的用pandas處理和分析數(shù)據(jù),邁過了這一步之后,你會發(fā)現(xiàn)和Excel相比,Python是如此的美艷動人。

這是Python數(shù)據(jù)分析實戰(zhàn)基礎的第一篇內容,主要是和Pandas來個簡單的邂逅。已經(jīng)熟練掌握Pandas的同學,可以加快手速滑動瀏覽或者直接略過本文。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師考試動態(tài)
數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調,回調的第一個參數(shù)驗證碼對象,之后可以使用它調用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }