← 返回
未分类

盘货数据源

从Excel文件的'整体库存'工作表中提取指定字段,生成精简数据表,适用于供应链库存数据分析
从Excel文件的'整体库存'工作表中提取指定字段,生成精简数据表,适用于供应链库存数据分析
user_e9ec61f3
未分类 community v1.0.0 1 版本 98507.5 Key: 无需
★ 0
Stars
📥 66
下载
💾 0
安装
1
版本
#latest

概述

Excel字段提取(供应链库存数据)

功能概述

从供应链Excel报表的"整体库存"工作表中,自动提取指定的核心字段,生成精简的数据表格。适用于日常库存监控、数据分享和报表制作。

适用场景

  • 供应链数据分析师需要从完整报表中提取关键字段
  • 跨部门分享精简数据(避免泄露完整数据结构)
  • 生成标准化数据模板用于后续分析
  • 定期数据提取任务自动化

数据来源:鱼跃品牌供应链全品类库存报表


一、字段提取清单

默认字段(2026-05-21版)

从"整体库存"工作表中提取以下14个字段(按列名精确匹配):

序号字段名说明
--------------------
1SAP代码产品唯一标识
2SAP代码2备用产品标识
3京东库存(截止前一日24点)京东平台实时库存
4京东在途+商家所有(含开单未提货及今日入库)京东在途及商家库存
5股份库存股份公司库存
6京东近7天/7*30京东近7天销量折算月销
7京东周转京东库存周转率
82026-5_排产数量2026年5月计划排产数量
92026-5_入库数量2026年5月实际入库数量
102026-5_待入库数量2026年5月待入库数量
112026-6_排产数量2026年6月计划排产数量
122026-5_京东销量2026年5月京东平台销量
132026-5_天猫销量2026年5月天猫平台销量
142026-5_渠道出货量2026年5月渠道总出货量

字段更新说明

  • 此清单基于历史工作记录固化,如需调整可修改技能配置
  • 列名可能存在前导/后导空格,提取时使用精确匹配
  • 新增字段需在技能配置中添加对应列名

二、完整工作流程

输入Excel文件 → 读取"整体库存"工作表 → 
验证字段存在性 → 提取指定字段 → 
生成新Excel文件 → 输出结果

输入要求

  • Excel文件(.xlsx格式)
  • 必须包含名为"整体库存"的工作表
  • 工作表应包含上述14个字段(列名需完全一致)

输出规则

  • 新文件命名:{原文件名}_指定字段摘取.xlsx
  • 保存路径:与原文件相同目录
  • 数据格式:保留所有行数据,不修改原始值
  • 不包含索引列

三、核心脚本

3.1 Python提取脚本 (extract_fields.py)

import pandas as pd
import sys
import os

def extract_excel_fields(input_file, sheet_name='整体库存', output_suffix='_指定字段摘取.xlsx'):
    """
    从Excel文件中提取指定字段
    
    参数:
    ----------
    input_file : str
        输入Excel文件路径
    sheet_name : str, default='整体库存'
        要读取的工作表名称
    output_suffix : str, default='_指定字段摘取.xlsx'
        输出文件后缀
    
    返回:
    -------
    str : 输出文件路径
    """
    
    # 字段提取清单
    columns_to_extract = [
        'SAP代码',
        'SAP代码2',
        '京东库存(截止前一日24点)',
        '京东在途+商家所有(含开单未提货及今日入库)',
        '股份库存',
        '京东近7天/7*30',
        '京东周转',
        '2026-5_排产数量',
        '2026-5_入库数量',
        '2026-5_待入库数量',
        '2026-6_排产数量',
        '2026-5_京东销量',
        '2026-5_天猫销量',
        '2026-5_渠道出货量'
    ]
    
    # 验证输入文件
    if not os.path.exists(input_file):
        raise FileNotFoundError(f"输入文件不存在: {input_file}")
    
    # 生成输出路径
    base_name = os.path.splitext(os.path.basename(input_file))[0]
    output_file = os.path.join(os.path.dirname(input_file), f'{base_name}{output_suffix}')
    
    print(f'📂 读取文件: {input_file}')
    print(f'📊 工作表: {sheet_name}')
    print(f'🔍 提取字段数: {len(columns_to_extract)}')
    
    try:
        # 读取Excel文件
        df = pd.read_excel(input_file, sheet_name=sheet_name)
        print(f'📈 原始数据形状: {df.shape}')
        
        # 检查列是否存在
        missing_columns = [col for col in columns_to_extract if col not in df.columns]
        if missing_columns:
            print('❌ 错误: 以下字段在数据中不存在:')
            for col in missing_columns:
                print(f'  {repr(col)}')
            print('\n📋 实际列名:')
            for col in df.columns:
                print(f'  {repr(col)}')
            raise ValueError(f"缺失字段: {missing_columns}")
        
        # 提取指定列
        df_extracted = df[columns_to_extract].copy()
        print(f'✅ 提取后形状: {df_extracted.shape}')
        
        # 保存到新Excel文件
        df_extracted.to_excel(output_file, index=False)
        print(f'💾 数据已保存至: {output_file}')
        
        # 显示统计信息
        print('\n📊 数据统计:')
        print(f'  行数: {len(df_extracted)}')
        print(f'  列数: {len(df_extracted.columns)}')
        print(f'  文件大小: {os.path.getsize(output_file):,} bytes')
        
        return output_file
        
    except Exception as e:
        print(f'❌ 处理过程中出错: {e}')
        raise

