在Excel中通过Python运行公式和函数实现数据计算
目录
一、引言
1.1 背景介绍
1.2 Python in Excel 的意义
二、环境准备
2.1 安装必要的软件
2.2 配置 Excel
三、基础操作
3.1 输入 Python 代码
3.2 调用 Python 库
四、案例分析
4.1 数据读取与处理
4.1.1 读取 Excel 数据
4.1.2 数据处理
4.2 数据可视化
4.2.1 绘制图表
4.3 VLOOKUP 函数的 Python 实现
五、高级应用
5.1 机器学习
5.2 数据透视表
六、总结
随着数据分析和商业智能的不断发展,Excel 作为传统的数据分析工具,尽管功能强大,但在处理大规模数据集和复杂计算时逐渐显得力不从心。
幸运的是,Microsoft 推出了在 Excel 中直接运行 Python 代码的功能,这一创新极大地扩展了 Excel 的数据处理能力,使得用户能够利用 Python 的强大库和工具来进行更复杂的数据分析和计算。
本文将详细介绍如何在 Excel 中通过 Python 运行公式和函数,实现数据计算,并通过丰富的案例和代码帮助新手朋友快速上手。
一、引言
1.1 背景介绍
在以往,Excel 因其易用性和强大的数据处理能力,成为了商业分析、科学研究等领域的首选工具。然而,随着数据量的不断增大和数据分析需求的复杂化,Excel 渐渐暴露出其局限性,如最大支持行数限制(1048576 行)、计算速度较慢等。这时,Python 和 R 等编程语言因其高效、灵活的特性逐渐崭露头角,成为数据分析领域的新宠。
1.2 Python in Excel 的意义
Microsoft 推出的 Python in Excel 功能,使得用户可以直接在 Excel 环境中运行 Python 代码,从而结合 Excel 的易用性和 Python 的强大功能,极大地提升了数据处理和分析的效率和灵活性。这一功能不仅让 Excel 用户能够轻松地使用 Python 进行复杂的数据分析,还使得 Python 开发者能够更方便地将分析结果直接展示在 Excel 中,与团队成员共享。
二、环境准备
2.1 安装必要的软件
要使用 Python in Excel 功能,首先需要确保你的计算机上安装了以下软件:
Microsoft 365(Windows 版),并且已加入 Microsoft 365 预览体验计划,选择 Beta 版频道。
Python 环境,推荐使用 Anaconda,因为它集成了许多常用的科学计算库。
2.2 配置 Excel
按照以下步骤配置 Excel 以启用 Python 功能:
打开 Excel,点击左上角的【文件】>【账户】。
在页面左边找到并选择 Beta 版频道。
重启 Excel。
打开一个新的空白工作簿,点击【公式】选项卡,选择【插入 Python】-【Excel 中的 Python】。
在弹出的对话框中单击【试用预览版】。
三、基础操作
3.1 输入 Python 代码
在 Excel 中使用 Python,你只需在单元格或编辑栏里输入以 =PY 开头的公式,然后输入 Python 代码。例如,在 A1 单元格中输入 =PY("print('Hello, Excel!')") 并按 Ctrl+Enter,Excel 会在 Python 环境中执行这段代码,并在 Python 控制台中显示结果(尽管这个结果不会直接显示在 Excel 单元格中)。
3.2 调用 Python 库
Python in Excel 支持调用几乎所有的 Python 库,这使得数据分析变得更加高效。例如,你可以使用 pandas 库来读取和处理 Excel 中的数据,使用 matplotlib 和 seaborn 库来绘制图表。
四、案例分析
4.1 数据读取与处理
4.1.1 读取 Excel 数据
假设你有一个名为 data.xlsx 的 Excel 文件,里面包含了一个名为 Sheet1 的工作表,你想要使用 pandas 库来读取这个工作表中的数据。
import pandas as pd # 读取 Excel 文件
df = pd.read_excel("data.xlsx", sheet_name="Sheet1") # 显示数据的前几行
print(df.head())
在 Excel 中,你可以通过 =PY("...") 的形式来调用这段代码,但需要注意的是,Excel 并不直接显示 pandas 的输出。一种解决方案是将 pandas 的 DataFrame 转换为 Excel 可以识别的格式(如 CSV 字符串),然后将其返回给 Excel 单元格。不过,通常更推荐在 Python 脚本中处理数据,然后将结果保存为新的 Excel 文件或使用其他方式展示。
4.1.2 数据处理
假设你想要对数据中的某个列进行简单的计算,比如计算销售额的平均值。
import pandas as pd # 读取 Excel 文件
df = pd.read_excel("data.xlsx", sheet_name="Sheet1") # 计算销售额的平均值
avg_sales = df['销售额'].mean() # 返回结果(这里以字符串形式返回,以便在 Excel 中显示)
return_str = f"销售额平均值为: {avg_sales:.2f}"
在 Excel 中,你可以通过 =PY("...") 调用这段代码,并将返回的字符串显示在单元格中。然而,由于 Excel 的限制,你可能需要编写一个更复杂的函数来处理字符串和数据的转换。
4.2 数据可视化
4.2.1 绘制图表
Python 的 matplotlib 和 seaborn 库提供了强大的绘图功能,你可以利用这些库在 Excel 中直接生成图表。不过,由于 Excel 本身不支持直接显示 Python 生成的图表,你需要将图表保存为图片文件,然后在 Excel 中插入这张图片。
import pandas as pd
import matplotlib.pyplot as plt # 读取 Excel 文件
df = pd.read_excel("data.xlsx", sheet_name="Sheet1") # 绘制图表
plt.figure(figsize=(10, 6))
plt.bar(df['产品'], df['销量'])
plt.title('产品销量')
plt.xlabel('产品')
plt.ylabel('销量') # 保存图表为图片文件
plt.savefig("sales_chart.png")
plt.close() # 注意:这里并没有直接将图表显示在 Excel 中,而是保存为图片
# 你需要在 Excel 中手动插入这张图片
4.3 VLOOKUP 函数的 Python 实现
在 Excel 中,VLOOKUP 函数是一个非常强大的工具,用于根据一个键(如员工工号)查找并返回另一列中的值(如员工姓名)。Python 中的 pandas 库可以很容易地实现这一功能。
假设你有一个包含员工信息的 Excel 文件 employee_data.xlsx,其中包含两列:工号 和 姓名。你想要根据工号查找对应的姓名。
import pandas as pd # 读取 Excel 文件
df = pd.read_excel("employee_data.xlsx") # 定义一个函数来模拟 VLOOKUP 功能
def vlookup_by_id(id_value): result = df[df['工号'] == id_value]['姓名'].values[0] if not df[df['工号'] == id_value].empty else None return result # 在 Excel 中调用这个函数(注意:这里需要通过某种方式将函数集成到 Excel 中,比如使用 VBA 或 Excel 的 Python 插件)
# 但由于 Excel 的限制,你可能需要编写一个宏或使用 Excel 的“运行 Python 脚本”功能(如果有的话)
实际上,由于 Excel 并不直接支持从单元格中调用 Python 函数,你需要通过一些间接的方式来实现这个功能,比如使用 VBA 来调用 Python 脚本,或者使用 Excel 的插件(如 Power Query 或 PyXLL)来桥接 Excel 和 Python。
五、高级应用
5.1 机器学习
Python 的 scikit-learn 库提供了丰富的机器学习算法,你可以在 Excel 中通过 Python 来运行这些算法,进行数据挖掘和预测分析。
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import pandas as pd # 读取数据
df = pd.read_excel("sales_data.xlsx") # 准备数据
X = df[['广告投入', '促销力度']] # 特征变量
y = df['销售额'] # 目标变量 # 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 训练模型
model = LinearRegression()
model.fit(X_train, y_train) # 预测
predictions = model.predict(X_test) # 这里可以将预测结果保存到新的 Excel 文件中,或者在 Python 控制台中查看
5.2 数据透视表
虽然 Excel 本身提供了强大的数据透视表功能,但 Python 的 pandas 库同样可以轻松地实现类似的功能。
import pandas as pd # 读取数据
df = pd.read_excel("sales_data.xlsx") # 使用 pandas 的 pivot_table 函数创建数据透视表
pivot_table = pd.pivot_table(df, values='销售额', index=['年份', '产品'], aggfunc='sum') # 显示数据透视表
print(pivot_table) # 可以将结果保存为新的 Excel 文件
pivot_table.to_excel("sales_pivot_table.xlsx")
六、总结
通过本文的介绍,我们了解了如何在 Excel 中通过 Python 运行公式和函数,实现数据计算和分析。Python in Excel 的功能极大地扩展了 Excel 的数据处理能力,使得用户能够利用 Python 的强大库和工具来进行更复杂的数据分析和计算。无论是读取和处理 Excel 数据、绘制图表,还是实现 VLOOKUP 功能、进行机器学习和数据透视表分析,Python 都为 Excel 用户提供了强大的支持。
相关文章:

