202 lines
5.1 KiB
Markdown
202 lines
5.1 KiB
Markdown
# Parquet数据处理脚本 - 使用指南
|
||
|
||
## 快速开始
|
||
|
||
### 1. 安装依赖
|
||
```bash
|
||
pip install pandas numpy openpyxl
|
||
```
|
||
|
||
### 2. 运行脚本
|
||
```bash
|
||
python process_parquet_to_excel.py
|
||
```
|
||
|
||
### 3. 查看结果
|
||
输出目录:`./output/`
|
||
- 川藏13B标二分部_水准数据报表.xlsx
|
||
- 川藏13B标一分部_水准数据报表.xlsx
|
||
- ...
|
||
|
||
## 新版本 v1.1 特性
|
||
|
||
### ✅ 修复了之前的错误
|
||
- 修复了 "The truth value of an array..." 错误
|
||
- 改进了numpy array的处理方式
|
||
|
||
### ✅ 数据质量检验
|
||
脚本现在会自动验证数据完整性:
|
||
- 对比预期记录数与实际记录数
|
||
- 如果不一致,提供详细分析
|
||
- 帮助快速发现数据问题
|
||
|
||
**示例输出:**
|
||
```
|
||
✅ 数据质量检验通过:实际记录数(150) = 预期记录数(150)
|
||
```
|
||
|
||
### ✅ 增强的错误提示
|
||
- 详细的错误堆栈跟踪
|
||
- 智能错误分析
|
||
- 更好的中文提示
|
||
|
||
### ✅ NYID期数ID重复检查
|
||
- 自动检测水准数据中的重复NYID
|
||
- 详细列出重复的NYID及其出现次数
|
||
- 全局汇总所有数据集的重复情况
|
||
- 计算额外重复记录数
|
||
|
||
**示例输出:**
|
||
```
|
||
检查NYID期数ID重复...
|
||
|
||
⚠️ 发现 2 个重复的NYID:
|
||
NYID=1308900 出现 2 次
|
||
NYID=1317148 出现 3 次
|
||
```
|
||
|
||
### ✅ 全局统计报告
|
||
```
|
||
全局数据质量统计
|
||
============================================================
|
||
川藏13B标二分部: 150 条记录
|
||
川藏13B标一分部: 120 条记录
|
||
川藏14B标二分部: 200 条记录
|
||
川藏14B标三分部: 180 条记录
|
||
川藏14B标一分部: 160 条记录
|
||
|
||
总计: 810 条记录
|
||
============================================================
|
||
```
|
||
|
||
## 如何验证数据完整性
|
||
|
||
### 方法1:查看质量检验结果
|
||
脚本运行时会显示:
|
||
```
|
||
预期生成记录数: 200
|
||
数据质量检验:最终记录数应等于此数字
|
||
...
|
||
✅ 数据质量检验通过:实际记录数(200) = 预期记录数(200)
|
||
```
|
||
|
||
如果看到 ⚠️ 警告,说明有数据丢失,需要检查。
|
||
|
||
### 方法2:手动验证
|
||
1. 统计水准数据文件中的记录总数
|
||
2. 对比Excel文件中的记录数
|
||
3. 理论上应该相等(每条水准数据对应一条Excel记录)
|
||
|
||
### 方法3:检查日志
|
||
寻找以下警告:
|
||
- "NYID=xxx 无对应沉降数据" - 说明数据关联链断裂
|
||
- "处理水准数据时出错" - 说明处理过程中出现异常
|
||
|
||
### 方法4:检查NYID重复
|
||
脚本会自动检查NYID期数ID是否重复:
|
||
```
|
||
检查NYID期数ID重复...
|
||
|
||
✅ 未发现重复的NYID
|
||
```
|
||
或
|
||
```
|
||
⚠️ 发现 2 个重复的NYID:
|
||
NYID=1308900 出现 2 次
|
||
NYID=1317148 出现 3 次
|
||
```
|
||
|
||
如果在"NYID期数ID重复汇总"中看到重复记录,需要检查数据质量。
|
||
|
||
## 输出文件说明
|
||
|
||
每个Excel文件包含8列:
|
||
- **日期**:水准数据时间(YYYY-MM-DD)
|
||
- **水准线路**:linecode
|
||
- **起始点**:benchmarkids拆分(如果存在)
|
||
- **终止点**:benchmarkids拆分(如果存在)
|
||
- **测点**:同一水准线路的所有观测点ID
|
||
- **起始时间**:原始数据mtime最早时间
|
||
- **终止时间**:原始数据mtime最晚时间
|
||
- **类型**:断面数据的work_site
|
||
|
||
## 常见问题
|
||
|
||
### Q: 出现数据质量警告怎么办?
|
||
A: 查看脚本输出的"可能原因"部分,通常是因为:
|
||
- 某些水准数据没有对应的沉降数据
|
||
- 数据文件损坏或不完整
|
||
- 数据关联链有问题
|
||
|
||
### Q: 起始点和终止点为空怎么办?
|
||
A: 这说明水准数据中不存在benchmarkids字段,属于正常情况。脚本会显示:
|
||
```
|
||
注意: 未发现benchmarkids字段,起始点/终止点将为空
|
||
```
|
||
|
||
### Q: 时间范围显示默认值怎么办?
|
||
A: 这说明该数据集没有原始数据表(原始数据表),脚本会使用水准数据时间作为默认值。
|
||
|
||
### Q: 如何查看详细的处理日志?
|
||
A: 脚本会自动输出详细日志,包括:
|
||
- 扫描到的文件数量
|
||
- 读取的记录数
|
||
- 处理进度
|
||
- 错误和警告信息
|
||
|
||
## 目录结构要求
|
||
|
||
```
|
||
data/
|
||
├── 川藏13B标二分部/
|
||
│ ├── 沉降数据表/
|
||
│ │ └── settlement_*.parquet
|
||
│ ├── 断面数据表/
|
||
│ │ └── section_*.parquet
|
||
│ ├── 观测点数据表/
|
||
│ │ └── point_*.parquet
|
||
│ └── 水准数据表/
|
||
│ └── level_*.parquet
|
||
├── 川藏13B标一分部/
|
||
│ └── ...
|
||
└── ...
|
||
```
|
||
|
||
## 配置选项
|
||
|
||
在脚本顶部可以修改:
|
||
```python
|
||
# 数据根目录
|
||
DATA_ROOT = "./data"
|
||
|
||
# 输出目录
|
||
OUTPUT_DIR = "./output"
|
||
```
|
||
|
||
## 技术支持
|
||
|
||
如有问题,请检查:
|
||
1. 所有parquet文件是否完整
|
||
2. 数据目录结构是否正确
|
||
3. 依赖包是否已正确安装
|
||
4. 查看脚本输出的错误和警告信息
|
||
|
||
## 版本历史
|
||
|
||
- **v1.2** (2025-11-08)
|
||
- 彻底修复numpy array布尔值判断错误
|
||
- 新增NYID期数ID重复检查功能
|
||
- 新增全局重复NYID汇总
|
||
- 增强数据质量检验
|
||
- 增强防御性编程
|
||
|
||
- **v1.1** (2025-11-08)
|
||
- 修复numpy array布尔值错误
|
||
- 新增数据质量检验机制
|
||
- 新增全局统计报告
|
||
- 增强错误处理和提示
|
||
|
||
- **v1.0** (2025-11-08)
|
||
- 初始版本
|
||
- 基本的数据处理和Excel导出功能
|