中国联通河南省分公司 师雪丽 欣 娜 魏利朋 孙慧珠
根据集团公司下发的《关于补充维护5G资源相关数据的通知》,要求各省分公司基于自动采集的5G无线网数据,在OSS2.0资源管理系统补充维护管理区域、关联机房或放置点等静态数据。由于在筛选统计的过程中,需要处理的数据量庞大,与利用Excel相比较,利用Python能够用更少的时间处理更大的数据集,实现自动化。本文通过对Python的Numpy及Pandas两个库的学习及应用,实现了无线网5G设备的自动化筛选统计,大大提高了工作效率。
本文使用Anaconda自带的Jupyter Notebook,基于Python的Numpy及Pandas两个库,对从OSS2.0资源管理系统提取的四张5G(GnodeB、CU、DU、AAU)资源数据表进行筛选及统计,实现了5G设备的自动化筛选统计。
本文实验主机为Windows 10系统,安装了Python 3.8.1及Anaconda3软件,在DOS环境下安装了Jupyter Notebook、Numpy、Pandas包。
(1)从OSS2.0资源管理系统提取GnodeB、CU、DU、AAU数据原始表,并将四张表格由“xls”格式转成“xlsx”格式,表格分别命名为:“GN.xlsx”、“CU.xlsx”、“DU.xlsx”、“AAU.xlsx”;
(2)将GnodeB、CU、DU、AAU数据原始表放到“当前工作目录”下;
(3)新建一个“空表.xlsx”,表里内容为一列,列名为“所属地市”,列的内容为地市名称(地市名称的排列顺序可根据需求自己定义和调整)。
分别对“GN.xlsx”、“CU.xlsx”、“DU.xlsx”、“AAU.xlsx”四张原始数据表进行筛选统计,并导出对应的“**筛选明细表.xlsx”及“**汇总表.xlsx”。
(1)GnodeB数据表“GN.xlsx”筛选统计步骤
2)读取表“GN.xlsx”表的内容;
3)筛选出“设备ID”、“设备名称”、“设备编码”、“所属管理区域”四列数据;
df1 = df[[‘设备ID’,’设备名称’,’设备编码’,’所属管理区域’]]
4)再次筛选出“所属管理区域”为“空值”的数据,并将索引重置;
5)对每一行的“设备名称”列中的值进行切片,取前两个字母,赋值给对应行的“所属管理区域”列;
6)将“所属管理区域”列中值的字母替换成相应的汉字;
df4 = df3[‘所属管理区域’].replace([‘DS1’,’DS2’],[ ‘地市1’,’地市2’])
7)按照“所属管理区域”中的地市值对GnodeB未关联设备数量进行汇总;
(2)AAU数据表“AAU.xlsx”筛选统计步骤
1)导入Numpy及Pandas库,并将Numpy及Pandas简称为np和pd;
2)读取表“AAU.xlsx”中两个sheet的内容;
4)筛选出“设备ID”、“设备编码”,“所属GNodeBDU”,“所属安置地点”四列数据;
5)再次筛选出“所属安置地点”为“空值”的数据,并将索引重置;
6)定义一个函数city(),通过“设备编码”的7位5G NODEBID值判断所属地市;
7)对每一行的“设备编码”列中的值进行切片,取有效的7位5G NODEBID的值,调用函数city()后,赋值给“所属安置地点”列;
8)按照“所属安置地点”中的地市值对AAU未关联设备数量进行汇总;
9)生成“AAU筛选明细表.xlsx”及“AAU汇总表”;(3)“CU.xlsx”、“DU.xlsx”表的筛选统计步骤参照(1)中“GN.xlsx”筛选统计步骤。
生成“5G未关联设备统计汇总表.xlsx”表的步骤:
(1)导入Numpy及Pandas库,并将Numpy及Pandas简称为np和pd;
(2)读取四张筛选明细表、四张汇总表以及18地市“空表”内容;
(3)重命名四张汇总表的列名;
(4)以“空表”为参照,将四张汇总表与“空表”拼接成一个汇总表;
(5)将总的汇总表“空值”置零,并将设备(GN、CU、DU、AAU)数量列的数值类型转换成“int”类型;
(6)将总汇总表每行进行求和后生成“总数”列,然后对“总数”列按照降序排列;
(7)将四张筛选明细表及步骤(6)生成的总汇总表保存到一个名为“5G未关联设备统计汇总表.xlsx”的Excel表里,表中包括5个sheet,sheet名分别为:“GN”、“CU”、“DU”、“AAU”、“汇总”。
最终生成的“5G未关联设备统计汇总表.xlsx”表格中GN及汇总两个sheet的内容如图1、图2所示,由于CU、DU及AAU三个sheet的内容与GN内容相似,本文就不再展示了。
图1 GN表内容
图2 汇总表内容
本文实验的一个关键步骤是设备“所属地市”的判断,通过观察,GnodeB、CU、DU、AAU设备均可以通过“设备名称(所属GNodeBDU)”的前两个字母或“设备编码”的7位5G NODEBID值来判断“所属地市”。因此判断“所属地市”的方法就有多种组合。在实验过程中,我发现“设备编码”的7位5G NODEBID的位置不固定,而“设备名称”、“所属GNodeBDU”这列的前两个字母位置是固定的。因此,实验初期,我采用“设备名称(所属GNodeBDU)”的前两个字母判断“所属地市”。但是在多次实验中,我发现“AAU.xlsx”数据表中“所属GNodeBDU”列的值经常会有缺失,经过综合考量,最终,确定采用本文:GnodeB、CU、DU设备按照“设备名称”,AAU设备按照“设备编码”判断“所属地市”的方法。
通过对比,在进行5G设备筛选统计工作中,处理相同的4张Excel表的数据,利用传统的Excel筛选统计方法,需要耗费至少40min的时间,而利用本文的python处理方法,只需要耗费不到4分钟的时间,大大节省了数据处理时间,提高了工作效率,本文的方法已在实际工作中得到应用。