if __name__ == '__main__':
    # 使用示例
    if len(sys.argv) < 2:
        print("使用方法: python extract_fields.py <Excel文件路径>")
        print("示例: python extract_fields.py C:\\路径\\全品类库存.xlsx")
        sys.exit(1)
    
    input_file = sys.argv[1]
    try:
        output_file = extract_excel_fields(input_file)
        print(f'\n🎉 提取完成! 文件已保存: {output_file}')
    except Exception as e:
        sys.exit(1)

3.2 脚本安装与运行

安装依赖

pip install pandas openpyxl

运行方式

  1. 命令行运行

```bash

python extract_fields.py "C:\路径\全品类库存-调整后.xlsx"

```

  1. Python交互式运行

```python

from extract_fields import extract_excel_fields

output = extract_excel_fields("C:\\路径\\全品类库存.xlsx")

```

  1. 批量处理

```python

import glob

for file in glob.glob("C:\\路径\\*.xlsx"):

extract_excel_fields(file)

```


四、在WorkBuddy中使用

4.1 快速调用命令

当需要提取Excel字段时,可以直接告诉WorkBuddy:

"按上次的字段清单提取" 或 "提取供应链库存字段"

4.2 完整使用流程

  1. 提供Excel文件:通过@file语法附加Excel文件
  2. 指定指令:"按上次的字段清单提取"
  3. 等待处理:WorkBuddy自动读取文件、提取字段
  4. 获取结果:下载生成的_指定字段摘取.xlsx文件

4.3 示例对话

用户:@"C:/路径/全品类库存.xlsx" 按上次的字段清单提取

WorkBuddy:
✅ 已按照字段清单提取数据
📊 结果:650行 × 14列
💾 文件:全品类库存_指定字段摘取.xlsx
📎 附件已交付

五、自定义与扩展

5.1 修改字段清单

编辑extract_fields.py中的columns_to_extract列表:

columns_to_extract = [
    # 添加或删除字段
    'SAP代码',
    '新增字段名',
    # ...
]

5.2 处理多个工作表

如需处理多个工作表,修改函数参数:

def extract_multiple_sheets(input_file, sheet_names=['整体库存', '其他表']):
    for sheet in sheet_names:
        extract_excel_fields(input_file, sheet_name=sheet)

5.3 添加数据清洗

在提取后添加数据处理逻辑:

# 去除空值行
df_extracted = df_extracted.dropna(subset=['SAP代码'])

# 数据类型转换
df_extracted['SAP代码'] = df_extracted['SAP代码'].astype(str)

# 添加计算列
df_extracted['库存总量'] = df_extracted['京东库存'] + df_extracted['股份库存']

六、错误处理与调试

6.1 常见错误及解决

错误现象可能原因解决方案
------------------------------
"文件不存在"路径错误或文件被占用检查文件路径,确保文件已关闭
"工作表不存在"工作表名称不匹配确认工作表名为"整体库存"(区分大小写)
"字段不存在"列名不匹配(前导/后导空格)使用repr()查看精确列名,调整字段列表
内存不足文件过大分块读取:pd.read_excel(..., chunksize=1000)
编码错误文件包含特殊字符指定编码:pd.read_excel(..., engine='openpyxl')

6.2 调试步骤

  1. 查看列名

```python

import pandas as pd

df = pd.read_excel('文件.xlsx', nrows=1)

for col in df.columns:

print(repr(col))

```

  1. 验证字段存在性

```python

required = ['SAP代码', '京东库存']

missing = [col for col in required if col not in df.columns]

if missing:

print(f"缺失字段: {missing}")

```

  1. 测试小样本

