中國(guó)聯(lián)通河南省分公司 師雪麗 欣 娜 魏利朋 孫慧珠
根據(jù)集團(tuán)公司下發(fā)的《關(guān)于補(bǔ)充維護(hù)5G資源相關(guān)數(shù)據(jù)的通知》,要求各省分公司基于自動(dòng)采集的5G無線網(wǎng)數(shù)據(jù),在OSS2.0資源管理系統(tǒng)補(bǔ)充維護(hù)管理區(qū)域、關(guān)聯(lián)機(jī)房或放置點(diǎn)等靜態(tài)數(shù)據(jù)。由于在篩選統(tǒng)計(jì)的過程中,需要處理的數(shù)據(jù)量龐大,與利用Excel相比較,利用Python能夠用更少的時(shí)間處理更大的數(shù)據(jù)集,實(shí)現(xiàn)自動(dòng)化。本文通過對(duì)Python的Numpy及Pandas兩個(gè)庫(kù)的學(xué)習(xí)及應(yīng)用,實(shí)現(xiàn)了無線網(wǎng)5G設(shè)備的自動(dòng)化篩選統(tǒng)計(jì),大大提高了工作效率。
本文使用Anaconda自帶的Jupyter Notebook,基于Python的Numpy及Pandas兩個(gè)庫(kù),對(duì)從OSS2.0資源管理系統(tǒng)提取的四張5G(GnodeB、CU、DU、AAU)資源數(shù)據(jù)表進(jìn)行篩選及統(tǒng)計(jì),實(shí)現(xiàn)了5G設(shè)備的自動(dòng)化篩選統(tǒng)計(jì)。
本文實(shí)驗(yàn)主機(jī)為Windows 10系統(tǒng),安裝了Python 3.8.1及Anaconda3軟件,在DOS環(huán)境下安裝了Jupyter Notebook、Numpy、Pandas包。
(1)從OSS2.0資源管理系統(tǒng)提取GnodeB、CU、DU、AAU數(shù)據(jù)原始表,并將四張表格由“xls”格式轉(zhuǎn)成“xlsx”格式,表格分別命名為:“GN.xlsx”、“CU.xlsx”、“DU.xlsx”、“AAU.xlsx”;
(2)將GnodeB、CU、DU、AAU數(shù)據(jù)原始表放到“當(dāng)前工作目錄”下;
(3)新建一個(gè)“空表.xlsx”,表里內(nèi)容為一列,列名為“所屬地市”,列的內(nèi)容為地市名稱(地市名稱的排列順序可根據(jù)需求自己定義和調(diào)整)。
分別對(duì)“GN.xlsx”、“CU.xlsx”、“DU.xlsx”、“AAU.xlsx”四張?jiān)紨?shù)據(jù)表進(jìn)行篩選統(tǒng)計(jì),并導(dǎo)出對(duì)應(yīng)的“**篩選明細(xì)表.xlsx”及“**匯總表.xlsx”。
(1)GnodeB數(shù)據(jù)表“GN.xlsx”篩選統(tǒng)計(jì)步驟
2)讀取表“GN.xlsx”表的內(nèi)容;
3)篩選出“設(shè)備ID”、“設(shè)備名稱”、“設(shè)備編碼”、“所屬管理區(qū)域”四列數(shù)據(jù);
df1 = df[[‘設(shè)備ID’,’設(shè)備名稱’,’設(shè)備編碼’,’所屬管理區(qū)域’]]
4)再次篩選出“所屬管理區(qū)域”為“空值”的數(shù)據(jù),并將索引重置;
5)對(duì)每一行的“設(shè)備名稱”列中的值進(jìn)行切片,取前兩個(gè)字母,賦值給對(duì)應(yīng)行的“所屬管理區(qū)域”列;
6)將“所屬管理區(qū)域”列中值的字母替換成相應(yīng)的漢字;
df4 = df3[‘所屬管理區(qū)域’].replace([‘DS1’,’DS2’],[ ‘地市1’,’地市2’])
7)按照“所屬管理區(qū)域”中的地市值對(duì)GnodeB未關(guān)聯(lián)設(shè)備數(shù)量進(jìn)行匯總;
(2)AAU數(shù)據(jù)表“AAU.xlsx”篩選統(tǒng)計(jì)步驟
1)導(dǎo)入Numpy及Pandas庫(kù),并將Numpy及Pandas簡(jiǎn)稱為np和pd;
2)讀取表“AAU.xlsx”中兩個(gè)sheet的內(nèi)容;
4)篩選出“設(shè)備ID”、“設(shè)備編碼”,“所屬GNodeBDU”,“所屬安置地點(diǎn)”四列數(shù)據(jù);
5)再次篩選出“所屬安置地點(diǎn)”為“空值”的數(shù)據(jù),并將索引重置;
6)定義一個(gè)函數(shù)city(),通過“設(shè)備編碼”的7位5G NODEBID值判斷所屬地市;
7)對(duì)每一行的“設(shè)備編碼”列中的值進(jìn)行切片,取有效的7位5G NODEBID的值,調(diào)用函數(shù)city()后,賦值給“所屬安置地點(diǎn)”列;
8)按照“所屬安置地點(diǎn)”中的地市值對(duì)AAU未關(guān)聯(lián)設(shè)備數(shù)量進(jìn)行匯總;
9)生成“AAU篩選明細(xì)表.xlsx”及“AAU匯總表”;(3)“CU.xlsx”、“DU.xlsx”表的篩選統(tǒng)計(jì)步驟參照(1)中“GN.xlsx”篩選統(tǒng)計(jì)步驟。
生成“5G未關(guān)聯(lián)設(shè)備統(tǒng)計(jì)匯總表.xlsx”表的步驟:
(1)導(dǎo)入Numpy及Pandas庫(kù),并將Numpy及Pandas簡(jiǎn)稱為np和pd;
(2)讀取四張篩選明細(xì)表、四張匯總表以及18地市“空表”內(nèi)容;
(3)重命名四張匯總表的列名;
(4)以“空表”為參照,將四張匯總表與“空表”拼接成一個(gè)匯總表;
(5)將總的匯總表“空值”置零,并將設(shè)備(GN、CU、DU、AAU)數(shù)量列的數(shù)值類型轉(zhuǎn)換成“int”類型;
(6)將總匯總表每行進(jìn)行求和后生成“總數(shù)”列,然后對(duì)“總數(shù)”列按照降序排列;
(7)將四張篩選明細(xì)表及步驟(6)生成的總匯總表保存到一個(gè)名為“5G未關(guān)聯(lián)設(shè)備統(tǒng)計(jì)匯總表.xlsx”的Excel表里,表中包括5個(gè)sheet,sheet名分別為:“GN”、“CU”、“DU”、“AAU”、“匯總”。
最終生成的“5G未關(guān)聯(lián)設(shè)備統(tǒng)計(jì)匯總表.xlsx”表格中GN及匯總兩個(gè)sheet的內(nèi)容如圖1、圖2所示,由于CU、DU及AAU三個(gè)sheet的內(nèi)容與GN內(nèi)容相似,本文就不再展示了。
圖1 GN表內(nèi)容
圖2 匯總表內(nèi)容
本文實(shí)驗(yàn)的一個(gè)關(guān)鍵步驟是設(shè)備“所屬地市”的判斷,通過觀察,GnodeB、CU、DU、AAU設(shè)備均可以通過“設(shè)備名稱(所屬GNodeBDU)”的前兩個(gè)字母或“設(shè)備編碼”的7位5G NODEBID值來判斷“所屬地市”。因此判斷“所屬地市”的方法就有多種組合。在實(shí)驗(yàn)過程中,我發(fā)現(xiàn)“設(shè)備編碼”的7位5G NODEBID的位置不固定,而“設(shè)備名稱”、“所屬GNodeBDU”這列的前兩個(gè)字母位置是固定的。因此,實(shí)驗(yàn)初期,我采用“設(shè)備名稱(所屬GNodeBDU)”的前兩個(gè)字母判斷“所屬地市”。但是在多次實(shí)驗(yàn)中,我發(fā)現(xiàn)“AAU.xlsx”數(shù)據(jù)表中“所屬GNodeBDU”列的值經(jīng)常會(huì)有缺失,經(jīng)過綜合考量,最終,確定采用本文:GnodeB、CU、DU設(shè)備按照“設(shè)備名稱”,AAU設(shè)備按照“設(shè)備編碼”判斷“所屬地市”的方法。
通過對(duì)比,在進(jìn)行5G設(shè)備篩選統(tǒng)計(jì)工作中,處理相同的4張Excel表的數(shù)據(jù),利用傳統(tǒng)的Excel篩選統(tǒng)計(jì)方法,需要耗費(fèi)至少40min的時(shí)間,而利用本文的python處理方法,只需要耗費(fèi)不到4分鐘的時(shí)間,大大節(jié)省了數(shù)據(jù)處理時(shí)間,提高了工作效率,本文的方法已在實(shí)際工作中得到應(yīng)用。