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

熱線電話:13121318867

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

作者 | 吹牛Z

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

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

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

  • 第一種是基于位置(整數(shù))的索引,案例短平快,有個(gè)粗略的了解即可,實(shí)際中偶有用到,但它的應(yīng)用范圍不如第二種廣泛。
  • 第二種是基于名稱(標(biāo)簽)的索引,這是要敲黑板練的重點(diǎn),因?yàn)樗鼘⑹俏覀兒竺孢M(jìn)行數(shù)據(jù)清洗和分析的重要基石。

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

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

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

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

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

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

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

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

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

目標(biāo):選擇“流量來源”等于“一級(jí)”的所有行。

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

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

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

目標(biāo):我們想要把所有渠道的流量來源和客單價(jià)單拎出來看一看。

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

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

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

場景三(行列交叉選?。?/span>

目標(biāo):我們想要看一看二級(jí)、三級(jí)流量來源、來源明細(xì)對應(yīng)的訪客和支付轉(zhuǎn)化率

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

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

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

為了建立起橫向?qū)Ρ鹊捏w感,我們依然沿用上面三個(gè)場景。

場景一:選擇一級(jí)渠道的所有行。

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

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

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

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

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

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

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

場景三:我們想要提取二級(jí)、三級(jí)流量來源、來源明細(xì)對應(yīng)的訪客和支付轉(zhuǎn)化率。

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

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

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

既然loc的應(yīng)用場景更加廣泛,應(yīng)該給他加個(gè)雞腿,再來個(gè)接地氣的場景練練手。

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

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

只需要加個(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)鍵。

先看看均值各是多少:

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

再判斷各指標(biāo)列是否大于均值:

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

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

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

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

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

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

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

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

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

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

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(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(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) 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){ //倒計(jì)時(shí)完成 $(".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); }