Add temperature_data_analysis/src/temperature_data_analysis/core.py

This commit is contained in:
Mika 2026-04-12 02:07:09 +00:00
parent ae757fae11
commit ebe506aa22

View file

@ -0,0 +1,57 @@
from __future__ import annotations
import statistics
from dataclasses import dataclass, asdict
from typing import List, Dict
@dataclass
class AnalysisResult:
"""Repräsentiert das Ergebnis einer Temperaturdatenanalyse."""
mean_temperature: float
temperature_variance: float
def to_dict(self) -> Dict[str, float]:
"""Konvertiert das Analyseergebnis in ein Dictionary."""
return asdict(self)
def analyze_temperature_data(data: List[float]) -> Dict[str, float]:
"""Analysiert eine Liste von Temperaturwerten und berechnet Mittelwert und Varianz.
Args:
data: Liste von Temperaturwerten in Grad Celsius.
Returns:
Dictionary mit Schlüsseln 'mean_temperature' und 'temperature_variance'.
Raises:
ValueError: Wenn die Eingabeliste leer ist oder ungültige Werte enthält.
"""
# Eingabevalidierung
if not isinstance(data, list):
raise ValueError("Input data must be a list of floats.")
if not data:
raise ValueError("Input data list cannot be empty.")
validated_values = []
for v in data:
if not isinstance(v, (int, float)):
raise ValueError(f"Invalid value in data (not numeric): {v}")
validated_values.append(float(v))
# Berechnungen
try:
mean_val = statistics.mean(validated_values)
variance_val = statistics.pvariance(validated_values)
except statistics.StatisticsError as e:
raise ValueError(f"Error calculating statistics: {e}")
result = AnalysisResult(mean_temperature=mean_val, temperature_variance=variance_val)
# CI-Readiness: Assertions für Datenintegrität
assert isinstance(result.mean_temperature, float)
assert isinstance(result.temperature_variance, float)
return result.to_dict()