在Excel中通过Python运行公式和函数实现数据计算
目录 一、引言 1.1 背景介绍 1.2 Python in Excel 的意义 二、环境准备 2.1 安装必要的软件 2.2 配置 Excel 三、基础操作 3.1 输入 Python 代码 3.2 调用 Python 库 四、案例分析 4.1 数据读取与处理 4.1.1 读取 Excel 数据 4.1.2 数据处理 4.2 数据可视化 4.2…...

基于SpringBoot+Vue的美妆购物系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…...
uniapp uni-table合并单元格
视图层 <uni-table border stripe emptyText"暂无更多数据" class"table_x"><!-- 表头行 --><uni-tr><uni-th align"center">患者姓名</uni-th><uni-th align"center">透析方式</uni-th>&…...

MySQL 创建数据库和表全攻略
一、MySQL 创建数据库与表的重要性 MySQL 作为广泛应用的关系型数据库管理系统,创建数据库和表具有至关重要的意义。 在数据存储方面,数据库就如同一个巨大的仓库,为各类数据提供了安全、有序的存储环境。通过创建数据库,可以将相…...

大数据-126 - Flink State 03篇 状态原理和原理剖析:状态存储 Part1
点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...

RFID射频模块(MFRC522 STM32)
目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 MFRC522.h文件 MFRC522.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 RC522 RFID射频模块是一款广泛应用于非接触式RFID系统中的核心组件,由NXP&…...

