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

在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 作为广泛应用的关系型数据库管理系统&#xff0c;创建数据库和表具有至关重要的意义。 在数据存储方面&#xff0c;数据库就如同一个巨大的仓库&#xff0c;为各类数据提供了安全、有序的存储环境。通过创建数据库&#xff0c;可以将相…...

大数据-126 - Flink State 03篇 状态原理和原理剖析:状态存储 Part1

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

RFID射频模块(MFRC522 STM32)

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

【JavaSE】--方法的使用

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

wireshark打开时空白|没有接口,卸载重装可以解决

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

单值二叉树--(C语言)

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

Linux云计算 |【第三阶段】PROJECT1-DAY2

主要内容&#xff1a; 网站架构演变、LNPMariadb数据库分离、Web服务器集群&#xff08;部署Nginx后端web服务器、部署NFS共享存储服务器、部署Haproxy代理服务器、部署DNS域名解析服务器&#xff09; 一、网站架构演变&#xff1a; 随着网站访问量和业务复杂度的增加&#x…...

Claude Prompt 汉语新解

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

【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(2)

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

怎么看待伦敦银交易的风险与收益?

伦敦银交易的风险与收益&#xff0c;在宣传材料中&#xff0c;伦敦银是一种潜在收益很高&#xff0c;潜在风险不大的品种。然而在实践中我们发现&#xff0c;伦敦银交易好像并不如宣传材料说的那样容易做。那么&#xff0c;具体伦敦银交易的风险和收益是怎么样的&#xff1f;那…...

如何通俗易懂的解释TON的智能合约

文章目录 一、小故事一则二、Ton的智能合约在小故事中三、python代码模拟 一、小故事一则 在一个遥远的国度里&#xff0c;有一个被魔法笼罩的小镇&#xff0c;这个小镇每年都会举办一场盛大的戏剧节。这个戏剧节不仅是演员们展示才华的舞台&#xff0c;更是他们交流心得、共同…...

针对Docker容器的可视化管理工具—DockerUI

目录 ⛳️推荐 前言 1. 安装部署DockerUI 2. 安装cpolar内网穿透 3. 配置DockerUI公网访问地址 4. 公网远程访问DockerUI 5. 固定DockerUI公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下…...

五大注入攻击网络安全类型介绍

1. SQL注入&#xff08;SQL Injection&#xff09; SQL注入流程 1.1. 概述 SQL注入是最常见的注入攻击类型之一&#xff0c;攻击者通过在输入字段中插入恶意的SQL代码来改变原本的SQL逻辑或执行额外的SQL语句&#xff0c;来操控数据库执行未授权的操作&#xff08;如拖库、获取…...

linux-L9.linux中对文件 按照时间排序 显示100 个

find . -type f -exec stat --format %Y %n {} | sort -nr | head -n 100解释&#xff1a; • find . -type f&#xff1a;在当前目录下查找所有文件。 • -exec stat --format ‘%Y %n’ {} &#xff1a;对每个找到的文件执行stat命令&#xff0c;以获取文件的修改时间&#…...

springboot从分层到解耦

注释很详细&#xff0c;直接上代码 三层架构 项目结构 源码&#xff1a; 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 的查询优化

背景 &#xff08;1&#xff09;MySQL 8.0 版本 &#xff08;2&#xff09;业务中遇到大量 IN 的查询&#xff0c;例&#xff1a; SELECT id, username, icon FROM users WHERE id IN (123, 523, 1343, ...);其中 id 为主键&#xff0c;IN 的列表长度有 8000 多个 问题 …...

python运维

环境准备 安装python3环境 # centos 安装python3 yum install python3创建激活venv python3 -m venv .venv source .venv/bin/activatezookeeper pip install kazoo 递归复制目录 from kazoo.client import KazooClientdef copy_node(zk, source_path, destination_path)…...

gen_server补充基础学习

学习gen_server的回调结构 gen_server:start_link(Name, Mod, InitArgs, Opts)这个调用是所有事物的起点。它 会创建一个名为Name的通用服务器&#xff0c;回调模块是Mod&#xff0c;Opts则控制通用服务器的行为。在这里可以指定消息记录、函数调试和其他行为。通用服务器通过…...

Python 入门教程(3)基础知识 | 3.1、基础语法

文章目录 一、 基础语法1、缩进规则2、标识符3、多行语句 一、 基础语法 1、缩进规则 学习 Python 与其他语言最大的区别就是&#xff0c;Python 的代码块不使用大括号 {} 来控制类&#xff0c;函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。缩进的空白数量是可…...

git 合并分支并解决冲突

git 合并分支并解决冲突 切换分支 git checkout <branch-name> 首先切换到要合并的目标分支 合并分支 git merge <source-branch> //将源分支代码合并到当前分支中&#xff0c;源分支的各项新增的提交都会按时间点插入到当前分支的提交记录中 git merge …...

《程序猿之设计模式实战 · 装饰者模式》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…...

[K8S]Forbidden: pod updates may not change fields other than

背景 在执行kubectl apply -f pod-nginx.yaml的时候报错 The Pod "nginx-test" is invalid: spec: Forbidden: pod updates may not change fields other than `spec.containers[*].image`, `spec.initContainers[*].image`, `spec.activeDeadlineSeconds`, `spec.to…...

C/C++漏洞检测数据集汇总

漏洞检测这个方向最近几年尤为热门&#xff0c;尤其是与深度学习技术相结合的研究&#xff0c;同时一些公开可用的数据集的出现也进一步推动了这些技术的发展。本篇文章总结归纳了目前在 C/C 源代码漏洞检测方向的一些公开数据集以及相关文献。 1 Devign (FFmpegQemu) 简介&am…...

springboot后端开发-常见注解及其用途

文章目录 1. 组件注解2. 依赖注入注解3. 配置类注解4. 测试注解5. 控制器注解6. 安全和认证注解7. 切面相关注解8. API文档相关注解(需引入swagger)9. 其他注解 在Spring Boot框架中&#xff0c;有许多常用的注解用来简化开发过程中的依赖注入、组件扫描、配置、安全控制等方面…...

TypeScript 扩展

扩展 ?:可选参数 可选链事实上并不是TypeScript独有的特性&#xff0c;它是ES11&#xff08;ES2020&#xff09;中增加的特性 可选链使用可选链操作符 ? 作用是当对象的属性不存在时&#xff0c;会短路&#xff0c;直接返回undefined&#xff0c;如果存在&#xff0c;那么…...

按键学院往期视频

按键学院第五期 网游实战系列课程 按键学院第四期 网游实战系列课程01-回合制网游的特点:测试游戏后台按键图色 网游实战系列课程02-神武新手任务的识别与处理:字库识别任务 网游实战系列课程03-神武自动组队与攻击 网游实战系列课程04-神武自动逛地图与攻击 网游实战系列课程0…...