# Multi File Excel Parquet Analysis

读取多 Sheet Excel 文件并统计规模，支持大文件向 Parquet 格式转换、分类数据统计及可视化报告生成。

- Repository: https://github.com/OpenSenseNova/SenseNova-Skills (6002 stars)
- Category: Documents
- License: MIT
- Last updated: 2026-10-29
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add OpenSenseNova/SenseNova-Skills --skill multi-file-excel-parquet-analysis -g -a claude-code -y`
Codex: `npx skills add OpenSenseNova/SenseNova-Skills --skill multi-file-excel-parquet-analysis -g -a codex -y`
Cursor: `npx skills add OpenSenseNova/SenseNova-Skills --skill multi-file-excel-parquet-analysis -g -a cursor -y`
Gemini CLI: `npx skills add OpenSenseNova/SenseNova-Skills --skill multi-file-excel-parquet-analysis -g -a gemini-cli -y`

## Description

读取多 Sheet Excel 文件并统计规模，支持大文件向 Parquet 格式转换、分类数据统计及可视化报告生成。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

> **Note**: This sub-skill covers one step of the Excel analysis workflow. For the full pipeline (file reading, row counting, large-file optimization, export), see the parent workflow SKILL.md.


Step1 读取 Excel 文件，遍历所有 Sheet 统计行数，评估数据规模。
```python
import pandas as pd
import os

file_path = "input_data.xlsx"  # 替换为实际文件路径

if not os.path.exists(file_path):
    print(f"Error: 文件 {file_path} 不存在")
else:
    # 获取所有 sheet 名称
    xl = pd.ExcelFile(file_path)
    sheet_names = xl.sheet_names
    print("Sheet 列表:", sheet_names)
    
    total_rows = 0
    for sheet in sheet_names:
        # 仅读取第一列以快速统计行数，避免大文件内存溢出
        df_tmp = pd.read_excel(file_path, sheet_name=sheet, usecols=[0])
        row_count = len(df_tmp)
        total_rows += row_count
        print(f"Sheet: {sheet}, 行数: {row_count}")
    
    print(f"总行数汇总: {total_rows}")
```

Step2 读取转换后的数据，执行分类统计分析，计算频数与占比。
```python
import pandas as pd

# 读取 Parquet 文件
df_analyzed = pd.read_parquet(output_parquet)

# 定义目标统计列（如 '剪裁结果'、'状态' 等）
target_col = '剪裁结果' 

if target_col in df_analyzed.columns:
    # 统计各分类数量及占比
    counts = df_analyzed[target_col].value_counts()
    percent = df_analyzed[target_col].value_counts(normalize=True) * 100
    
    # 构建统计表格并添加总计行
    summary_df = pd.DataFrame({
        '分类': counts.index,
        '数量': counts.values,
        '占比(%)': percent.values.round(2)
    })
    
    # 添加总计行
    total_row = pd.DataFrame([['总计', summary_df['数量'].sum(), 100.0]], columns=summary_df.columns)
    summary_df = pd.concat([summary_df, total_row], ignore_index=True)
    
    print("统计摘要:\n", summary_df)
else:
    print(f"未找到目标列: {target_col}")
```

Step3 生成可视化饼图并保存分析报告，提供结果下载链接。
```python
import matplotlib.pyplot as plt

# 配置中文字体（实战技巧：防止图表乱码）
plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False

The rest: https://github.com/OpenSenseNova/SenseNova-Skills/blob/HEAD/skills/sn-da-excel-workflow/capability/excel-reading/multi-file-reading/SKILL.md
