ajuste en el df para las estadísticas

dado que este df se construía originalmente mediante la lectura de un
archivo, se hicieron todos los cambios para ajustar el DF de
clickhouse a este otro formato.

para hacer estos ajustes se usan un par de funciones de
nutri_utils (que se añadieron casi ex-profeso a esta biblioteca).

ahora ya no se necesita actualizar ningún archivo para correr el app
de estadísticas de comidas: toda la info viene de la app de
clickhouse.
parent 8c6650d6
...@@ -11,6 +11,8 @@ from scipy import stats ...@@ -11,6 +11,8 @@ from scipy import stats
from ast import literal_eval from ast import literal_eval
from funciones_comidas import readGlucosa from funciones_comidas import readGlucosa
from funciones_comidas import readVisitas from funciones_comidas import readVisitas
from nutri_utils import setTipo
from nutri_utils import dominantes
import test_ch_2_b import test_ch_2_b
import flask import flask
...@@ -256,46 +258,32 @@ def comidas_auc_paciente(datos): ...@@ -256,46 +258,32 @@ def comidas_auc_paciente(datos):
return figura return figura
comidas = pd.read_csv("todos-foods.csv", usecols=["hc_total", "kcal_total", "fiber_total",\
"protein_total", "lipids_total","fecha_hora", "patient", "visita", "fecha_visita",\
"glucosa_basal_area", "glucosa_estimulo_area",\
"glucosa_area_efectiva","glucosa_area_relativa","foods","dominante", "dominante_category"])
comidas["foods"] = comidas["foods"].apply(literal_eval)
comidas = comidas[comidas["visita"] == "e1"]
comidas = comidas[comidas["hc_total"]>0]
comidas.rename(columns={"glucosa_basal_area":"pre-AUC", "glucosa_estimulo_area":"post-AUC", "glucosa_area_efectiva":"iAUC"}, inplace=True)
comidas["iAUC"] = comidas["post-AUC"] - comidas["pre-AUC"] * 2
# test.csv es el archivo que produce 'build_food_extended.py', es decir,
# una relación de las comidas reportadas en la app con todos sus datos: horas de reporte,
# hora de salto, hora de foto -cuando existe la foto- ticks/valores basales y postpandriales, etc.
# es justamente la info que se sube al clickhouse, por lo que sustituir una por otra no requiere ninguna
# ajuste en cuanto a las columnas. sin embargo, los renglones si deben revisarse porque clickhouse ahora tiene la
# salida de 'build_all_food_extended.py' que extiende el primero mencionado a las comidas de las otras dos fuentes:
# recordatorios y WA (y pronto a una cuarta fuente: alimentos controlados )
#df_total = pd.read_csv("test.csv")
df_total = test_ch_2_b.foods() df_total = test_ch_2_b.foods()
#df_total = df_total[df_total["etapas"] == "e1"] # hay dos gráficas exploratorias que usan el contenido de 'foods'.
# hay que revisar los foods de las foods que vienen de los recordotorios -no se dejan convertir de string a list-, y ver que hacer
# con las comidas de WA -porque no tienen foods todavía.
# mientras, trabajamos las estadísticas solo con las que vienen de la APP.
df_estadisticas = df_total.loc[df_total["Source"] == "app"]
df_estadisticas["foods"] = df_estadisticas["foods"].apply(literal_eval)
first_id = df_total["patient"].min() first_id = df_total["patient"].min()
last_id = df_total["patient"].max() last_id = df_total["patient"].max()
ids_presentes = set(df_total['patient']) ids_presentes = set(df_total['patient'])
df_total['FH_salto'] = pd.to_datetime(df_total['FH_salto']) df_total['FH_salto'] = pd.to_datetime(df_total['FH_salto'])
df_total['FH_reportada'] = pd.to_datetime(df_total['FH_reportada']) df_total['FH_reportada'] = pd.to_datetime(df_total['FH_reportada'])
df_total['FH_foto'] = pd.to_datetime(df_total['FH_foto']) df_total['FH_foto'] = pd.to_datetime(df_total['FH_foto'])
# convertimos las comidas de df_estadisticas a un formato que entienden las gráficas
# de estadisticas .. luego, si es conveniente, iremos haciendo los cambios para usar un
# único DF para todas las gráficas. (de todos modos, el entrenamiento de modelos usa
# archivos en el formato en cuestión)
comidas = setTipo( "reportada", df_estadisticas.copy())
comidas[["foods", "Source"]] = df_estadisticas[["foods","Source"]]
comidas.rename(columns={"glucosa_basal_area":"pre-AUC", "glucosa_estimulo_area":"post-AUC", "glucosa_area_efectiva":"iAUC"}, inplace=True)
comidas["iAUC"] = comidas["post-AUC"] - comidas["pre-AUC"] * 2
resultado = pd.DataFrame()
resultado = pd.DataFrame(comidas["foods"].apply(dominantes).values.tolist())
resultado.index = comidas.index
comidas = pd.concat([comidas, resultado], axis=1)
# delasfotos es una archivo con los registros de las comidas reportadas por WA.
# este archivo solo contiene fecha de reporte (fecha de registro de la foto en WA) y su correspondiente salto asociado.
# df_foto se usa para desplegar los puntos en el glucómetro que corresponden a la hora reportada de las comidas reportadas por WA.
# justamente, la información que ya está incluida en los renglones que regresa clickhouse tiene que ver con
# los reportes de WA y entonces se puede generalizar .. por ejemplo, se podría poner que el tipo de punto desplegado dependa
# de la fuente
#df_fotos = pd.read_csv("delasfotos.csv")
#df_fotos['fecha_hora'] = pd.to_datetime(df_fotos['fecha_hora'])
external_stylesheets = [ external_stylesheets = [
{ {
"href": ( "href": (
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment