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

熱線電話:13121318867

登錄
首頁(yè)大數(shù)據(jù)時(shí)代 數(shù)據(jù)分析師教程《Python數(shù)據(jù)分析極簡(jiǎn)入門(mén)》第2節(jié) 8-1 Pandas 數(shù)據(jù)重塑 - 數(shù)據(jù)堆疊
數(shù)據(jù)分析師教程《Python數(shù)據(jù)分析極簡(jiǎn)入門(mén)》第2節(jié) 8-1 Pandas 數(shù)據(jù)重塑 - 數(shù)據(jù)堆疊
2024-08-27
收藏

《Python數(shù)據(jù)分析極簡(jiǎn)入門(mén)》

第2節(jié) 8-2 Pandas 數(shù)據(jù)重塑 - 數(shù)據(jù)堆疊

數(shù)據(jù)堆疊

df = pd.DataFrame({'專(zhuān)業(yè)': np.repeat(['數(shù)學(xué)與應(yīng)用數(shù)學(xué)''計(jì)算機(jī)''統(tǒng)計(jì)學(xué)','物理學(xué)'], 6),
                   '班級(jí)': ['1班','2班','3班']*8,
                   '科目': ['高數(shù)''線代'] * 12,
                   '平均分': [random.randint(60,100for i in range(24)],
                   '及格人數(shù)': [random.randint(30,50for i in range(24)]})

df2 = pd.pivot_table(df, index=['專(zhuān)業(yè)','科目'],  values=['及格人數(shù)','平均分'],
               aggfunc={'及格人數(shù)':np.sum,"平均分":np.mean})
df2
及格人數(shù) 平均分
專(zhuān)業(yè) 科目
數(shù)學(xué)與應(yīng)用數(shù)學(xué) 線代 107 76.000000
高數(shù) 107 65.000000
物理學(xué) 線代 111 82.333333
高數(shù) 115 78.666667
統(tǒng)計(jì)學(xué) 線代 107 71.000000
高數(shù) 122 74.000000
計(jì)算機(jī) 線代 122 78.333333
高數(shù) 137 74.000000
stacked = df2.stack()

壓縮”后的DataFrameSeries(具有MultiIndex作為索引), stack() 的逆操作是unstack(),默認(rèn)情況下取消最后壓縮的那個(gè)級(jí)別:

堆疊stack(),顧名思義就是把透視結(jié)果堆到一起。接下來(lái)我們把透視后堆疊的數(shù)據(jù)一步步展開(kāi)unstack()

stacked.unstack()
及格人數(shù) 平均分
專(zhuān)業(yè) 科目
數(shù)學(xué)與應(yīng)用數(shù)學(xué) 線代 107.0 76.000000
高數(shù) 107.0 65.000000
物理學(xué) 線代 111.0 82.333333
高數(shù) 115.0 78.666667
統(tǒng)計(jì)學(xué) 線代 107.0 71.000000
高數(shù) 122.0 74.000000
計(jì)算機(jī) 線代 122.0 78.333333
高數(shù) 137.0 74.000000
stacked.unstack(level=1)
科目 線代 高數(shù)
專(zhuān)業(yè)
數(shù)學(xué)與應(yīng)用數(shù)學(xué) 及格人數(shù) 107.000000 107.000000
平均分 76.000000 65.000000
物理學(xué) 及格人數(shù) 111.000000 115.000000
平均分 82.333333 78.666667
統(tǒng)計(jì)學(xué) 及格人數(shù) 107.000000 122.000000
平均分 71.000000 74.000000
計(jì)算機(jī) 及格人數(shù) 122.000000 137.000000
平均分 78.333333 74.000000
stacked.unstack(level=0)
專(zhuān)業(yè) 數(shù)學(xué)與應(yīng)用數(shù)學(xué) 物理學(xué) 統(tǒng)計(jì)學(xué) 計(jì)算機(jī)
科目
線代 及格人數(shù) 107.0 111.000000 107.0 122.000000
平均分 76.0 82.333333 71.0 78.333333
高數(shù) 及格人數(shù) 107.0 115.000000 122.0 137.000000
平均分 65.0 78.666667 74.0 74.000000

數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼

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

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢(xún)
客服在線
立即咨詢(xún)
') } 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)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(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ù)說(shuō)明請(qǐng)參見(jiàn):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 = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+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); }