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

熱線電話:13121318867

登錄
首頁CDA發(fā)布如何巧妙地用python處理數(shù)據(jù)整理中分類匯總問題
如何巧妙地用python處理數(shù)據(jù)整理中分類匯總問題
2022-01-20
收藏

如何巧妙地用python處理數(shù)據(jù)整理中分類匯總問題

數(shù)據(jù)分析職場新人,精通一門語言至關重要。寫個web服務,可以用python、 寫個服務器腳本,可以用python、 數(shù)據(jù)清洗網(wǎng)絡爬蟲,可以用python、 做機器學習數(shù)據(jù)挖掘,可以用python等等,所以說人生苦短,我用Python。


下面的問題是數(shù)據(jù)整理中經(jīng)典的分類匯總問題,各個軟件,SAS、R語言甚至Excel都可以比較好地解決此問題,但Python解決此問題時,也可以做到“一劍封喉”,并體現(xiàn)出其獨特的優(yōu)勢,我們先看問題:


題目:下列數(shù)據(jù)來自某市房地產(chǎn)公司的資料,試按房屋類型和每一房屋類型下臥室個數(shù)的多少計算其平均售價?

問題比較清楚,這是一個按照“房屋類型”和“臥室個數(shù)的多少”的雙條件匯總問題,即考慮在A和B兩個條件下的數(shù)據(jù)分類匯總問題。該問題在工作中是常見的問題,如果在Excel完成,要依靠數(shù)據(jù)的預處理和較為復雜的函數(shù)來進行。


我們先來試算一下,比如,先看第5行,在“RANCH”這個房屋類型下,“BEDROOMS”個數(shù)為3的數(shù)據(jù)記錄總共有2條,即第“5”條和第“11”條,其房價分別是“$86,650”和“$89,100”,不難算出其平均價格為“$87,875”。


用Python的Pandas(專門進行數(shù)據(jù)處理的模塊)計算,首先面臨的問題是如何導入數(shù)據(jù),并且把房屋價格里面的“$”和“,”去掉,這樣才能進行計算。于是一個雙條件分類匯總的問題變成了字符處理的問題。


當然不可能手動去讀入數(shù)據(jù),最簡潔的方式是將數(shù)據(jù)選擇鼠標右鍵復制下來,然后這樣導入:


導入讓把所有的數(shù)據(jù)賦給“a”,“a”的數(shù)據(jù)結構看一下是:
      


告訴我們是“字符串”。面對字符串,進一步顯示“a”,發(fā)現(xiàn)其被“n”分割:


于是想辦法去掉“n”。去掉“n”不是很難,一句“a.split("n")”就可以去掉。但是進一步我們發(fā)現(xiàn),各個變量是以空格“ ”相連的,所以還要去掉這個空格以便進一步計算。這里利用Python常用的“逐行掃描”技巧來完成。通常前面要先定義一個空的list,比如b:


這一步完成之后,一定要看一下b的結果,如下圖所示:


下一步就是要去掉價格price里面的“$”和“,”了,這一步完成的方法比較多,最樸素的想法是用什么都沒有的“”去置換這2個元素:


這里又用到Python的“for”循環(huán)的“逐行掃描”的技巧。這一步將“b”變成:


到了這一步,離結果只有“一步之遙”了。為了保險起見,我們把所有的變量都“數(shù)值化”,使用下面的語句去遍歷:


得到如下的結果:


仔細比較一下前圖,發(fā)現(xiàn)字符串都變成了數(shù)字。

到了這時候,就是“臨門一腳”了,我們把數(shù)據(jù)整理成為我們熟悉的“數(shù)據(jù)框”的形式,這一步讓Pandas來上場,經(jīng)過整理之后,數(shù)據(jù)變得“賞心悅目”:


請注意,這條語句中,指明第一行是變量名。

通常,面臨這樣的數(shù)據(jù),要進行各種計算是非常方便的。比如,要完成一開始題目提出的問題,只需一句話即得結果:

     


這句“畫龍點睛”之筆是用groupby這個函數(shù)把數(shù)據(jù)按照2個條件分組,然后計算其均值?!?”加函數(shù)的方式是Python里面常用的形式。

我們看一下Python計算結果里面的“RANCH”和“3”,是“87875”,與我們之前計算的完全吻合。這樣我們就按要求用Python完成了該數(shù)據(jù)的整理匯總。

數(shù)據(jù)的整理匯總是進行數(shù)據(jù)分析和數(shù)據(jù)挖掘工作的前期準備,比較重要,往往占用很大一部分時間。數(shù)據(jù)清洗的能力有時候直接決定數(shù)據(jù)挖掘建模預測的成敗。通過該簡單的小例子,向大家展示了Python中的Pandas在這方面的優(yōu)勢和方法。當然,Python及Pandas神通廣大,遠遠不止做這些簡單的工作,希望大家掌握這個數(shù)據(jù)分析利器,在大數(shù)據(jù)時代更好更充分的發(fā)掘數(shù)據(jù)的價值。

PS:這只是課程中的一個小案例,強化的培訓,應該讓你學完后很自信,學以致用,快速上手解決工作中的問題,深圳現(xiàn)場班&長沙遠程直播班2018年1月12日開課,想學習python朋友私聊張老師。


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

若不方便掃碼,搜微信號: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(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應的接口 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); }