```python

# 只读取前100行测试

df_sample = pd.read_excel('文件.xlsx', nrows=100)

```


七、自动化与集成

7.1 WorkBuddy自动化任务

创建定期提取任务:

# 自动化配置
schedule: "daily 09:00"
task: "提取供应链日报数据"
inputs:
  - "C:\日报\供应链全品类.xlsx"
outputs:
  - "C:\日报\提取结果\供应链日报_提取.xlsx"

7.2 与数据管道集成

# 数据管道示例
def data_pipeline():
    # 1. 提取字段
    raw_file = extract_excel_fields("原始数据.xlsx")
    
    # 2. 数据转换
    df = pd.read_excel(raw_file)
    df_processed = transform_data(df)
    
    # 3. 加载到数据库
    load_to_database(df_processed)
    
    # 4. 生成报告
    generate_report(df_processed)

7.3 版本控制

  • 将字段清单保存为配置文件(JSON/YAML)
  • 记录提取历史和时间戳
  • 支持回滚到之前的字段版本

八、性能优化

8.1 大文件处理

# 分块读取(适用于超过10万行)
chunk_size = 10000
chunks = pd.read_excel('大文件.xlsx', chunksize=chunk_size)
results = []
for chunk in chunks:
    extracted = chunk[columns_to_extract]
    results.append(extracted)
df_final = pd.concat(results, ignore_index=True)

8.2 内存优化

# 只读取需要的列
usecols = columns_to_extract + ['必要辅助列']
df = pd.read_excel('文件.xlsx', usecols=usecols)

8.3 并行处理

from concurrent.futures import ThreadPoolExecutor

def process_multiple_files(file_list):
    with ThreadPoolExecutor(max_workers=4) as executor:
        results = list(executor.map(extract_excel_fields, file_list))
    return results

九、技能依赖

必需工具

  • Python 3.8+:运行提取脚本
  • pandas:数据处理核心库
  • openpyxl:Excel文件读写
  • WorkBuddy:自动化执行环境

可选工具

  • PyArrow:加速大文件读取
  • DuckDB:内存数据库,用于复杂查询
  • Streamlit:构建数据提取Web界面

十、质量保证

10.1 验证规则

  • 提取后行数应与原始数据一致
  • 关键字段(SAP代码)不应有空值
  • 数值字段应进行范围检查(如库存不为负)
  • 输出文件格式应符合Excel标准

10.2 测试用例

def test_extraction():
    # 测试正常文件
    test_file = "测试数据.xlsx"
    output = extract_excel_fields(test_file)
    assert os.path.exists(output)
    
    # 验证字段完整性
    df = pd.read_excel(output)
    assert 'SAP代码' in df.columns
    assert len(df.columns) == 14
    
    print("✅ 所有测试通过")

10.3 监控指标

  • 提取成功率(%)
  • 平均处理时间(秒)
  • 数据质量评分
  • 错误类型分布

十一、交付物规范

11.1 文件命名

{原文件名}_指定字段摘取.xlsx

示例:全品类库存-调整后_指定字段摘取.xlsx

11.2 文件结构

输出文件/
├── 数据表(14个指定字段)
├── 元数据(可选)
│   ├── 提取时间
│   ├── 字段清单版本
│   └── 数据统计
└── 质量报告(可选)

11.3 文档要求

  • 每次提取应记录字段清单版本
  • 重大字段变更需更新技能文档
  • 保留历史配置便于追溯

十二、更新记录

版本日期变更说明
----------------------
v1.02026-05-21初始版本,基于历史工作记录创建
固化14个核心字段清单
添加完整脚本和文档

技能来源:基于鱼跃品牌供应链数据分析工作历史记录

适用场景:医疗器械、电商供应链、库存管理

数据安全:仅提取指定字段,不包含原始完整数据

维护责任:数据团队定期更新字段清单

版本历史

共 1 个版本

  • v1.0.0 Initial release 当前
    2026-05-21 19:18 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

全网维价

user_e9ec61f3
★ 0 📥 130

电商数据OSS上传

user_e9ec61f3
电商日报自动上传OSS。触发场景:用户说「处理数据并上传OSS」「上传拼多多/抖音/京东/天猫数据」「处理拼多多/抖音/京东/天猫数据」。支持四个平台:拼多多(pdd)、抖音(dy)、京东(jd)、天猫(tm)。
★ 0 📥 115

盘货模型

user_e9ec61f3
>-
★ 0 📥 90