def parse_number(value: Any, target_type: type) -> Optional[float]: """Parse string to number with proper error handling.""" if pd.isna(value): return None try: cleaned = str(value).strip().replace(',', '') return target_type(cleaned) except (ValueError, TypeError): return None def clean_text(text: str) -> str: """Clean and normalize text fields.""" if pd.isna(text): return "" return str(text).strip().title()