IT袋

当前位置:主页 > 经验教程 > 建站编程 >

Python*应用

Python*应用 | 定期更新数据表

时间:2024-01-26 20:00:49 来源:IT袋 作者:马勇
导读:Python*应用,小编为大家说一说Python*应用的相关知识,很不错的方法小知识,建议收藏哦! 背景 我们的 Little Jing 又登场了。 这次他接到了新的任务。公司有两个重要的Excel表格: 一

Python*应用

小编为大家说一说Python*应用的相关知识,很不错的方法小知识,建议收藏哦!

背景

我们的Little Jing又登场了。

这次他接到了新的任务。公司有两个重要的Excel表格:一个是主数据表格,记录了所有产品的销售情况;另一个是每日销售报告,每天都会更新新的销售数据。

任务是每天将这些新数据整合到主数据表格中,并进行分类汇总,以便于管理层可以快速获取关键的销售信息和趋势。

文件内容长这样: 

Python*应用

Python*应用

实现思路

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制作网站的模板

    网站设计与制作教程 web制作网站的模板

    IT袋网为大家说一说网站设计与制作教程和web制作网站的模板的IT小经验,下面来一起了解一下吧。 对于一个完整的网页来说,网页的设计与制作都同样重要。可能许多网页设计与制作的初学者

  • 什么是SMTP服务器? 邮件服务器配置

    什么是SMTP服务器? 邮件服务器配置

    今天为大家介绍什么是SMTP服务器的话题,一定能解决您的问题的,一起来了解吧! SMTP(简单邮件传输协议)服务器是用于发送和接收电子邮件的互联网标准。 它们负责在不同的邮件服务器之

  • mysql数据库安装包多大 分享MySQL数据库教程

    mysql数据库安装包多大 分享MySQL数据库教程

    这些知识你了解吗?mysql数据库安装包多大和分享MySQL数据库教程的IT小经验,接下来就是全面介绍。 今天我们手把手教学如何下载安装MySQL。 1.浏览器搜索MySQL,找到官网并点击进入。 2.直接点

  • dnf连招辅助工具有哪些 dnf免费辅助官方网站

    dnf连招辅助工具有哪些 dnf免费辅助官方网站

    本文导读:dnf连招辅助工具有哪些和dnf免费辅助官方网站的IT知识,下面为详细的介绍。 地下城与勇士OL辅助怎么下载?许多小伙伴提到辅助,都有点兴奋,无限连击、无限金币、无限生命,但