新闻详情

新闻详情

首页 / 资讯中心 / 详情

考题一:Excel 报表生成脚本

发布时间:2026/10/1 21:33:47来源:尧图网络
考题一:Excel 报表生成脚本
一项目背景和需求背景某团队每月有一份 sales_raw.xlsx字段为 日期、销售员、产品、数量、单价、地区存在空值、重复行与负数量等脏数据。需求编写 Python 脚本读取原始表完成清洗与统计输出 report.xlsx。要求1. 数据清洗删除关键字段缺失的行剔除数量0 的异常行按全字段去重2. 统计维度按销售员汇总销售额数量×单价按地区汇总销售额并给出月度总额3. 输出 report.xlsx含明细清洗后按销售员按地区总览四个工作表4. 约束不得修改原始文件对缺失字段、空文件、无有效数据等情况需给出明确报错或提示。验收标准给定样例数据能一键运行生成正确报表统计数值与人工核对一致异常输入不崩溃且有可读提示。二项目文件结构三原始数据说明四核心代码import os import pandas as pd def generate_sales_report(input_file: str sales_raw.xlsx, output_file: str report.xlsx): key_columns [销售员, 数量, 单价, 地区] all_columns [日期, 销售员, 产品, 数量, 单价, 地区] # 1. 判断输入文件是否存在 if not os.path.exists(input_file): print(f【错误】输入文件 {input_file} 不存在请检查文件是否放在当前目录) return try: df_raw pd.read_excel(input_file) except Exception as e: print(f【错误】读取Excel文件失败{str(e)}) return # 判断原始文件是否为空 if df_raw.empty: print(【提示】原始Excel文件没有任何数据) writer pd.ExcelWriter(output_file, engineopenpyxl) pd.DataFrame().to_excel(writer, sheet_name明细清洗后, indexFalse) pd.DataFrame().to_excel(writer, sheet_name按销售员, indexFalse) pd.DataFrame().to_excel(writer, sheet_name按地区, indexFalse) pd.DataFrame().to_excel(writer, sheet_name总览, indexFalse) writer.close() return # 判断是否缺少关键字段 missing_cols [c for c in key_columns if c not in df_raw.columns] if missing_cols: print(f【错误】原始文件缺少关键字段{,.join(missing_cols)}必须包含{,.join(key_columns)}) return original_rows df_raw.shape[0] # 数据清洗 df_clean df_raw.copy() # 1 删除关键字段为空的行 df_clean df_clean.dropna(subsetkey_columns) # 2 过滤数量 0 df_clean df_clean[df_clean[数量] 0] # 3 全字段去重 df_clean df_clean.drop_duplicates(subsetall_columns, keepfirst) clean_rows df_clean.shape[0] drop_rows original_rows - clean_rows # 判断清洗完是否还有有效数据 if df_clean.empty: print(f【警告】清洗完成后无有效业务数据原始行数:{original_rows},丢弃行数:{drop_rows}) writer pd.ExcelWriter(output_file, engineopenpyxl) pd.DataFrame().to_excel(writer, sheet_name明细清洗后, indexFalse) pd.DataFrame().to_excel(writer, sheet_name按销售员, indexFalse) pd.DataFrame().to_excel(writer, sheet_name按地区, indexFalse) overview_df pd.DataFrame([{ 原始总行数: original_rows, 清洗后有效行数: clean_rows, 丢弃行数: drop_rows, 月度总销售额: 0 }]) overview_df.to_excel(writer, sheet_name总览, indexFalse) writer.close() return # 计算每行销售额 df_clean[销售额] df_clean[数量] * df_clean[单价] # 统计聚合 # 按销售员汇总 df_salesman df_clean.groupby(销售员, as_indexFalse).agg({销售额: sum}) df_salesman df_salesman.sort_values(销售额, ascendingFalse) # 按地区汇总 df_area df_clean.groupby(地区, as_indexFalse).agg({销售额: sum}) df_area df_area.sort_values(销售额, ascendingFalse) # 月度总览 total_sales df_clean[销售额].sum() overview_df pd.DataFrame([{ 原始总行数: original_rows, 清洗后有效行数: clean_rows, 丢弃行数: drop_rows, 月度总销售额: total_sales }]) # 写入多sheet Excel with pd.ExcelWriter(output_file, engineopenpyxl) as writer: df_clean.to_excel(writer, sheet_name明细清洗后, indexFalse) df_salesman.to_excel(writer, sheet_name按销售员, indexFalse) df_area.to_excel(writer, sheet_name按地区, indexFalse) overview_df.to_excel(writer, sheet_name总览, indexFalse) print(f【成功】报表已经生成 {output_file}) print(f原始行数:{original_rows} | 清洗有效行数:{clean_rows} |丢弃:{drop_rows}|月度总销售额:{total_sales:.2f}) if __name__ __main__: generate_sales_report()五:运行测试与结果1.正常数据运行2.原始文件不存在将sales_raw.xlsx移出项目文件夹再次运行代码。3. 全部为无效脏数据修改sales_raw.xlsx将所有数量改为负数保存后运行六总结使用 pandas 完成 Excel 读取、数据清洗、分组统计一行代码实现多 sheet 写入。增加异常捕获与边界判断覆盖文件丢失、空数据、脏数据等异常场景鲁棒性强。自动输出多维度销售报表减少人工 Excel 统计提升数据分析效率。项目结构规范包含依赖声明、说明文档方便他人复现运行。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Android系统五层架构全解析:从Linux内核到应用层 2026/10/1 22:32:59

