Spaces:
Paused
Paused
| """ | |
| Data Analyzer - Analyze data patterns and statistics | |
| """ | |
| import re | |
| from typing import List, Dict, Tuple | |
| import statistics | |
| class DataAnalyzer: | |
| """Analyze data patterns and statistics from text or datasets.""" | |
| def extract_numbers(self, text: str) -> List[float]: | |
| """Extract numeric values from text.""" | |
| pattern = r"-?\d+\.?\d*" | |
| matches = re.findall(pattern, text) | |
| return [float(m) for m in matches if m] | |
| def analyze_numeric_data(self, data: List[float]) -> Dict: | |
| """Analyze numeric data.""" | |
| if not data: | |
| return {} | |
| return { | |
| "count": len(data), | |
| "sum": sum(data), | |
| "mean": statistics.mean(data), | |
| "median": statistics.median(data), | |
| "mode": statistics.mode(data) if len(set(data)) < len(data) else None, | |
| "stdev": statistics.stdev(data) if len(data) > 1 else 0, | |
| "min": min(data), | |
| "max": max(data), | |
| "range": max(data) - min(data), | |
| } | |
| def detect_patterns(self, data: List[float]) -> Dict[str, str]: | |
| """Detect patterns in data.""" | |
| if len(data) < 2: | |
| return {} | |
| diffs = [data[i+1] - data[i] for i in range(len(data)-1)] | |
| avg_diff = sum(diffs) / len(diffs) | |
| patterns = {} | |
| if abs(avg_diff) < 0.001: | |
| patterns["trend"] = "flat" | |
| elif avg_diff > 0: | |
| patterns["trend"] = "increasing" | |
| else: | |
| patterns["trend"] = "decreasing" | |
| return patterns | |
| def find_outliers(self, data: List[float], std_threshold: float = 2) -> List[float]: | |
| """Find outliers using standard deviation.""" | |
| if len(data) < 2: | |
| return [] | |
| mean = statistics.mean(data) | |
| stdev = statistics.stdev(data) | |
| return [x for x in data if abs((x - mean) / stdev) > std_threshold] | |