Spaces:
Sleeping
Sleeping
| 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 | |