xlwings和xlcalculator与MS Excel插件的集成
项目描述
FlyingKoala
FlyingKoala简化了在MS Excel中定义定量和定性模型、情景分析和某些系统集成任务的过程,同时减少了执行这些任务所需的计算机代码量,并提高了计算速度。结果是,拥有良好Excel技能的人可以在需要代码知识的人员之前完成更多工作。FlyingKoala还简化了财务、技术和数学建模的沟通,因为表达式可以大量使用Excel公式来表达。
从技术角度来看,FlyingKoala 是一系列针对 xlwings 的辅助函数集合。这些辅助函数可以访问以下内容:
由于存在额外的依赖项,这些服务已被放置在其自己的库中。
在很大程度上,FlyingKoala 在数据分析方面的优势实际上来自于对 Excel 现有功能的巧妙使用以及 xlwings 的强大之处。FlyingKoala 提供了一些预先编写的 Python UDF,这些函数特别有助于超越 Excel 的常规限制。
特别是,添加 Koala 功能显著提高了数学计算的速度,从而增加了处理比 Excel 通常能处理的数据集更大的数据集的机会,并能够更快地迭代场景。
将 Pandas 中的各种内容包装起来,在时间序列数据分析方面也是一个巨大的努力。
问题空间
- 当所有内容都编码在代码中时,审计变得困难。
- 无法进行公式的单元测试
- 现有模型异常复杂,并且广泛使用 Excel 公式 - 传统上,所有这些都需要在模型在其他任何计算机语言中变得有用之前重新编写(加上关键人物风险)。
- 当模型以代码表达时,公司无法轻松传达模型(例如;数学、技术和财务)的细微差别。
- 管理人员和领域专家不一定能够编写足够的代码来确保(例如;数学、技术和财务)模型已被正确翻译。
- 使用有趣的数据集(大型或时间序列)进行数据分析很困难。当数据集变得有趣时,Excel 可能会加剧这种情况。
- 数据迁移通常需要特别熟练的程序员,即使操作在技术上并不困难,也需要对他们进行知识领域的培训。
- 不是每个人都将学习编码,也不应该期望他们这样做。
- 人们通常在 MS Excel 方面很熟练,但并不一定在足够的编码语言方面。
- 情景分析通常需要大量开销,并且可能难以管理。
- 具有强大编码背景的数据分析师会尽一切可能使用 Pandas 来表达事物。
- 不擅长编码的数据分析师可以使用 Excel 做出令人难以置信的事情,但可能会造成性能问题和关键人物风险。
FlyingKoala 的功能
- 提供使用 Excel 或 Python 作为计算引擎来单元测试 Excel 公式的功能。
- 优雅地将 xlwings、Koala2、Pandas 以及许多其他库的优点结合起来,同时不会干扰其他功能。
- 提供用于数学方程式、外部应用程序 API、Python 模块和数据库连接的预先制作的用户定义函数。
- 管理模型的缓存(例如;数学、技术、财务等...),减少加载时间,并利用 Koala2 功能,其中方程式可以在除活动工作簿之外的任何工作簿中工作。
FlyingKoala 的好处
- 可以单元测试 Excel 公式
- 促进和鼓励领域专家定义他们的领域语言,然后使用这种新语言作为定义模型、方程式和数据相关操作的依据,该语言既可以被计算机高效处理,也可以被其他人轻松理解。
- 由于更多的人知道如何阅读和更改 Excel 公式,审计变得更容易。
- 为 Excel 用户提供了通常需要编码才能完全访问的计算效率。
- 使现有 Excel 定义模型的零散迁移成为可能。例如;在提高计算效率之前,无需重写整个宏库。
- 有可能减少现有复杂 Excel 基于模型的关键人物风险
- 显著减少程序员在模型开发中的参与需求;
- 缩短模型周转时间;
- 最小化翻译错误;
- 让程序员专注于编码领域;
- 提高程序员编写的代码重用率(通常一个UDF是一个行业内的定义)。
- 整个数学或技术模型都可以供管理人员阅读,因为它是一个Excel公式。
- 显著提高了公司内部和公司之间的计算沟通;
- 各方不再需要技能均等的程序员;
- 更多领域专家可以轻松阅读公式。
- 使Excel中的大数据计算更快。
- 可以快速定义和评估多个数学模型。非常适合情景分析。
- 扩展xlwings,使其更强大;
- 在不写太多Python代码的情况下将Excel公式应用于数据集(在FlyingKoala UDF的情况下,如果有)
- 数据分析
- 预先包装一些Pandas经典操作
- 建模
- 财务
- 数学
- 技术
- 通过Web请求(REST)高效评估Excel公式计算,以便隐藏触发计算的领域专家的方程定义(例如;专有计算不离开现场)
- 系统集成,其中过程是;
- 临时的
- 定期的,需要人工审核数据
- 数据库连接使访问更容易
- 通过预定义的UDF,更容易访问常用Python库(Pandas、PVLib、Harvest)的功能
readthedocs
示例
这些是使用提供的UDF与FlyingKoala一起使用的代码示例。有关如何利用Koala2 Excel公式读取的示例,请阅读在线文档中的示例工作示例。该示例使用园艺库来展示将Koala2与xlwings UDF功能结合使用时的优势。
园艺库
有一个园艺相关UDF库,有助于计算生长度日。开始使用Excel用户定义函数=DegreeDay()所需的Python代码量
import xlwings as xw
from flyingkoala import *
from flyingkoala.horticulture import *
如果我们需要使用预定义的UDF,这些UDF包装了Pandas resample和其他时间序列功能
import xlwings as xw
from flyingkoala import *
from flyingkoala.horticulture import *
from flyingkoala.series import *
Anaconda
由于依赖于Koala2 0.0.31,制作Anaconda包比我预期的要困难。一旦koala_xlcalcualtor成熟,制作Anaconda包将会更容易。因此,正在努力使koala_xlcalcualtor与Koala2 0.0.31的功能兼容,而不是在Anaconda中支持Koala2的旧版本。
TODO
- 更改简介文档 - 将TL;DR与README.md保持一致
- 改进插件。需要更好地处理几乎所有事情。
- 支持插件功能以卸载特定模型
- 编写一个向导,可以从Excel插件启动,该向导为FlyingKoala定义的UDF编写和更新xlwings Python "代码"(/导入)
- 编写测试
- 重构timeseries Pandas包装器
- 运行Harvest的会计代码
- 编写一个MySQL模块,其行为类似于xlwings的sql扩展
- 编写一个查询MySQL并返回动态数组作为符合工作表的函数的结果
- 编写一个与xlwings的sql扩展类似行为的PostgreSQL模块
- 编写一个查询PostgreSQL并返回动态数组作为符合工作表的函数的结果
- 编写更多展示各种FlyingKoala定义函数(RunPython和UDF)的工作示例
- 编写一个scraping-ebay模块
- 使用 pyomo 编写一个优化问题的模块。
- 设置 travis 持续集成服务。
- 改进 readthedocs 以支持正确地处理文档版本。
- 编写一个 UDF,它是 Koala 的通用用例(例如;接受可变数量的术语参数)无法完成
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。