【JavaSE】--方法的使用
文章目录 1. 方法概念及使用1.1 什么是方法1.2 方法定义1.3 方法调用的执行过程1.4 实参和形参的关系(重要)1.5 没有返回值的方法 2. 方法重载2.1 方法重载概念2.2 方法签名 3. 递归3.1 递归的概念3.2 递归执行过程分析3.3 递归练习 1. 方法概念及使用 1…...

wireshark打开时空白|没有接口,卸载重装可以解决
解决方法:卸载wireshark,全选卸载干净,重新安装旧版的wireshark4.2.7, 甚至cmd下运行net start npf时显示服务名无效,但打开wireshark仍有多个接口 错误描述: 一开始下载的是wireshark的最新版,win11 x64 在安装wir…...

单值二叉树--(C语言)
题目如下: 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才返回 true;否则返回 false。 示例 1: 输入:[1,1,1,1,1,null,1] 输出:true示例 2&a…...

Linux云计算 |【第三阶段】PROJECT1-DAY2
主要内容: 网站架构演变、LNPMariadb数据库分离、Web服务器集群(部署Nginx后端web服务器、部署NFS共享存储服务器、部署Haproxy代理服务器、部署DNS域名解析服务器) 一、网站架构演变: 随着网站访问量和业务复杂度的增加&#x…...