Android系统五层架构全解析:从Linux内核到应用层

我第一次正儿八经研究Android,不是从写Hello World开始的,而是被网上各种零散概念弄懵之后,翻到了官方那张分层架构图。当时盯着看了很久,每一层都是英文,每一层都似懂非懂。后来做了几年客户端开发,再回头…

阅读更多 →
顺序表与链表全面拆解:内存模型、代码实操与选型指南 2026/10/1 22:32:58

顺序表与链表全面拆解:内存模型、代码实操与选型指南

每次带新人做数据结构入门,我第一句话基本都是:线性表这个概念,你哪怕毕业十年也躲不开。面试官爱问数组和链表的区别,刷题网站天天考反转链表,业务代码里面试者纠结用ArrayList还是LinkedList——说到底就是“顺序表”…

阅读更多 →
AI开发必备的Python实战技巧:环境配置、数据处理与训练优化 2026/10/1 22:32:58

AI开发必备的Python实战技巧:环境配置、数据处理与训练优化

做AI开发这几年,我见过太多项目卡在Python这个环节。模型结构设计得挺漂亮,结果数据读不动、环境装不上、训练跑几个epoch就崩,最后花几天时间排查,发现只是一行不起眼的代码在捣乱。这篇文章想聊聊我在AI方向真正高频用到的Pytho…

阅读更多 →
500行C代码实现微型解释器:词法、语法与求值全解析 2026/10/1 22:32:58

500行C代码实现微型解释器:词法、语法与求值全解析

简介:这是一份面向编译器与解释器入门学习者的实践型资源,围绕「用C语言在500多行内实现一个微型解释器」展开,适合已掌握C语言基础语法、希望理解词法分析、语法分析与AST构建等编译原理核心概念的开发者练手。资源包共10个文件,…

阅读更多 →
BitLocker解密中调整分区导致卡死的修复方法 2026/10/1 22:32:51

BitLocker解密中调整分区导致卡死的修复方法

先交代一下我自己的经历。上个月帮人处理一台 Windows 10 笔记本,情况和你标题里写的几乎一模一样:系统盘开了 BitLocker,觉得没必要想关掉,控制面板点了“关闭 BitLocker”,后台开始解密。跑到一半,用户想…

阅读更多 →
Python LSTM气温预测实战:从数据构造到可视化评估 2026/10/1 22:32:51

Python LSTM气温预测实战:从数据构造到可视化评估

简介:这份资源面向计算机、人工智能及相关专业的在校学生与教师,也适合希望入门时间序列预测的开发者,提供一套基于LSTM的气温预测与可视化完整项目。项目通过bs4从中国天气网爬取北京、上海、广州、郑州四城2011至2021年共3652条天气数据&am…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