예제 #1
0
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from preprocesamiento.funciones import buscar_csv

''' Calcula los tamaños de muestra de los archivos de una carpeta '''

# PARÁMETROS
ruta_carpeta = 'D:/Dropbox/UNI/TFM/datos/3 - Fecha a timestamp'
ruta_grafico = 'Tamaño de muestras - diagrama de barras.pdf'
clave_principal = 'PATNO'

# leer tablas
tablas = [pd.read_csv(ruta_arch, sep=',', float_precision='round_trip') for ruta_arch in buscar_csv(ruta_carpeta)]

# obtener solo el número de pacientes únicos de cada archivo
nums_pacientes = [len(np.unique(tabla[clave_principal].values)) for tabla in tablas]
print(nums_pacientes)

# generar diagrama de barras
etiquetas = [os.path.splitext(os.path.basename(r))[0] for r in buscar_csv(ruta_carpeta)]
print(etiquetas)
plt.figure(figsize=(6, 7))
plt.bar(etiquetas, nums_pacientes, color='forestgreen')

# marcas horizontales
axes = plt.gca()
axes.yaxis.grid()

# etiquetas eje x
예제 #2
0
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from preprocesamiento.funciones import buscar_csv
''' Calcula la media del número de registros del mismo paciente en cada archivo '''

# PARÁMETROS
ruta_carpeta = 'D:/Dropbox/UNI/TFM/datos/3 - Fecha a timestamp'
ruta_grafico = 'Media pacientes repetidos - diagrama de barras.pdf'
clave_principal = 'PATNO'

# leer tablas
tablas = [
    pd.read_csv(ruta_arch, sep=',', float_precision='round_trip')
    for ruta_arch in buscar_csv(ruta_carpeta)
]

# obtener los registros de cada archivo
registros = [tabla[clave_principal].values for tabla in tablas]

# número de registros de cada archivo
nums_registros = [len(registros_arch) for registros_arch in registros]

# número de pacientes únicos de cada archivo
nums_pacientes = [
    len(np.unique(registros_arch)) for registros_arch in registros
]

# medias de repeticiones
medias_repeticiones = [
예제 #3
0
    # pero si tiene otra más en común, pueden quedar columnas duplicadas
    if len(cols_comun) == 2:
        la_otra_comun = cols_comun.drop(clave_principal).values[0]
        cols_duplicadas = [la_otra_comun + suf for suf in sufijos_dup]  # nombres en la tabla de las columnas duplicadas

        # combinar las dos columnas dando preferencia a la última y guardarlo en une nueva
        fusionada[la_otra_comun] = fusionada[cols_duplicadas[1]].combine_first(fusionada[cols_duplicadas[0]])

        # borrar estas dos sobrantes
        fusionada.drop(cols_duplicadas, 1, inplace=True)

    return fusionada


# leer archivos
rutas_arch = buscar_csv(ruta_carpeta)

# si hay tabla principal
if usar_tabla_principal:
    # ponerla al comienzo de la lista
    rutas_arch.insert(0, rutas_arch.pop(rutas_arch.index(os.path.join(ruta_carpeta, tabla_principal))))

# cargar tablas
tablas = [pd.read_csv(ruta_arch, sep=',', float_precision='round_trip') for ruta_arch in rutas_arch]

# excluir las variables indicadas
for var in excluir_variables:
    [tabla.drop(var, 1, inplace=True) for tabla in tablas if var in tabla.columns]

# combinarlas todas aglomerativamente
datos = reduce(lambda t1, t2: combinar_tablas(t1, t2), tablas)
예제 #4
0
from os.path import join
import pandas as pd
from preprocesamiento.funciones import buscar_csv, guardar_tabla
''' Filtra filas de varios archivos según los pacientes que aparezcan en una tabla de referencia'''

# PARÁMETROS
ruta_carpeta = 'D:/Dropbox/UNI/TFM/datos/6 - Dividir entre tipos de pacientes/RBD'
ruta_archivo_referencia = join(
    ruta_carpeta, 'Patient_Status_sin_duplicados_filtrado_por_valores.csv')
clave_principal = 'PATNO'

# leer tabla de referencia
tabla_ref = pd.read_csv(ruta_archivo_referencia,
                        sep=',',
                        float_precision='round_trip')

# leer cada tabla y filtrar según los pacientes que aparecen en el archivo de referencia
for ruta_arch in buscar_csv(ruta_carpeta):
    tabla = pd.read_csv(ruta_arch, sep=',', float_precision='round_trip')

    # guardar solo los pacientes que aparecen en el de referencia
    tabla = tabla[tabla[clave_principal].isin(tabla_ref[clave_principal])]

    # guardar tabla
    guardar_tabla(tabla, ruta_arch, '_filtrado_segun_ref')
예제 #5
0
ruta_resultados = os.path.join(ruta_carpeta_datos,
                               'Valores perdidos - resultados')
nombre_informe = 'Informe valores perdidos.txt'
nombre_mapa_de_calor = 'Mapa de calor'
clave_principal = 'PATNO'

# crear carpeta para resultados
os.mkdir(ruta_resultados) if not os.path.exists(ruta_resultados) else None

# crear archivo del informe
f = open(os.path.join(ruta_resultados, nombre_informe),
         mode='w',
         encoding='UTF-8')

# rellenarlo por cada tabla
for ruta_archivo in buscar_csv(ruta_carpeta_datos):
    nombre_archivo = os.path.splitext(os.path.basename(ruta_archivo))[0]

    # leer tabla
    tabla = pd.read_csv(ruta_archivo, sep=',', float_precision='round_trip')
    del tabla[
        clave_principal]  # quitar clave principal porque no tiene valores perdidos

    # numero de filas
    num_filas = len(tabla)

    # número de valores perdidos por cada columna
    na_columnas = tabla.isna().sum()

    # número total de valores perdidos
    total_na = na_columnas.sum()