Telecomunicaciones

PROYECTO - PROCESADOR DE ARCHIVOS DEL SOFTWARE ARGUS

Monitoreo realizado en la banda de 88 – 108 MHz, del Servicio de radiodifusión sonora FM en la Localidad de Lima, departamento de Lima.
#LIBRERIAS NECESARIAS
%pip install python-docx
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
from scipy.signal import find_peaks
from IPython.display import Image
import docx
from docx import Document
from docx.shared import Inches

import pandas as pd
import numpy as np
from docx import Document


# Iterar sobre cada archivo de la lista
for archivo in archivos:
    ruta_archivo = f'{archivo}'

     # Procesar el archivo CSV
    try:
        data = pd.read_csv(ruta_archivo, encoding='latin-1')

        print(f'Procesando archivo: {archivo}')

        #:::::::::::::::ANALISIS Y SEPARACIÓN DE TIEMPO::::::::::::::::::::

        fracciones_de_tiempo = data['Tiempo'].unique()

        #:::::::: ANALISIS DE LAS FRECUENCIAS AUTORIZADAS Y PIRATAS::::::::

        frecuencias_autorizadas = frecuencias['Frecuencia'].tolist() # Obtener la lista de frecuencias autorizadas
        promedios = data.groupby('Frecuencia (Hz)').agg({'Level (dBµV/m)': 'mean'}).reset_index() # Calcular el promedio de los niveles de frecuencia para cada frecuencia

        #::::::::::::::CONFIGURACIÓN DE IMAGEN DEL GIF::::::::::::::::::::

        fig, ax = plt.subplots(figsize=(24, 6))                       # Ajusta el ancho a 12 pulgadas y el alto a 6 pulgadas
        fig.patch.set_facecolor('white')                              # Configuración del fondo negro y color de elementos del gráfico
        ax.set_facecolor('white')
        plt.grid(True, color='black', linestyle='--', linewidth=0.5)  # Color de las líneas de la cuadrícula

        #::::::::ITERACIÓN PARA OBTENER LAS GRAFICAS PARA CADA TIEMPO::::::

        ims = []
        for tiempo in fracciones_de_tiempo:
            subset_data = data[data['Tiempo'] == tiempo]
            im = plt.plot(subset_data['Frecuencia (Hz)'] / 1e6, subset_data['Level (dBµV/m)'],
                          color='blue')
            ims.append(im)

        #::::::::MARCAR LAS FRECUENCIAS AUTORIZADAS::::::::::::::::::::::

        frecuencias_destacar = frecuencias['Frecuencia'].tolist()     # Obtener las frecuencias y nombres a destacar

        # Buscar las frecuencias a destacar en los datos
        for frecuencia, nombre in zip(frecuencias['Frecuencia'], frecuencias['Nombre']):
            if frecuencia in frecuencias_destacar:
                level = 90  # Define el nivel en el que deseas colocar las líneas
                plt.vlines(frecuencia, -10, level, color='red', linestyles='dashed', linewidth=0.5)
                plt.text(frecuencia, level -8, f'{frecuencia}', ha='center', color='black')

        #::::::::::::::CONFIGURACIÓN DE LA GRAFICA::::::::::::::::::

        # Configurar colores de etiquetas, texto y ejes
        plt.xlabel('Frecuencia (MHz)', color='black')                 # Etiqueta del eje x en MHz
        plt.ylabel('Level (dBµV/m)', color='black')
        plt.ylim(-10, 90)  # Establecer el límite superior del eje y en 60 dBµV/m
        plt.xlim(88, 108)  # Establecer límites del eje x en MHz
        plt.title('Gráfico de Frecuencia vs Nivel', color='black')    # Cambiar el color del título a blanco

        # Configuración de color para los ejes
        ax.spines['bottom'].set_color('black')
        ax.spines['top'].set_color('black')
        ax.spines['left'].set_color('black')
        ax.spines['right'].set_color('black')
        ax.xaxis.label.set_color('black')
        ax.yaxis.label.set_color('black')

        # Configuración del color de los números en los ejes
        ax.tick_params(axis='x', colors='black')
        ax.tick_params(axis='y', colors='black')

        plt.tight_layout(pad=3)


Procesando archivo: FM_LIMA_04-12-2023.csv
Conteo de Frecuencias Autorizadas Activas (MHz): 26
Conteo de Frecuencias No Autorizadas Transmitiendo (MHz): 16









No hay comentarios:

Publicar un comentario