当前位置: 首页 > article >正文

使用Python进行excel的数据简单分析

Python代码,需要将处理后分析得到的数据存储到与当前目录下的一个Excel文件中去。

完整的Python代码(初):


import pandas as pd
import os

# 读取Excel文件
file_path = '供应链分析.xlsx'
excel_data = pd.ExcelFile(file_path)

# 读取相关的两个工作表
procurement_df = pd.read_excel(excel_data, '采购中标信息表')
sales_df = pd.read_excel(excel_data, '订单信息表')

# 对”订单信息表“中的”年度“进行筛选,只保留”2024“年的数据
sales_df = sales_df[sales_df['年度'] == 2024]

# print(sales_df)

# 提取”订单信息表“中”商品编号“、”销售数量“两列数据
sales_df = sales_df[['商品编号', '商品名称', '销售数量']]

# print(sales_df)


# # 分别从”采购中标信息表“和”订单信息表“中提取“商品编号”、“商品名称”、”销售数量“两列数据
# procurement_df = procurement_df[['商品编号', '商品名称', '采购数量']]
# sales_df = sales_df[['商品编号', '销售数量']]


# # 合并两个DataFrame
# summary_df = pd.merge(procurement_df, sales_df, on='商品编号', how='outer').fillna(0)
#
# # 计算每一个商品编号的”采销匹配度“,采销匹配度=采购数量/销售数量
# summary_df['采销匹配度'] = (summary_df['采购数量'] / summary_df['销售数量']).round(2)



# # 分别从”采购中标信息表“和”订单信息表“中提取”采购数量“、”销售数量“两列数据
procurement_df = procurement_df[['商品编号', '采购数量']]
# sales_df = sales_df[['商品编号', '销售数量']]

# 对同一商品编号的采购数量进行汇总
procurement_summary = procurement_df.groupby('商品编号')['采购数量'].sum().reset_index()

# 将汇总结果与”订单信息表“合并
sales_summary = pd.merge(sales_df, procurement_summary, on='商品编号', how='left').fillna(0)

# print(sales_summary)


# 计算每一个商品编号的”采销匹配度“,采销匹配度=采购数量/销售数量
sales_summary['采销匹配度'] = (sales_summary['采购数量'] / sales_summary['销售数量']).round(2)
print(sales_summary)

# 将结果保存到新的Excel文件
# 获取文件名(不包括路径)
base_name = os.path.splitext(os.path.basename(file_path))[0]

# 构建新的文件名
output_file_path = f"{base_name}—分析.xlsx"


# 将数据保存到一个名为“采销分许”的工作簿中
with pd.ExcelWriter(output_file_path) as writer:
    sales_summary.to_excel(writer, sheet_name='采销分许', index=False)
    print(f"数据已保存到{output_file_path}中。")



上面的代码运行环境为MacOSPython3.12,成功的运行后,会在终端打印初需要分析计算的数据结果。同时,在与当前Python文件的同一目录下生产了一个“excel文件名-分析.xlsx”新的Excel文件,并且在这个文件中的工作簿“采销分析”中存储了我们分析计算后得到的数据信息。


http://www.kler.cn/a/444291.html

相关文章:

  • 深入浅出支持向量机(SVM)
  • Layui table不使用url属性结合laypage组件实现动态分页
  • Pytorch | 从零构建ResNet对CIFAR10进行分类
  • JavaScript 中常见内置对象的知识点及示例总结
  • unity 最小后监听键盘输入
  • 【Flutter_Web】Flutter编译Web第二篇(webview篇):flutter_inappwebview如何改造方法,变成web之后数据如何交互
  • FFMpeg-Window下Qt使用MinGW配置FFmpeg开发环境
  • 代码开发相关操作
  • Rust之抽空学习系列(四)—— 编程通用概念(下)
  • 迎接国庆,我上线了第一款小程序
  • selenium模拟某网校带密码登陆
  • 举例说明如何在linux下检测摄像头设备具备的功能
  • 如何@Transactional在 Spring Boot 中使用注解
  • Java收发邮件 Jakarta mail
  • Volta——开箱即用的Node.js 版本管理工具
  • linux 下nmcli命令使用方法
  • Unity3D实现水特效(shader)+倒影
  • Android RXjava实现子线程做耗时操作,比new Thread和handler更香
  • MySQL笔记--多表查询
  • C语言输入缓冲区问题及其解决办法
  • Redhat 10 beta安装流程步骤详细教程
  • SWIFT基本使用
  • MySQL 学习系列:01_安装部署MySQL 8.2.0 并使用changer master 传统方式搭建部署一主一从操作记录
  • 1-1 STM32-0.96寸OLED显示与控制
  • linux 安装jdk
  • leetcode----mysql