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

熱線電話:13121318867

登錄
首頁精彩閱讀不止高效,原來pandas表格可以更美的
不止高效,原來pandas表格可以更美的
2022-08-18
收藏

作者:派森醬

來源:Python技術(shù)

文 | ssw

來源:Python 技術(shù)「ID: pythonall」

我負(fù)責(zé)十多個(gè)地災(zāi)項(xiàng)目,經(jīng)常需要了解設(shè)備的離線情況。公司網(wǎng)站按項(xiàng)目提供了excel表格,看起來較亂,這是下載的數(shù)據(jù):

從原始表格里,不太容易看出這些信息:

  • 這個(gè)項(xiàng)目下有哪些設(shè)備類型
  • 每種類型有多少設(shè)備在線
  • 設(shè)備上線的時(shí)間順序

這是用腳本,將數(shù)據(jù)排序分組配色后的效果(腳本和數(shù)據(jù)文件見文末)

排序

先將“最后上線時(shí)間”一列設(shè)置為行索引,使用pd.to_datetime轉(zhuǎn)換為datetime類型,再排序

import pandas as pdfrom datetime import datetime,timedeltadf2 = pd.read_excel("C:/sf3/sf3/excel/1170_04-28.xlsx",sheet_name="邵陽")#將“最后上線時(shí)間”一列設(shè)置為行索引new = df2.set_index(pd.to_datetime(df2['最后上線時(shí)間']))#新列重命名new.index.name = 'last'#按時(shí)間排序new.sort_values('最后上線時(shí)間', ascending=True,inplace=True)

輸出:

分組

分組可以從“設(shè)備別名”這列獲取,新增一列“設(shè)備類型”

#新增一列“設(shè)備類型”new['設(shè)備類型'] = new['設(shè)備別名'].str.split('0').str[0].str.split(' ').str[0]new2 = new.groupby(['設(shè)備類型','最后上線時(shí)間','設(shè)備別名','連接狀態(tài)','所屬監(jiān)測點(diǎn)'],as_index=False)new3 = new2.all()

輸出:

配色

  1. 一周內(nèi)離線的設(shè)備,用藍(lán)色標(biāo)注
now = datetime.now().strftime('%Y-%m-%d')sevenDaysAgo = (datetime.now() + timedelta(days=-7)).strftime('%Y-%m-%d')new3.style.highlight_between(left=sevenDaysAgo,right=now,subset=['最后上線時(shí)間'],props='font-weight:bold;color:rgb(64, 158, 255)')

輸出:

  1. 給每種類型加上顏色
new3.style.highlight_between(left=sevenDaysAgo,right=now,subset=['最后上線時(shí)間'],props='font-weight:bold;color:rgb(64, 158, 255)').highlight_between(left='普適型聲光報(bào)警器',right='普適型聲光報(bào)警器',subset=['設(shè)備類型'],props='background:#c7f5fe').highlight_between(left='普適型聲光報(bào)警器',right='聲光報(bào)警器',subset=['設(shè)備類型'],props='background:#c7f5fe').highlight_between(left='普適型GNSS基準(zhǔn)站',right='普適型GNSS基準(zhǔn)站',subset=['設(shè)備類型'],props='background:#ffa5a5').highlight_between(left='普適型GNSS監(jiān)測站',right='普適型GNSS監(jiān)測站',subset=['設(shè)備類型'],props='background:#a1eafb')

輸出:

  1. 在線狀態(tài)的設(shè)備,用黃色標(biāo)注
.highlight_between(left='在線',right='在線',subset=['連接狀態(tài)'],props='background:#f9ed69')

輸出:

腳本和數(shù)據(jù)文件

文件下載地址:http://ssw.fit/file/

import pandas as pdfrom datetime import datetime,timedeltadf2 = pd.read_excel("C:/sf3/sf3/excel/1170_07-28.xlsx",sheet_name="邵陽")new = df2.set_index(pd.to_datetime(df2['最后上線時(shí)間']))new.index.name = 'last'new.sort_values('最后上線時(shí)間', ascending=True,inplace=True)new['設(shè)備類型'] = new['設(shè)備別名'].str.split('0').str[0].str.split(' ').str[0]new2 = new.groupby(['設(shè)備類型','最后上線時(shí)間','設(shè)備別名','連接狀態(tài)','所屬監(jiān)測點(diǎn)'],as_index=False)new3 = new2.all()now = datetime.now().strftime('%Y-%m-%d')sevenDaysAgo = (datetime.now() + timedelta(days=-7)).strftime('%Y-%m-%d')new3.style.highlight_between(left=sevenDaysAgo,right=now,subset=['最后上線時(shí)間'],props='font-weight:bold;color:rgb(64, 158, 255)').highlight_between(left='普適型聲光報(bào)警器',right='普適型聲光報(bào)警器',subset=['設(shè)備類型'],props='background:#c7f5fe').highlight_between(left='普適型聲光報(bào)警器',right='聲光報(bào)警器',subset=['設(shè)備類型'],props='background:#c7f5fe').highlight_between(left='普適型GNSS基準(zhǔn)站',right='普適型GNSS基準(zhǔn)站',subset=['設(shè)備類型'],props='background:#ffa5a5').highlight_between(left='普適型GNSS基站',right='普適型GNSS基站',subset=['設(shè)備類型'],props='background:#ffa5a5').highlight_between(left='普適型GNSS監(jiān)測站',right='普適型GNSS監(jiān)測站',subset=['設(shè)備類型'],props='background:#a1eafb').highlight_between(left='普適型裂縫計(jì)',right='普適型裂縫計(jì)',subset=['設(shè)備類型'],props='background:#a6e3e9').highlight_between(left='普適型雨量計(jì)',right='普適型雨量計(jì)',subset=['設(shè)備類型'],props='background:#71c9ce').highlight_between(left='在線',right='在線',subset=['連接狀態(tài)'],props='background:#f9ed69').highlight_between(left='普適型變形樁',right='普適型變形樁',subset=['設(shè)備類型'],props='background:#cbf1f5')

總結(jié)

項(xiàng)目經(jīng)理要我整理某個(gè)項(xiàng)目的離線表給他,修改下腳本里的sheet_name即可。是不是省事呢?

  • 省去登錄網(wǎng)站下載excel
  • 省去整理表格

如果你覺得本文對(duì)你有幫助,還請(qǐng)點(diǎn)個(gè)贊支持一下~

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

若不方便掃碼,搜微信號(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)證碼對(duì)象,之后可以使用它調(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ù)說明請(qǐng)參見: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); }