Python*应用 | 定期更新数据表
Python*应用
小编为大家说一说Python*应用的相关知识,很不错的方法小知识,建议收藏哦!
背景
我们的Little Jing又登场了。
这次他接到了新的任务。公司有两个重要的Excel表格:一个是主数据表格,记录了所有产品的销售情况;另一个是每日销售报告,每天都会更新新的销售数据。
任务是每天将这些新数据整合到主数据表格中,并进行分类汇总,以便于管理层可以快速获取关键的销售信息和趋势。
文件内容长这样:


实现思路
Little Jing 在写代码实现之前想了想,这个要怎么做呢?
自动读取数据
首先,需要建立一个机制来自动读取每日销售报告和主数据表。这可以通过编写Python脚本来实现,该脚本将定期运行,自动读取存储在指定位置的Excel文件。(这里我们今天先不做哦~记下了记下了~)
数据整合
读取数据后,接下来的步骤是将每日销售数据合并到主数据表中。这一步骤涉及到数据对齐,确保数据的日期、产品ID等关键字段匹配。
数据清洗
在合并数据之前,可能需要进行数据清洗。这包括识别并处理缺失值、错误数据和重复记录等,确保数据的质量。
数据汇总和分类
合并和清洗数据之后,下一步是对数据进行分类汇总。根据管理层的需求,可以按产品、时间或其他关键指标对数据进行分组,并计算总销量、平均销售额等统计数据。
生成报告
最后一步是基于整理好的数据生成报告。报告可能包括关键指标的总结、趋势图表等,以便管理层快速获取所需信息。
自动化和定时执行
将以上步骤集成到一个Python脚本中,并利用任务调度工具(如Windows的Task Scheduler或Linux的Cron)来实现脚本的定时自动执行。(这里我们今天也不做哦~记下了记下了~)
开始写代码
思路理完,那就开始写吧~
先来看下文件的架构
project
│
├── py文件
│
├── daily
│ ├── sales_23.xlsx
│ ├── sales_24.xlsx
│ └── sales_25.xlsx
│
└── main.xlsx
这里我们放置了三个 sales 报告文件作为示例,同时把文件的层架做了区分,方便我们获取文件。
实际工作中,文件和文件夹都是要作为参数传入的哦~~
具体的代码如下
import pandas as pd
from datetime import datetime
# 定义文件路径
main_data_path = 'main_data.xlsx' # 主数据表路径
daily_data_folder = 'daily_reports/' # 每日报告文件夹路径
# 当天日期
today = datetime.now().strftime('%Y-%m-%d')
# 尝试读取当天的销售报告,如果文件不存在则打印错误信息
try:
daily_data_path = f'{daily_data_folder}sales_report_{today}.xlsx'
daily_data = pd.read_excel(daily_data_path)
except FileNotFoundError:
print(f"今日销售报告({daily_data_path})未找到。")
exit()
# 读取主数据表
# 读取文件时使用通用数据类型
main_data = pd.read_excel(main_data_path, dtype=object)
# 确保主数据表中的'date'列是datetime类型
if main_data['date'].dtype != 'datetime64[ns]':
main_data['date'] = pd.to_datetime(main_data['date'])
# 数据清洗(确保销售数量是正数)
daily_data = daily_data[daily_data['sales_quantity'] > 0]
# 确保日报数据中的'date'列是datetime类型
if daily_data['date'].dtype != 'datetime64[ns]':
daily_data['date'] = pd.to_datetime(daily_data['date'])
# 数据合并
combined_data = pd.concat([main_data, daily_data], ignore_index=True)
# 数据分类与汇总
# 例如,按产品ID和日期汇总销售数量
summary = combined_data.groupby(['product_id', 'date'])['sales_quantity'].sum().reset_index()
# 保存更新后的主数据表
combined_data.to_excel(main_data_path, index=False)
# 保存分类汇总数据
summary.to_excel(f'summary_{today}.xlsx', index=False)
print(f"数据处理完成,已更新主数据表并生成今日汇总报告:summary_{today}.xlsx")
相关阅读
-
网站设计与制作教程 web制作网站的模板
IT袋网为大家说一说网站设计与制作教程和web制作网站的模板的IT小经验,下面来一起了解一下吧。 对于一个完整的网页来说,网页的设计与制作都同样重要。可能许多网页设计与制作的初学者
-
什么是SMTP服务器? 邮件服务器配置
今天为大家介绍什么是SMTP服务器的话题,一定能解决您的问题的,一起来了解吧! SMTP(简单邮件传输协议)服务器是用于发送和接收电子邮件的互联网标准。 它们负责在不同的邮件服务器之
-
mysql数据库安装包多大 分享MySQL数据库教程
这些知识你了解吗?mysql数据库安装包多大和分享MySQL数据库教程的IT小经验,接下来就是全面介绍。 今天我们手把手教学如何下载安装MySQL。 1.浏览器搜索MySQL,找到官网并点击进入。 2.直接点
-
dnf连招辅助工具有哪些 dnf免费辅助官方网站
本文导读:dnf连招辅助工具有哪些和dnf免费辅助官方网站的IT知识,下面为详细的介绍。 地下城与勇士OL辅助怎么下载?许多小伙伴提到辅助,都有点兴奋,无限连击、无限金币、无限生命,但


