File size: 1,279 Bytes
6fd124c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import json
import pandas as pd


def parse_response(raw: str) -> dict:
    result = {
        "visual_type": "Unknown",
        "data": {},
        "analysis": "",
        "parse_error": None
    }
    try:
        if "VISUAL_TYPE:" in raw:
            result["visual_type"] = raw.split("VISUAL_TYPE:")[1].split("DATA:")[0].strip()
        if "DATA:" in raw:
            raw_json = raw.split("DATA:")[1].split("ANALYSIS:")[0].strip()
            result["data"] = json.loads(raw_json)
        if "ANALYSIS:" in raw:
            result["analysis"] = raw.split("ANALYSIS:")[1].strip()
    except json.JSONDecodeError as e:
        result["parse_error"] = f"Could not parse data: {e}"
        result["data"] = {}
    except Exception as e:
        result["parse_error"] = f"Parsing error: {e}"
    return result


def to_dataframe(data: dict):
    try:
        if not data or "error" in data:
            return None
        if "rows" in data and "headers" in data:
            return pd.DataFrame(data["rows"], columns=data["headers"])
        if "labels" in data and "values" in data:
            series = data.get("series_name", "Value")
            return pd.DataFrame({"Label": data["labels"], series: data["values"]})
    except Exception:
        return None
    return None