完成自己用于工作的小程序的感悟

完成自己用于工作的小程序的感悟,程序能完成我之前无法完成的操作。原先excel的难点操作:
1.两个字段,根据排列的顺序,联动操作,学了之后,发现可以用两个数组进行联动操作。
2.excel中提取有规律的复杂的文件中的字段,按照之前的方法用分裂的方法,结果无法想象,现在用了正则表达式,轻松搞定。
3.目前已经能够实现工作的内容了,有点小开心,
4.在自己写程序中感悟,学好语言还是要多实践,才会灵活运用,写程序中发现好多问题。
5.需要学会调试debug,
6.目前自己写的程序没有结构化(没有函数,类),没有面向对象(没有封装,没有用户接口),不易于阅读,还需要继续改进。
7.后期计划,需要系统学习,可以依据《Python编程:从入门到实践.pdf》
8.附上自己写的程序

`import pandas as pd
import re
frlist1=[] #放置未提取的频点组
frlist2=[] #2维数组放置频点组
pzlist=[] #放置配置号组

enodeblist=[] #放置enodebid组
cellidlist=[] #放置cellid组
celllist=[] #放置小区表enodebid

#获取文件路径,获取文件名,如果文件名等于正则表达式提取的关键字段,则

EUtranCellMea=pd.read_excel(r"E:\gaotie\EUtranCellMeasurementTDD_20200611_152143798_BatchData.xlsx",sheet_name=“EUtranCellMeasurementTDD”)
CellMeasGroupTDD=pd.read_excel(r"E:\gaotie\CellMeasGroupTDD_20200611_152318796_BatchData.xlsx",sheet_name=“CellMeasGroupTDD”)
EUtranCellTDD=pd.read_excel(r"E:\gaotie\EUtranCellTDD_20200611_152038695_BatchData.xlsx",sheet_name=“EUtranCellTDD”)
tongji=EUtranCellMea[[‘SubNetwork’,‘MEID’,‘description’,‘refCellMeasGroupTDD’,‘interFreqNum’,‘eutranMeasParas’]] #提取测量配置excel表格的列
tongji1=CellMeasGroupTDD[[‘MOI’,‘interFHOMeasCfg’,‘CellMeasGroupTDD’,‘meaGroupId’]] #提取表格的列
all_total=tongji.merge(tongji1,how=“left”,left_on=‘refCellMeasGroupTDD’,right_on=‘MOI’) #两表合并为总表
all_total=all_total.drop([0,1,2]).reset_index(drop=True) #总表删除0,1,2行
all_total=all_total.drop(columns=“MOI”,axis=1) #删除MOI列

tongji2=EUtranCellTDD[[“MOI”,“MEID”,“userLabel”,“cellLocalId”,“earfcn”]] #提取小区表信息
tongji2=tongji2.drop([0,1,2]).reset_index(drop=True) #删除小区表0,1,2行
for j in range(len(tongji2)): #正则表达式提取ENODEBID
celllist.append(re.findall(“ENBFunctionTDD=(\d+)”,tongji2.iloc[j,0]))
pdcelllist=pd.DataFrame(data=celllist) #数组转为DataFrame
tongji2=pd.concat([tongji2,pdcelllist],axis=1)
tongji2=tongji2.rename(columns={0:‘enodebid’}) #重命名列名
tongji2[‘enodebid-ci’]=tongji2.apply(lambda x:x[‘enodebid’]+’-’+x[‘cellLocalId’],axis=1)
del tongji2[“MEID”] #删除MEID
del tongji2[“enodebid”] #删除enodebid

for i in range(len(all_total)):
frlist2.append(re.findall(“interCarriFreq=(\d+.?\d)”,all_total.iloc[i,5])) #正则表达式提取频点,放入二维数组frlist2
pzlist.append(all_total.iloc[i, 6].split(’;’)) #分裂提取配置号
frlist1.append(all_total.iloc[i,5].split(’}, {’)) #分裂原始频点组
enodeblist.append(re.findall(“ENBFunctionTDD=(\d+)”, all_total.iloc[i, 3])) # 正则表达式提取enodebid
cellidlist.append(re.findall(“cellLocalId=(\d+)”, all_total.iloc[i, 2])) # 正则表达式提取cellidlist

r=0
c=0
count=[0]*len(frlist2) #计算高铁频点个数
del_gaotie_fr=[’’]*len(frlist2) #放入删除的高铁频点
new_frlist1=[’’]*len(frlist2) #放置修改后频点组,并且定义
for r in range(len(frlist2)): #遍历数组,如果等于高铁频点,删除高铁频点,同时删除对应的配置号,同时在配置组第16位置插入70,需要标明高铁的频点个数,和高铁的频点
for c in range(len(frlist2[r])):
if frlist2[r][c]‘1815.9’ or frlist2[r][c]‘939.3’ or frlist2[r][c]‘2018.1’ or frlist2[r][c]‘1904.6’ or frlist2[r][c]‘2603.9’ or frlist2[r][c]‘2623.7’ or frlist2[r][c]‘1895.9’ or frlist2[r][c]‘2585.9’:

        count[r]=count[r]+1
        if count[r]==1:
            del_gaotie_fr[r]=frlist2[r][c]
        else:
            del_gaotie_fr[r]=del_gaotie_fr[r]+';'+frlist2[r][c]
        del frlist1[r][c]
        del pzlist[r][c]
        frlist1[r].append('')
        pzlist[r].insert(15,'70')


   elif frlist1[r][c]!='':     #定义一个new_frlist[r]数组,数组长度为表格的行数,然后里面累加添加
       if c==0:
           new_frlist1[r]=frlist1[r][c]
       else:
           new_frlist1[r]=new_frlist1[r]+'}, {'+frlist1[r][c]

pdfrlist2=pd.DataFrame(data=frlist2) #数组转换为PANDAS,放置频点
all_total=pd.concat([all_total,pdfrlist2],axis=1) #连接
all_total=all_total.rename(columns={0:‘fr1’,1:‘fr2’,2:‘fr3’,3:‘fr4’,4:‘fr5’,5:‘fr6’,6:‘fr7’,7:‘fr8’,8:‘fr9’,9:‘fr10’,10:‘fr11’,11:‘fr12’,12:‘fr13’,13:‘fr14’,14:‘fr15’,15:‘fr16’})

pdpzlist=pd.DataFrame(pzlist) #配置组转换为dataframe,放置配置号
all_total=pd.concat([all_total,pdpzlist],axis=1) #连接
all_total=all_total.rename(columns={0:‘pz1’,1:‘pz2’,2:‘pz3’,3:‘pz4’,4:‘pz5’,5:‘pz6’,6:‘pz7’,7:‘pz8’,8:‘pz9’,9:‘pz10’,10:‘pz11’,11:‘pz12’,12:‘pz13’,13:‘pz14’,14:‘pz15’,15:‘pz16’,16:‘pz17’,17:‘pz18’,18:‘pz19’,19:‘pz20’,20:‘pz21’,21:‘pz22’,22:‘pz23’,23:‘pz24’,24:‘pz25’,25:‘pz26’,26:‘pz27’,27:‘pz28’,28:‘pz29’,29:‘pz30’,30:‘pz31’,31:‘pz32’})

pdfrlist1=pd.DataFrame(data=frlist1) #数组转换为PANDAS,放置频点
all_total=pd.concat([all_total,pdfrlist1],axis=1) #连接
all_total=all_total.rename(columns={0:‘y_fr1’,1:‘y_fr2’,2:‘y_fr3’,3:‘y_fr4’,4:‘y_fr5’,5:‘y_fr6’,6:‘y_fr7’,7:‘y_fr8’,8:‘y_fr9’,9:‘y_fr10’,10:‘y_fr11’,11:‘y_fr12’,12:‘y_fr13’,13:‘y_fr14’,14:‘y_fr15’,15:‘y_fr16’})

all_total[‘interFHOMeasCfg-修改后’]=all_total.apply(lambda x:x[‘pz1’]+’;’+x[‘pz2’]+’;’+x[‘pz3’]+’;’+x[‘pz4’]+’;’+x[‘pz5’]+’;’+x[‘pz6’]+’;’+x[‘pz7’]+’;’+x[‘pz8’]+’;’+x[‘pz9’]+’;’+x[‘pz10’]+’;’+x[‘pz11’]+’;’+x[‘pz12’]+’;’+x[‘pz13’]+’;’+x[‘pz14’]+’;’+x[‘pz15’]+’;’+x[‘pz16’]+’;’+x[‘pz17’]+’;’+x[‘pz18’]+’;’+x[‘pz19’]+’;’+x[‘pz20’]+’;’+x[‘pz21’]+’;’+x[‘pz22’]+’;’+x[‘pz23’]+’;’+x[‘pz24’]+’;’+x[‘pz25’]+’;’+x[‘pz26’]+’;’+x[‘pz27’]+’;’+x[‘pz28’]+’;’+x[‘pz29’]+’;’+x[‘pz30’]+’;’+x[‘pz31’]+’;’+x[‘pz32’],axis=1)

for k in range(1,33): #for循环删除PZ
del all_total[‘pz’+str(k)]
for m in range(1,17):
del all_total[‘y_fr’+str(m)]
del all_total[‘fr’ + str(m)]

pdnew_frlist1=pd.DataFrame(data=new_frlist1) #删除频点后新的网管频点组转换为dataframe,
all_total=pd.concat([all_total,pdnew_frlist1],axis=1) #连接
all_total=all_total.rename(columns={0:‘eutranMeasParas-修改后’}) #改名

pdcount=pd.DataFrame(data=count) #统计删除高铁的频点个数
all_total=pd.concat([all_total,pdcount],axis=1) #连接
all_total=all_total.rename(columns={0:‘删除高铁频点个数’}) #改名

pd_del_gaotie_fr=pd.DataFrame(data=del_gaotie_fr) #统计删除的高铁频点
all_total=pd.concat([all_total,pd_del_gaotie_fr],axis=1) #连接
all_total=all_total.rename(columns={0:‘删除的高铁频点’}) #改名

for g in range(len(all_total)):
all_total[‘interFreqNum’][g]= int(all_total[‘interFreqNum’][g])

all_total[‘interFreqNum-修改后’]=all_total[‘interFreqNum’]-all_total[‘删除高铁频点个数’]

pdenodeblist=pd.DataFrame(data=enodeblist) #数组转换为PANDAS,放置enodebid
all_total=pd.concat([all_total,pdenodeblist],axis=1) #连接
all_total=all_total.rename(columns={0:‘enodebid’})

pdcellidlist=pd.DataFrame(data=cellidlist) #数组转换为PANDAS,放置cellid
all_total=pd.concat([all_total,pdcellidlist],axis=1) #连接
all_total=all_total.rename(columns={0:‘cellid’})

all_total[‘enodebid-ci’]=all_total.apply(lambda x:x[‘enodebid’]+’-’+x[‘cellid’],axis=1) #合并enodebid和cellid

all_total=pd.merge(all_total,tongji2,on=“enodebid-ci”)

all_total.to_excel(r"E:\gaotie\999.xlsx")
`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值