data_processor.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. """
  2. 数据处理模块
  3. 用于处理和转换数据
  4. """
  5. import pandas as pd
  6. from typing import List, Dict, Any
  7. def process_data(data: List[Dict[str, Any]]) -> pd.DataFrame:
  8. """
  9. 处理原始数据并返回DataFrame
  10. Args:
  11. data: 原始数据列表
  12. Returns:
  13. 处理后的DataFrame
  14. """
  15. # TODO: 添加数据验证逻辑
  16. df = pd.DataFrame(data)
  17. df = clean_data(df)
  18. df = transform_data(df)
  19. return df
  20. def clean_data(df: pd.DataFrame) -> pd.DataFrame:
  21. """
  22. 清理数据中的空值和异常值
  23. Args:
  24. df: 原始DataFrame
  25. Returns:
  26. 清理后的DataFrame
  27. """
  28. # TODO: 实现更复杂的清理逻辑
  29. df = df.dropna()
  30. df = df.drop_duplicates()
  31. return df
  32. def transform_data(df: pd.DataFrame) -> pd.DataFrame:
  33. """
  34. 转换数据格式
  35. Args:
  36. df: 输入DataFrame
  37. Returns:
  38. 转换后的DataFrame
  39. """
  40. # TODO: 添加更多转换规则
  41. df['processed_date'] = pd.to_datetime(df['date'])
  42. return df
  43. def aggregate_data(df: pd.DataFrame, group_by: List[str]) -> pd.DataFrame:
  44. """
  45. 聚合数据
  46. Args:
  47. df: 输入DataFrame
  48. group_by: 分组字段列表
  49. Returns:
  50. 聚合后的DataFrame
  51. """
  52. return df.groupby(group_by).agg({
  53. 'value': ['sum', 'mean', 'count']
  54. })
  55. def export_data(df: pd.DataFrame, output_path: str) -> None:
  56. """
  57. 导出数据到文件
  58. Args:
  59. df: 要导出的DataFrame
  60. output_path: 输出文件路径
  61. """
  62. # TODO: 支持更多输出格式
  63. df.to_csv(output_path, index=False)
  64. print(f"Data exported to {output_path}")