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.

Datos financieros de WEBSOCKET, no se puede obtener los datos formateados de la manera correcta: valores de diccionario python.

Hola, he configurado mi websocket y está funcionando muy bien.

Pero no puedo parecer obtener los datos desempaquetados de la manera correcta.

Los datos son un diccionario JSON, y cuando intento desempaquetarlo, llego a este punto.

[{'start': 1641475140, 'end': 1641475200, 'period': '1', 'open': 464.3, 'close': 464.8, 'high': 464.8, 'low': 464.3, 'volume': '11.62', 'turnover': '5397.945', 'confirm': False, 'cross_seq': 9713056403, 'timestamp': 1641475159431119}]

Utilizo JSON.loads para cargar los datos y luego avanzo hacia los datos usando: msg[‘data’] y obtengo el resultado mencionado anteriormente.

¿Alguien sabe cómo acceder a este bloque de datos, crear columnas y demás, o puede indicarme en la dirección correcta?
No he trabajado mucho con diccionarios antes.

Este es el código que crea el resultado en la parte superior:

def on_message(ws, message):
    print('Message here:')
    msg = json.loads(message)
    kline = msg['data']

Este es el mensaje completo que estoy tratando de desempaquetar:

{"topic":"candle.1.BNBUSDT","data":[{"start":1641476160,"end":1641476220,"period":"1","open":464.55,"close":464.65,"high":464.7,"low":464.55,"volume":"2.83","turnover":"1315.001","confirm":false,"cross_seq":9713530932,"timestamp":1641476191430157}],"timestamp_e6":1641476191430157}

Los datos son de la API de Bybit.

Gracias.

Saludos cordiales.

Mathias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para acceder a los puntos de datos individuales en el diccionario JSON y crear columnas, puedes usar las claves del diccionario. En este caso, las claves son ‘start’, ‘end’, ‘period’, ‘open’, ‘close’, ‘high’, ‘low’, ‘volume’, ‘turnover’, ‘confirm’, ‘cross_seq’ y ‘timestamp’.

    Para crear columnas, puedes usar las claves para acceder a sus valores correspondientes para cada diccionario en la lista. Aquí tienes un ejemplo de cómo puedes crear un DataFrame de pandas con columnas para cada clave:

    import pandas as pd
    
    def on_message(ws, message):
        print('Mensaje aquí:')
        msg = json.loads(message)
        kline = msg['data']
    
        df = pd.DataFrame(kline, columns=['start', 'end', 'period', 'open', 'close', 'high', 'low', 'volume', 'turnover', 'confirm', 'cross_seq', 'timestamp'])
        print(df)
    

    Este código creará un DataFrame de pandas con columnas para cada clave en el diccionario y mostrará el DataFrame. Luego puedes usar los métodos DataFrame de pandas para manipular o analizar los datos aún más.

Comments are closed.