Claude Prompt 汉语新解
感谢刚哥! ;; 作者: 李继刚 ;; 版本: 0.3 ;; 模型: Claude Sonnet ;; 用途: 将一个汉语词汇进行全新角度的解释 ;; 设定如下内容为你的 *System Prompt* (defun 新汉语老师 () "你是年轻人,批判现实,思考深刻,语言风趣" (风格 . ("Oscar Wilde&q…...

【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(2)
运维监控系列文章入口:【运维监控】系列文章汇总索引 文章目录 四、grafana集成influxdb监控java 虚拟机以及方法耗时情况1、添加grafana数据源2、添加grafana的dashboard1)、选择新建dashboard方式2)、导入dashboard 3、验证 关于java应用的…...

怎么看待伦敦银交易的风险与收益?
伦敦银交易的风险与收益,在宣传材料中,伦敦银是一种潜在收益很高,潜在风险不大的品种。然而在实践中我们发现,伦敦银交易好像并不如宣传材料说的那样容易做。那么,具体伦敦银交易的风险和收益是怎么样的?那…...
如何通俗易懂的解释TON的智能合约
文章目录 一、小故事一则二、Ton的智能合约在小故事中三、python代码模拟 一、小故事一则 在一个遥远的国度里,有一个被魔法笼罩的小镇,这个小镇每年都会举办一场盛大的戏剧节。这个戏剧节不仅是演员们展示才华的舞台,更是他们交流心得、共同…...

针对Docker容器的可视化管理工具—DockerUI
目录 ⛳️推荐 前言 1. 安装部署DockerUI 2. 安装cpolar内网穿透 3. 配置DockerUI公网访问地址 4. 公网远程访问DockerUI 5. 固定DockerUI公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下…...

五大注入攻击网络安全类型介绍
1. SQL注入(SQL Injection) SQL注入流程 1.1. 概述 SQL注入是最常见的注入攻击类型之一,攻击者通过在输入字段中插入恶意的SQL代码来改变原本的SQL逻辑或执行额外的SQL语句,来操控数据库执行未授权的操作(如拖库、获取…...

linux-L9.linux中对文件 按照时间排序 显示100 个
find . -type f -exec stat --format %Y %n {} | sort -nr | head -n 100解释: • find . -type f:在当前目录下查找所有文件。 • -exec stat --format ‘%Y %n’ {} :对每个找到的文件执行stat命令,以获取文件的修改时间&#…...

springboot从分层到解耦
注释很详细,直接上代码 三层架构 项目结构 源码: HelloController package com.amoorzheyu.controller;import com.amoorzheyu.pojo.User; import com.amoorzheyu.service.HelloService; import com.amoorzheyu.service.impl.HelloServiceA; import o…...

网络视频流解码显示后花屏问题的分析
问题描述 rtp打包的ps视频流发送到客户端后显示花屏。 数据分析过程 1、用tcpdump抓包 tcpdump -i eth0 -vnn -w rtp.pcap 2、用wireshark提取rtp的payload 保存为record.h264文件 3、用vlc播放器播放 显示花屏 4、提取关键帧 用xxd命令将h264文件转为txt文件 xxd -p…...
MySQL 大量 IN 的查询优化
背景 (1)MySQL 8.0 版本 (2)业务中遇到大量 IN 的查询,例: SELECT id, username, icon FROM users WHERE id IN (123, 523, 1343, ...);其中 id 为主键,IN 的列表长度有 8000 多个 问题 …...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...
多元隐函数 偏导公式
我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式,给定一个隐函数关系: F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 🧠 目标: 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z、 …...
Docker、Wsl 打包迁移环境
电脑需要开启wsl2 可以使用wsl -v 查看当前的版本 wsl -v WSL 版本: 2.2.4.0 内核版本: 5.15.153.1-2 WSLg 版本: 1.0.61 MSRDC 版本: 1.2.5326 Direct3D 版本: 1.611.1-81528511 DXCore 版本: 10.0.2609…...

OPENCV图形计算面积、弧长API讲解(1)
一.OPENCV图形面积、弧长计算的API介绍 之前我们已经把图形轮廓的检测、画框等功能讲解了一遍。那今天我们主要结合轮廓检测的API去计算图形的面积,这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能,常用的API…...