90 lines
2.4 KiB
Markdown
90 lines
2.4 KiB
Markdown
# 数据预处理模块
|
|
|
|
独立的数据清洗工具,用于在正式分析前准备数据。
|
|
|
|
## 功能
|
|
|
|
- **数据合并**:将多个 Excel/CSV 文件合并为单一 CSV
|
|
- **时间排序**:按时间列对数据进行排序
|
|
- **目录管理**:标准化的原始数据和输出数据目录
|
|
|
|
## 目录结构
|
|
|
|
```
|
|
project/
|
|
├── raw_data/ # 原始数据存放目录
|
|
│ ├── remotecontrol/ # 按数据来源分类
|
|
│ └── ...
|
|
├── cleaned_data/ # 清洗后数据输出目录
|
|
│ ├── xxx_merged.csv
|
|
│ └── xxx_sorted.csv
|
|
└── data_preprocessing/ # 本模块
|
|
```
|
|
|
|
## 使用方法
|
|
|
|
### 命令行
|
|
|
|
```bash
|
|
# 初始化目录结构
|
|
python -m data_preprocessing.cli init
|
|
|
|
# 合并 Excel 文件
|
|
python -m data_preprocessing.cli merge --source raw_data/remotecontrol
|
|
|
|
# 合并并按时间排序
|
|
python -m data_preprocessing.cli merge --source raw_data/remotecontrol --sort-by SendTime
|
|
|
|
# 指定输出路径
|
|
python -m data_preprocessing.cli merge -s raw_data/remotecontrol -o cleaned_data/my_output.csv
|
|
|
|
# 排序已有 CSV
|
|
python -m data_preprocessing.cli sort --input some_file.csv --time-col SendTime
|
|
|
|
# 原地排序(覆盖原文件)
|
|
python -m data_preprocessing.cli sort --input data.csv --inplace
|
|
```
|
|
|
|
### Python API
|
|
|
|
```python
|
|
from data_preprocessing import merge_files, sort_by_time, Config
|
|
|
|
# 合并文件
|
|
output_path = merge_files(
|
|
source_dir="raw_data/remotecontrol",
|
|
output_file="cleaned_data/merged.csv",
|
|
pattern="*.xlsx",
|
|
time_column="SendTime" # 可选:合并后排序
|
|
)
|
|
|
|
# 排序 CSV
|
|
sorted_path = sort_by_time(
|
|
input_path="data.csv",
|
|
output_path="sorted_data.csv",
|
|
time_column="CreateTime"
|
|
)
|
|
|
|
# 自定义配置
|
|
config = Config()
|
|
config.raw_data_dir = "/path/to/raw"
|
|
config.cleaned_data_dir = "/path/to/cleaned"
|
|
config.ensure_dirs()
|
|
```
|
|
|
|
## 配置项
|
|
|
|
| 配置项 | 默认值 | 说明 |
|
|
|--------|--------|------|
|
|
| `raw_data_dir` | `raw_data/` | 原始数据目录 |
|
|
| `cleaned_data_dir` | `cleaned_data/` | 清洗输出目录 |
|
|
| `default_time_column` | `SendTime` | 默认时间列名 |
|
|
| `csv_encoding` | `utf-8-sig` | CSV 编码格式 |
|
|
|
|
## 注意事项
|
|
|
|
1. 本模块与 `DataAnalysisAgent` 完全独立,不会相互调用
|
|
2. 合并时会自动添加 `_source_file` 列标记数据来源(可用 `--no-source-col` 禁用)
|
|
3. Excel 文件会自动合并所有 Sheet
|
|
4. 无效时间值在排序时会被放到最后
|