db_query / queries /process_gsm.py
DavMelchi's picture
1st commit
939b332
raw
history blame
3.02 kB
import pandas as pd
from queries.process_trx import process_trx_data
from utils.convert_to_excel import convert_dfs, save_dataframe
from utils.utils_vars import UtilsVars
BTS_COLUMNS = [
"ID_BCF",
"ID_BTS",
"BSC",
"BCF",
"BTS",
"code",
"plmnPermitted",
"frequencyBandInUse",
"name",
"adminState",
"allowIMSIAttachDetach",
"amrSegLoadDepTchRateLower",
"amrSegLoadDepTchRateUpper",
"antennaHopping",
"bcchTrxPower",
"bsIdentityCodeBCC",
"bsIdentityCodeNCC",
"BSIC",
"cellId",
"dedicatedGPRScapacity",
"defaultGPRScapacity",
"fddQMin",
"fddQOffset",
"fddRscpMin",
"gprsEnabled",
"locationAreaIdLAC",
"locationAreaIdMCC",
"locationAreaIdMNC",
"rac",
"rachDropRxLevelThreshold",
"sectorId",
"SectorId2",
"segmentId",
"fastReturnToLTE",
"gsmPriority",
"segmentName",
"Code_Sector",
]
BCF_COLUMNS = [
"ID_BCF",
"site_name",
]
def process_gsm_data(file_path: str):
"""
Process data from the specified file path.
Args:
file_path (str): The path to the file.
"""
# Read the specific sheet into a DataFrame
dfs = pd.read_excel(
file_path,
sheet_name=["BTS", "BCF", "TRX"],
engine="calamine",
skiprows=[0],
)
# Process BTS data
df_bts = dfs["BTS"]
df_bts.columns = df_bts.columns.str.replace(r"[ ]", "", regex=True)
df_bts["code"] = df_bts["name"].str.split("_").str[0].astype(int)
df_bts["ID_BTS"] = df_bts[["BSC", "BCF", "BTS"]].astype(str).apply("_".join, axis=1)
df_bts["BSIC"] = (
df_bts[["bsIdentityCodeNCC", "bsIdentityCodeBCC"]]
.astype(str)
.apply("".join, axis=1)
)
df_bts["SectorId2"] = (
df_bts["sectorId"].map(UtilsVars.sector_mapping).fillna(df_bts["sectorId"])
)
df_bts["ID_BCF"] = df_bts[["BSC", "BCF"]].astype(str).apply("_".join, axis=1)
df_bts["Code_Sector"] = (
df_bts[["code", "SectorId2"]].astype(str).apply("_".join, axis=1)
)
df_bts["Code_Sector"] = df_bts["Code_Sector"].str.replace(".0", "")
df_bts = df_bts[BTS_COLUMNS]
# Process BCF data
df_bcf = dfs["BCF"]
df_bcf.columns = df_bcf.columns.str.replace(r"[ ]", "", regex=True)
df_bcf["ID_BCF"] = df_bcf[["BSC", "BCF"]].astype(str).apply("_".join, axis=1)
df_bcf.rename(columns={"name": "site_name"}, inplace=True)
df_bcf = df_bcf[BCF_COLUMNS]
df_trx = process_trx_data(file_path)
# Merge dataframes
df_bts_bcf = pd.merge(df_bts, df_bcf, on="ID_BCF", how="left")
df_2g = pd.merge(df_bts_bcf, df_trx, on="ID_BTS", how="left")
df_physical_db = UtilsVars.physisal_db
df_2g = pd.merge(df_2g, df_physical_db, on="Code_Sector", how="left")
# Save dataframes
# save_dataframe(df_bts, "bts")
# save_dataframe(df_bcf, "bcf")
save_dataframe(df_trx, "trx")
# df_2g2 = save_dataframe(df_2g, "2g")
UtilsVars.final_gsm_database = convert_dfs([df_2g], ["GSM"])