分析高影响业务决策的工具和示例,并避免使用电子表格的许多问题

montepylib的Python项目详细描述


#使用pandas进行蒙特卡罗商业案例分析

这个包提供了一些工具和示例来分析高影响的业务决策,并避免了使用电子表格的许多问题。

##背景

熊猫正日益成为科学计算的标准工具。它是否也能在首席财务官办公室发挥作用?首席财务官经常需要分析不同项目或业务案例的影响,他们几乎普遍使用电子表格来分析。电子表格有很多优点——它们的进入门槛很低,而且大多数人都很容易理解。然而,随着它们变得越来越复杂,缺点开始出现;特别是,它们可能是不灵活的和高度容易出错的。

这里的应用程序通过“monte carlo”分析变得更加有趣和有用。传统的业务案例分析是对销售、成本和价格进行单点估计,并计算单个利润预测。每个人都知道利润不会完全等于预测。但目前尚不清楚利润的范围,也不清楚亏损的可能性有多大。“蒙特卡罗”分析通过允许假设的范围或分布来解决这个问题;然后预测是一系列结果。

有关更多背景信息,请参见[talk](http://racingtadpole.com/blog/business-case-python-pandas/)。

##包装结构

幻灯片和ipython笔记本包含在talks目录中。这篇题为“利用熊猫进行蒙特卡罗商业案例分析”的演讲,于2014年6月5日在澳大利亚pycon公司(2014年8月1日)和悉尼python集团的科学和数据小型会议上发表。这是一个介绍蒙特卡罗商业案例分析和熊猫。您可以在[racingtapole.com/blog/business case python pandas](http://racingtadpole.com/blog/business-case-python-pandas/)上找到它。幻灯片是使用html5演示引擎[shower](https://github.com/shower/shower)准备的。

montepylib目录包括:

  • io.py-简化数据输入的例程
  • manip.py-操作数据帧的例程
  • utils.py-类似于的实用程序是字符串int
  • sim.py-核心模拟程序
  • extend.py-为数据帧添加一些有用的方法

有关更多信息,包括测试模型,请参见examples目录。

##快速入门

首先安装软件包:

pip install montepylib

然后,在python中,尝试:

from pandas import Series, DataFrame import pandas as pd from montepylib.sim import Simulator

volume = DataFrame([[‘Factory A’,’Widget X’,200,30.0],[‘Factory A’,’Widget Y’,100,15.0],[‘Factory B’,’Widget X’,300,50.0]], columns=[‘factory’,’widget’,’mean’,’sd’]) costs = DataFrame([[‘Factory A’,’Widget X’,1,.2],[‘Factory A’,’Widget Y’,.6,.1],[‘Factory B’,’Widget X’,1.2,.25],[‘Factory B’,’Widget Y’,.7,.12]], columns=[‘factory’,’widget’,’mean’,’sd’]) price = DataFrame([[‘Widget X’,5,.5], [‘Widget Y’,3,.3]], columns=[‘widget’,’mean’,’sd’])

mc = Simulator() N = 5000 sim_vol = mc.sim_from_params(N, volume, ‘volume’) sim_costs = mc.sim_from_params(N, costs, ‘cost’) sim_price = mc.sim_from_params(N, price, ‘price’)

sim = mc.merge(sim_vol, sim_costs, sim_price, how=’left’) sim[‘margin’] = sim[‘price’] - sim[‘cost’] sim[‘profit’] = sim[‘volume’] * sim[‘margin’]

sim_factory = sim.groupby([‘factory’, ‘iteration’]).sum()[[‘profit’,’volume’]] total_per_iteration = sim_factory.groupby(level=’iteration’).sum() total_per_iteration.hist(xrot=90);

summary_per_factory = sim_factory.groupby(level=’factory’).describe().unstack(level=0) summary_per_factory # profit volume # factory Factory A Factory B Factory A Factory B # count 5000.000000 5000.000000 5000.000000 5000.000000 # mean 1041.392873 1142.445923 299.692542 300.461622 # std 167.320088 255.161823 33.146621 50.388224 # min 411.263495 370.741291 150.234686 127.378759 # 25% 929.578744 965.513249 277.282007 266.361845 # 50% 1032.065933 1129.047618 299.882982 300.278990 # 75% 1148.330681 1308.399140 321.756739 334.676815 # max 1808.573213 2167.622599 420.227083 478.421165

对于基本情况,使用n=0

N = 0 # include the same code as above to calculate sim_factory sim_factory # profit volume # factory iteration # Factory A base case 1040 300 # Factory B base case 1140 300

对于灵敏度分析,使用n=-1

N = -1 # include the same code as above to calculate total_per_iteration total_per_iteration # profit volume # iteration # base case 2180 600 # high cost 2055 600 # high price 2460 600 # high volume 2526 695 # low cost 2305 600 # low price 1900 600 # low volume 1834 505

有关更详细的示例,包括测试模型,请参见examples目录。

##其他实现

熊猫不是唯一的办法。对于另一种方法,我还探索了使用r-see[this post](http://racingtadpole.com/blog/monte-carlo-cashflow-modelling-in-r/)来获取一些示例,并参阅robert d.brown,2013年出版的书[“使用r进行业务案例分析”(http://leanpub.com/bizanalysiswithr)。或者如果你想从模拟中解放出来,直接处理数学分布,你甚至可以使用[mathematica](http://www.wolfram.com/mathematica/)….

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
文件加密和解密在Java中,无法进行解密   Java生成字符串的所有可能排列   在eclipse中运行项目时,java服务器无法启动   java Kafka spring侦听器标头上的spring验证   java最终版本和内存泄漏   多线程如何在Java游戏开发中暂停和恢复线程   可以在中使用类。ser java文件可在之后编辑。ser文件创建?   java输入流关闭(OpenJ9_11.0.8.10 debian x64上的fatjar/überjar)   java如何知道是否按下了2个按钮?JavaFX   java无法使用控制器外部的DAO查询数据库   在java中,如何将数组的一部分作为函数参数传递?   java比较图形值或结构   从Recyclerview适配器中的BaseFragment访问java arraylist,无需复制代码   无法验证在Go中创建的Java DSA签名,反之亦然   Java Swing应用程序消息对话框帮助   java匹配和提取字符串中的数据   eclipse为Java创建编译脚本   ArrayIndexOutofBoundException Java Android接收流式数据并存储在多维数组Java中   java JUnit5向后兼容JUnit4吗?