在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 多个 问题 …...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...