熱線電話:13121318867

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

作者:派森醬

來源:Python技術

文 | ssw

來源:Python 技術「ID: pythonall」

我負責十多個地災項目,經常需要了解設備的離線情況。公司網站按項目提供了excel表格,看起來較亂,這是下載的數據:

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

  • 這個項目下有哪些設備類型
  • 每種類型有多少設備在線
  • 設備上線的時間順序

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

排序

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

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

輸出:

分組

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

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

輸出:

配色

  1. 一周內離線的設備,用藍色標注
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=['最后上線時間'],props='font-weight:bold;color:rgb(64, 158, 255)')

輸出:

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

輸出:

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

輸出:

腳本和數據文件

文件下載地址: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['最后上線時間']))new.index.name = 'last'new.sort_values('最后上線時間', ascending=True,inplace=True)new['設備類型'] = new['設備別名'].str.split('0').str[0].str.split(' ').str[0]new2 = new.groupby(['設備類型','最后上線時間','設備別名','連接狀態','所屬監測點'],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=['最后上線時間'],props='font-weight:bold;color:rgb(64, 158, 255)').highlight_between(left='普適型聲光報警器',right='普適型聲光報警器',subset=['設備類型'],props='background:#c7f5fe').highlight_between(left='普適型聲光報警器',right='聲光報警器',subset=['設備類型'],props='background:#c7f5fe').highlight_between(left='普適型GNSS基準站',right='普適型GNSS基準站',subset=['設備類型'],props='background:#ffa5a5').highlight_between(left='普適型GNSS基站',right='普適型GNSS基站',subset=['設備類型'],props='background:#ffa5a5').highlight_between(left='普適型GNSS監測站',right='普適型GNSS監測站',subset=['設備類型'],props='background:#a1eafb').highlight_between(left='普適型裂縫計',right='普適型裂縫計',subset=['設備類型'],props='background:#a6e3e9').highlight_between(left='普適型雨量計',right='普適型雨量計',subset=['設備類型'],props='background:#71c9ce').highlight_between(left='在線',right='在線',subset=['連接狀態'],props='background:#f9ed69').highlight_between(left='普適型變形樁',right='普適型變形樁',subset=['設備類型'],props='background:#cbf1f5')

總結

項目經理要我整理某個項目的離線表給他,修改下腳本里的sheet_name即可。是不是省事呢?

  • 省去登錄網站下載excel
  • 省去整理表格

如果你覺得本文對你有幫助,還請點個贊支持一下~

數據分析咨詢請掃描二維碼

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

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