代码拉取完成,页面将自动刷新
# -*- coding: utf-8 -*-
"""
Created on Thu Aug 19 15:23:07 2021
@author: 田中玉
"""
import xlsxwriter
import numpy as np
import pandas as pd
import os
import zipfile
import shutil
import time
import xlrd
from datetime import datetime
from xlrd import xldate_as_tuple
path = 'D:/_共享周报'
path_gx='D:/_共享周报/原始数据'+'//'
path_gxms='D:/_共享周报/忙时'+'//'
work_path = 'd:/_共享周报/输出文件/'
bf_path= r'D:/_共享周报/备份数据/'
os.chdir(path)
files_gx = os.listdir(path_gx)
zte_gx = [x for x in files_gx if '历史性能' in x]
alx_gx = [x for x in files_gx if '爱立信' in x]
hw_gx = [x for x in files_gx if '华为' in x]
df_eric_titles = pd.read_excel('title.xlsx',encoding = 'utf-8')
titles = list(df_eric_titles.columns)
df_gxqd = pd.read_excel('共享清单.xlsx',encoding = 'utf-8')
df_eric_4G_traffic = pd.DataFrame()
for file in alx_gx:
df_tmp = pd.read_csv(path_gx + file,header = None , names = titles, engine = 'python', encoding = 'gbk')
df_tmp.fillna(0,inplace=True)
df_tmp['日期'] = df_tmp['日期'].map(lambda x:x.replace('\'',''))
df_tmp['小区id'] = df_tmp['小区id'].map(lambda x:x.replace('\'',''))
df_tmp=pd.merge(df_tmp,df_gxqd,how='inner',on='小区id')
df_tmp.columns
df_dx=df_tmp[['日期',
'小区id',
'基站ID+小区ID',
'区县',
'基站名称',
'电信下行MB','电信上行_MB','电信_MaxUser',
'上行用户体验速率','下行用户体验速率',
'厂家']]
df_dx.rename(columns={'电信下行MB':'下行MB',
'电信上行_MB':'上行_MB',
'电信_MaxUser':'RRC连接建立最大用户数'},inplace=True)
df_dx['plmn']=11
df_lt=df_tmp[['日期',
'小区id',
'基站ID+小区ID',
'区县',
'基站名称',
'联通下行_MB','联通上行_MB','联通_MaxUser',
'上行用户体验速率','下行用户体验速率',
'厂家']]
df_lt.rename(columns={'联通下行_MB':'下行MB',
'联通上行_MB':'上行_MB',
'联通_MaxUser':'RRC连接建立最大用户数'},inplace=True)
df_lt['plmn']=1
df_zong=pd.concat([df_dx,df_lt],ignore_index=True)
#df_zong.dtypes
df_zong['全天流量(GB)']=(df_zong['下行MB']+df_zong['上行_MB'])/1024
df_eric_4G_traffic=df_eric_4G_traffic.append(df_zong)
df_zte_4G_traffic = pd.DataFrame()
for file in zte_gx:
df_tmp = pd.read_csv(path_gx + file,skiprows = 5,engine = 'python', encoding = 'gbk')
#df_tmp.columns
df_tmp['小区id']=df_tmp['网元'].map(str)+"_"+df_tmp['小区'].map(str)
df_tmp['全天流量(GB)']=df_tmp['PDCP层下行用户面流量(GByte)-电联共享小区']+df_tmp['PDCP层上行用户面流量(GByte)-电联共享小区']
df_tmp['上行感知速率(Mbps)']=df_tmp['用户体验上行平均速率-电联共享小区']
df_tmp['下行感知速率(Mbps)']=df_tmp['用户体验下行平均速率-电联共享小区']
df_tmp=df_tmp[['开始时间','小区id','全天流量(GB)','上行感知速率(Mbps)','下行感知速率(Mbps)','RRC连接建立最大用户数','MNC','小区名称']]
df_tmp=pd.merge(df_tmp,df_gxqd,how='inner',on='小区id')
df_tmp=df_tmp[['开始时间','小区id', '全天流量(GB)', '上行感知速率(Mbps)', '下行感知速率(Mbps)', 'RRC连接建立最大用户数','MNC', '小区名称', '网元', '小区', '基站ID+小区ID', '区县', '厂家']]
df_tmp['基站名称']=df_tmp['小区名称'].map(lambda x:x.split('J')[1].split('_')[0])
df_tmp=df_tmp[['开始时间','小区id', '全天流量(GB)', '上行感知速率(Mbps)', '下行感知速率(Mbps)','基站ID+小区ID', 'RRC连接建立最大用户数','MNC', '基站名称', '网元', '小区','区县', '厂家']]
df_tmp.rename(columns={'MNC':'plmn',
'开始时间':'日期',
'上行感知速率(Mbps)':'上行用户体验速率',
'下行感知速率(Mbps)':'下行用户体验速率'},inplace=True)
df_zte_4G_traffic=df_zte_4G_traffic.append(df_tmp)
df_hw_4G_traffic = pd.DataFrame()
for file in hw_gx:
df_tmp = pd.read_csv(path_gx + file,skiprows = 6,engine = 'python', encoding = 'utf-8')
df_tmp.dtypes
last_row = len(df_tmp)
df_tmp = df_tmp.drop(df_tmp.index[last_row-1])
df_tmp['小区']=df_tmp['小区名称'].map(lambda x:str(x).split('_')[0])
df_tmp['id']=df_tmp['小区名称'].map(lambda x:str(x).split('_')[1])
df_tmp['小区id']=df_tmp['小区']+"_"+df_tmp['id']
df_tmp.columns
df_tmp=df_tmp[['小区id',
'日期',
'运营商索引值',
'小区运营商的最大用户数',
'特定运营商下PDCP层发送下行数据的总吞吐量(比特)',
'特定运营商下PDCP层所接收到的上行数据的总吞吐量(比特)',
'特定运营商用户上行感知速率',
'特定运营商用户下行感知速率']]
df_tmp=pd.merge(df_tmp,df_gxqd,how='inner',on='小区id')
df_tmp['全天流量(GB)']=(df_tmp['特定运营商下PDCP层发送下行数据的总吞吐量(比特)']+df_tmp['特定运营商下PDCP层所接收到的上行数据的总吞吐量(比特)'])/8/1024/1024/1024
df_tmp['plmn']=df_tmp['运营商索引值']
df_tmp.rename(columns={'小区运营商的最大用户数':'RRC连接建立最大用户数',
'特定运营商用户上行感知速率':'上行用户体验速率',
'特定运营商用户下行感知速率':'下行用户体验速率'},inplace=True)
df_hw_4G_traffic=df_hw_4G_traffic.append(df_tmp)
df_eric_4G_traffic['地市']='曲靖'
df_eric_4G_traffic=df_eric_4G_traffic[['地市','厂家','基站ID+小区ID','区县','基站名称','日期','plmn','RRC连接建立最大用户数', '全天流量(GB)','上行用户体验速率', '下行用户体验速率']]
df_zte_4G_traffic['地市']='曲靖'
df_zte_4G_traffic=df_zte_4G_traffic[['地市','厂家','基站ID+小区ID','区县','基站名称','日期','plmn','RRC连接建立最大用户数', '全天流量(GB)','上行用户体验速率', '下行用户体验速率']]
df_hw_4G_traffic['地市']='曲靖'
df_hw_4G_traffic=df_hw_4G_traffic[['地市','厂家','基站ID+小区ID','区县','基站名称','日期','plmn','RRC连接建立最大用户数', '全天流量(GB)','上行用户体验速率', '下行用户体验速率']]
df_gxzb=pd.concat([df_eric_4G_traffic,df_zte_4G_traffic,df_hw_4G_traffic],ignore_index=True)
ms_list=os.listdir(path_gxms)
df_ms = pd.DataFrame()
for x in ms_list:
file_zip = zipfile.ZipFile(path_gxms+x, 'r')
file_zip.extractall(path_gxms)
file_zip.close()
ms_list=os.listdir(path_gxms)
ms_list=[x for x in ms_list if '.xlsx'in x]
for x in ms_list:
df_tmp = pd.read_excel(path_gxms+x)
df_ms=df_ms.append(df_tmp)
df_ms=df_ms.reset_index()
df_ms['时间1']=df_ms['时间'].map(lambda x : str(x).split('.')[0])
df_ms['时间1']=df_ms['时间1'].map(lambda x :datetime(*xldate_as_tuple(int(x), 0)))
df_ms['时间1']=df_ms['时间1'].map(lambda x :str(x).split()[0])
df_ms['标记']=df_ms['时间1'].map(str)+"_"+df_ms['ENBID'].map(str)+df_ms['小区ID'].map(str)
df_ms=df_ms[['标记','1.12 下行PRB平均占用率(%)']]
df_gxzb['日期']=df_gxzb['日期'].map(lambda x:x.replace('-','/').split()[0].replace('/','-'))
df_gxzb['标记']=df_gxzb['日期'].map(str)+'_'+df_gxzb['基站ID+小区ID'].map(str)
df_zong=pd.merge(df_gxzb,df_ms,how='left',on='标记')
df_zong=df_zong[['地市',
'厂家',
'基站ID+小区ID',
'区县','基站名称',
'日期',
'plmn',
'RRC连接建立最大用户数',
'全天流量(GB)',
'上行用户体验速率',
'下行用户体验速率',
'1.12 下行PRB平均占用率(%)']]
df_zong.fillna(0,inplace=True)
df_zong['plmn'].replace(0,11,inplace=True)
df_zong.to_excel(work_path+'4G共享.xlsx',index=False)
rq=time.strftime("%Y-%m-%d", time.localtime())
if os.path.exists(bf_path+rq):#判断文件夹是否存在
pass#存在跳过
else:
os.mkdir(bf_path+rq)#不存在建立新的文件夹
###备份原始数据
print('喵喵已创建好备份文件夹')
busy_list=os.listdir(path_gxms)
[shutil.move(path_gxms+x,bf_path+rq+'//') for x in busy_list]#移动文件
file_list=os.listdir(path_gx)
[shutil.move(path_gx+x,bf_path+rq+'//') for x in file_list]#移动文件
result_list=os.listdir(work_path)
[shutil.copy(work_path+x,bf_path+rq+'//') for x in result_list]#复制文件
print('喵喵已经备份完成')
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。