es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Actualización de DataFrame en Python sin utilizar Websocket.

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown

Soy nuevo en la programación y me he quedado atascado con este problema. Digamos que tengo un marco de datos que se ve así:

Hora Valor
09.00 x
09.05 y
09.10 z
10.00 a

Quiero actualizar los datos cada 5 minutos automáticamente para que se vea así 5 minutos después:

Hora Valor
09.05 y
09.10 z
10.00 a
10.05 b

Los websockets no me parecen eficientes porque no necesito datos cada segundo y no tengo que guardar los datos antiguos.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para actualizar automáticamente los datos en el dataframe cada 5 minutos, puedes hacer uso del módulo sched en Python. Aquí te mostramos cómo:

    1. Primero, necesitarás importar los módulos requeridos:
    import pandas as pd
    import sched, time
    
    1. Luego, tendrás que definir una función que actualizará tu dataframe. Esta función se llamará cada 5 minutos:
    def update_df():
        # lee los datos existentes en un dataframe
        df = pd.read_csv('data.csv')
    
        # obtén el último valor de tu fuente de datos
        latest_value = get_latest_value()
    
        # agrega el último valor al dataframe
        new_row = {'Time': '10.05', 'Value': latest_value}
        df = df.append(new_row, ignore_index=True)
    
        # guarda el dataframe actualizado en el csv
        df.to_csv('data.csv', index=False)
    
    1. En la función anterior, get_latest_value() es un marcador de posición para la función que escribirás para obtener el último valor de tu fuente de datos.
    2. Luego, tendrás que crear un planificador que llamará a esta función cada 5 minutos:

    # crea un planificador
    s = sched.scheduler(time.time, time.sleep)
    
    # define una función que será llamada cada 5 minutos
    def update_df_wrapper(sc):
        update_df()
        s.enter(300, 1, update_df_wrapper, (sc,))
    
    # programa la primera llamada a la función
    s.enter(300, 1, update_df_wrapper, (s,))
    s.run()
    
    1. En el código anterior, update_df_wrapper es una función que envuelve update_df y programa la siguiente llamada a la función después de 5 minutos.

    2. Finalmente, deberás asegurarte de que tu script se esté ejecutando continuamente. Una forma de hacerlo es usar una herramienta como pm2 para ejecutar tu script como un proceso en segundo plano en un servidor.

    Con esto debería ser suficiente para actualizar automáticamente tu dataframe cada 5 minutos.

Comments are closed.